diff options
author | Anatol Belski <ab@php.net> | 2014-11-27 15:59:43 +0100 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2014-11-27 15:59:43 +0100 |
commit | 864cd82acef03b75b994f3fd98d9b4a51a99204a (patch) | |
tree | 4edfbcc6ce5d2f6fa6da9908503119c70ad868b5 /Zend/zend_opcode.c | |
parent | 81a24f054b934ccb1be77049dd9c244283efcba7 (diff) | |
parent | 4dcc8a63715b1bb42518e9c217ea493007016932 (diff) | |
download | php-git-864cd82acef03b75b994f3fd98d9b4a51a99204a.tar.gz |
Merge remote-tracking branch 'origin/master' into native-tls
* origin/master:
updated NEWS
refactored the mbstring config.w32
Update NEWS
Fixed compilation warnings
Fixed bug #68504 --with-libmbfl configure option not present on Windows
Changed "finally" handling. Removed EX(fast_ret) and EX(delayed_exception). Allocate and use additional IS_TMP_VAR slot on VM stack instead.
the darwin specific test fails for me with the same output which is the expected for the original test I couldn't find anybody who managed to see this test passing, but I found a bunch of other reports on qa.php.net/reports and on google which do see this test failing on mac. if this change causes you to have this test failing on Mac, please drop me a mail so we can improve the current test so it passes for everybody.
#68446 is fixed
Reimplemented silence operator (@) handling on exceptions. Now each silence region is stored in op_array->brk_cont_array. On exception ZEND_HANDLE_EXCEPTION handler traverse this array and restore original EG(error_reporting) if exception occured inside a "silence" region.
remove the NEWS entries for the reverted stuff
typo fix
go back with phpdbg to the state of 5.6.3, reverting the controversial commits(remote debugging/xml protocol)
5.5.21 now
New label length test
Fix ext/filter/tests/033.phpt
Fix filter_list test
FILTER_VALIDATE_DOMAIN and RFC conformance for FILTER_VALIDATE_URL
Conflicts:
ext/mbstring/config.w32
Diffstat (limited to 'Zend/zend_opcode.c')
-rw-r--r-- | Zend/zend_opcode.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index 5902abd4c5..1bbd35f40f 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -532,12 +532,19 @@ static void zend_resolve_finally_call(zend_op_array *op_array, uint32_t op_num, (dst_num < op_array->try_catch_array[i].try_op || dst_num > op_array->try_catch_array[i].finally_end)) { /* we have a jump out of try block that needs executing finally */ + uint32_t fast_call_var; + + /* Must be ZEND_FAST_RET */ + ZEND_ASSERT(op_array->opcodes[op_array->try_catch_array[i].finally_end].opcode == ZEND_FAST_RET); + fast_call_var = op_array->opcodes[op_array->try_catch_array[i].finally_end].op1.var; /* generate a FAST_CALL to finally block */ start_op = get_next_op_number(op_array); opline = get_next_op(op_array TSRMLS_CC); opline->opcode = ZEND_FAST_CALL; + opline->result_type = IS_TMP_VAR; + opline->result.var = fast_call_var; SET_UNUSED(opline->op1); SET_UNUSED(opline->op2); zend_adjust_fast_call(op_array, start_op, @@ -550,6 +557,8 @@ static void zend_resolve_finally_call(zend_op_array *op_array, uint32_t op_num, /* generate a FAST_CALL to hole CALL_FROM_FINALLY */ opline = get_next_op(op_array TSRMLS_CC); opline->opcode = ZEND_FAST_CALL; + opline->result_type = IS_TMP_VAR; + opline->result.var = fast_call_var; SET_UNUSED(opline->op1); SET_UNUSED(opline->op2); zend_resolve_fast_call(op_array, start_op + 1, op_array->try_catch_array[i].finally_op - 2 TSRMLS_CC); @@ -569,6 +578,8 @@ static void zend_resolve_finally_call(zend_op_array *op_array, uint32_t op_num, opline = get_next_op(op_array TSRMLS_CC); opline->opcode = ZEND_FAST_CALL; + opline->result_type = IS_TMP_VAR; + opline->result.var = fast_call_var; SET_UNUSED(opline->op1); SET_UNUSED(opline->op2); opline->op1.opline_num = op_array->try_catch_array[i].finally_op; |