diff options
author | Dmitry Stogov <dmitry@zend.com> | 2014-04-30 11:23:19 +0400 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2014-04-30 11:23:19 +0400 |
commit | 6a911e833f6b6dcac669a60808e96dc2c4f391d3 (patch) | |
tree | ed3e1218c42c71dfea2fd3c14291582536d4662d /Zend/zend_execute_API.c | |
parent | 8a8df2ce68918d1abbc72236cf171940b00198eb (diff) | |
download | php-git-6a911e833f6b6dcac669a60808e96dc2c4f391d3.tar.gz |
Optimized JMPZNZ to avoid multiplication at runtime (may be it makes sense to use relative addresses everywere it'll lead to Position Independent Code)
Diffstat (limited to 'Zend/zend_execute_API.c')
-rw-r--r-- | Zend/zend_execute_API.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 03f763ea21..a7d7a948a5 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -1301,6 +1301,10 @@ void execute_new_code(TSRMLS_D) /* {{{ */ case ZEND_JMP: opline->op1.jmp_addr = &CG(active_op_array)->opcodes[opline->op1.opline_num]; break; + case ZEND_JMPZNZ: + /* absolute index to relative offset */ + opline->extended_value = (char*)(CG(active_op_array)->opcodes + opline->extended_value) - (char*)opline; + /* break omitted intentionally */ case ZEND_JMPZ: case ZEND_JMPNZ: case ZEND_JMPZ_EX: |