summaryrefslogtreecommitdiff
path: root/Zend/zend_vm_gen.php
diff options
context:
space:
mode:
authorHaitao Lv <i@lvht.net>2018-02-12 11:20:24 +0800
committerDmitry Stogov <dmitry@zend.com>2018-02-20 10:46:41 +0300
commit764e231cc5fd400e78ee3a632273fadb8ed38bc2 (patch)
treecd7c0a1a9d1932bee44b75d9994c2ebab4238113 /Zend/zend_vm_gen.php
parentf63393aee8f3c3a8a3191064f28a4375107b30aa (diff)
downloadphp-git-764e231cc5fd400e78ee3a632273fadb8ed38bc2.tar.gz
fix ZEND_VM_SET_OPCODE_HANDLER cannot set user opcode handler
Diffstat (limited to 'Zend/zend_vm_gen.php')
-rw-r--r--Zend/zend_vm_gen.php5
1 files changed, 3 insertions, 2 deletions
diff --git a/Zend/zend_vm_gen.php b/Zend/zend_vm_gen.php
index 404121317e..aa8df9d95d 100644
--- a/Zend/zend_vm_gen.php
+++ b/Zend/zend_vm_gen.php
@@ -2646,10 +2646,11 @@ function gen_vm($def, $skel) {
// Generate zend_vm_get_opcode_handler() function
out($f, "ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler(zend_op* op)\n");
out($f, "{\n");
+ out($f, "\tzend_uchar opcode = zend_user_opcodes[op->opcode];\n");
if (!ZEND_VM_SPEC) {
- out($f, "\top->handler = zend_vm_get_opcode_handler(op->opcode, op);\n");
+ out($f, "\top->handler = zend_vm_get_opcode_handler(opcode, op);\n");
} else {
- out($f, "\tuint32_t spec = zend_spec_handlers[op->opcode];\n\n");
+ out($f, "\tuint32_t spec = zend_spec_handlers[opcode];\n\n");
out($f, "\tif (spec & SPEC_RULE_COMMUTATIVE) {\n");
out($f, "\t\tif (op->op1_type < op->op2_type) {\n");
out($f, "\t\t\tzend_swap_operands(op);\n");