]> granicus.if.org Git - php/commitdiff
Fixed direct threaded executor (php zend_vm_gen.php --with-vm-kind=GOTO)
authorDmitry Stogov <dmitry@php.net>
Thu, 5 May 2011 16:02:11 +0000 (16:02 +0000)
committerDmitry Stogov <dmitry@php.net>
Thu, 5 May 2011 16:02:11 +0000 (16:02 +0000)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 9c6199345a3b8de90135a5cf322592bab7d02698..13daae19fe64cd2b3f0d313f2f6a3ae85426b16f 100644 (file)
@@ -4764,10 +4764,11 @@ ZEND_VM_HANDLER(144, ZEND_ADD_INTERFACE, ANY, CONST)
 
 ZEND_VM_HANDLER(154, ZEND_ADD_TRAIT, ANY, ANY)
 {
-       zend_op *opline = EX(opline);
+       USE_OPLINE
        zend_class_entry *ce = EX_T(opline->op1.var).class_entry;
        zend_class_entry *trait;
 
+       SAVE_OPLINE();
        if (CACHED_PTR(opline->op2.literal->cache_slot)) {
                trait = CACHED_PTR(opline->op2.literal->cache_slot);
        } else {
@@ -4793,11 +4794,12 @@ ZEND_VM_HANDLER(154, ZEND_ADD_TRAIT, ANY, ANY)
 
 ZEND_VM_HANDLER(155, ZEND_BIND_TRAITS, ANY, ANY)
 {
-       zend_op *opline = EX(opline);
+       USE_OPLINE
        zend_class_entry *ce = EX_T(opline->op1.var).class_entry;
 
+       SAVE_OPLINE();
        zend_do_bind_traits(ce TSRMLS_CC);
-
+       CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
 }
 
index 2c909be86dd11f8f1d7aecbee267df48b4fb2cb2..c990da6b6ba4cfb6ef7bcbfc500abf44baaf0a58 100644 (file)
@@ -990,10 +990,11 @@ static int ZEND_FASTCALL  ZEND_NOP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 
 static int ZEND_FASTCALL  ZEND_ADD_TRAIT_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
-       zend_op *opline = EX(opline);
+       USE_OPLINE
        zend_class_entry *ce = EX_T(opline->op1.var).class_entry;
        zend_class_entry *trait;
 
+       SAVE_OPLINE();
        if (CACHED_PTR(opline->op2.literal->cache_slot)) {
                trait = CACHED_PTR(opline->op2.literal->cache_slot);
        } else {
@@ -1019,11 +1020,12 @@ static int ZEND_FASTCALL  ZEND_ADD_TRAIT_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 
 static int ZEND_FASTCALL  ZEND_BIND_TRAITS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
-       zend_op *opline = EX(opline);
+       USE_OPLINE
        zend_class_entry *ce = EX_T(opline->op1.var).class_entry;
 
+       SAVE_OPLINE();
        zend_do_bind_traits(ce TSRMLS_CC);
-
+       CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
 }