[prev in list] [next in list] [prev in thread] [next in thread]
List: php-cvs
Subject: [PHP-CVS] com php-src: Fixed repeatable opcodes on CALL VM without global registers: =?UTF-8?Q?Zend/
From: Dmitry Stogov <dmitry () php ! net>
Date: 2015-04-29 11:20:44
Message-ID: php-mail-2a0b5cd3b0cf7843a92cdb8b8fbf28e21811573143 () git ! php ! net
[Download RAW message or body]
Commit: 762a774c401a547696c536b76468d0068143d8c4
Author: Dmitry Stogov <dmitry@zend.com> Wed, 29 Apr 2015 14:20:44 +0300
Parents: 690440771abc471db1eccdf988732796b3ca8b5e
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=762a774c401a547696c536b76468d0068143d8c4
Log:
Fixed repeatable opcodes on CALL VM without global registers
Changed paths:
M Zend/zend_execute.c
M Zend/zend_vm_def.h
M Zend/zend_vm_execute.h
Diff:
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index e37eaa1..648b80c 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -2224,7 +2224,9 @@ static zend_always_inline zend_generator \
*zend_get_running_generator(zend_execut # define ZEND_VM_REPEATABLE_OPCODE \
do {
# define ZEND_VM_REPEAT_OPCODE(_opcode) \
- } while (UNEXPECTED(OPLINE->opcode == _opcode))
+ } while (UNEXPECTED((++opline)->opcode == _opcode)); \
+ OPLINE = opline; \
+ ZEND_VM_CONTINUE()
# define ZEND_VM_SMART_BRANCH(_result, _check) do { \
int __result; \
if (EXPECTED((opline+1)->opcode == ZEND_JMPZ)) { \
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index 5f26e92..900dc33 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -4660,9 +4660,8 @@ ZEND_VM_HANDLER(64, ZEND_RECV_INIT, ANY, CONST)
}
}
- ZEND_VM_INC_OPCODE();
ZEND_VM_REPEAT_OPCODE(ZEND_RECV_INIT);
- ZEND_VM_CONTINUE();
+ ZEND_VM_NEXT_OPCODE();
}
ZEND_VM_HANDLER(164, ZEND_RECV_VARIADIC, ANY, ANY)
@@ -7719,9 +7718,8 @@ ZEND_VM_C_LABEL(check_indirect):
ZVAL_REF(variable_ptr, ref);
}
- ZEND_VM_INC_OPCODE();
ZEND_VM_REPEAT_OPCODE(ZEND_BIND_GLOBAL);
- ZEND_VM_CONTINUE();
+ ZEND_VM_NEXT_OPCODE();
}
ZEND_VM_HANDLER(121, ZEND_STRLEN, CONST|TMPVAR|CV, ANY)
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 14a97a4..a5982f3 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -2254,9 +2254,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL \
ZEND_RECV_INIT_SPEC_CONST_HANDLER(Z }
}
- ZEND_VM_INC_OPCODE();
ZEND_VM_REPEAT_OPCODE(ZEND_RECV_INIT);
- ZEND_VM_CONTINUE();
+ ZEND_VM_NEXT_OPCODE();
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL \
ZEND_BRK_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -32807,9 +32806,8 @@ \
check_indirect: ZVAL_REF(variable_ptr, ref);
}
- ZEND_VM_INC_OPCODE();
ZEND_VM_REPEAT_OPCODE(ZEND_BIND_GLOBAL);
- ZEND_VM_CONTINUE();
+ ZEND_VM_NEXT_OPCODE();
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL \
ZEND_IS_IDENTICAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic