diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-06-11 13:15:03 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-06-11 13:16:38 +0200 |
commit | e4fae9c0615cd92783c226de8abcea31ed732672 (patch) | |
tree | fe947525c7c6c87661782f14e6592cf7fab74ea7 /ext | |
parent | 8f93beb06e8450126e6f78c3b650b68f390a4deb (diff) | |
parent | 8f8fcbbd397370b407dc2552c4bd6ee4ccb0e93b (diff) | |
download | php-git-e4fae9c0615cd92783c226de8abcea31ed732672.tar.gz |
Merge branch 'PHP-7.4'
Diffstat (limited to 'ext')
-rw-r--r-- | ext/opcache/Optimizer/block_pass.c | 1 | ||||
-rw-r--r-- | ext/opcache/Optimizer/compact_literals.c | 10 | ||||
-rw-r--r-- | ext/opcache/Optimizer/dfa_pass.c | 1 | ||||
-rw-r--r-- | ext/opcache/Optimizer/sccp.c | 5 | ||||
-rw-r--r-- | ext/opcache/Optimizer/zend_cfg.c | 2 | ||||
-rw-r--r-- | ext/opcache/Optimizer/zend_inference.c | 1 | ||||
-rw-r--r-- | ext/opcache/Optimizer/zend_optimizer.c | 4 | ||||
-rw-r--r-- | ext/opcache/ZendAccelerator.c | 5 | ||||
-rw-r--r-- | ext/opcache/jit/zend_jit.c | 1 | ||||
-rw-r--r-- | ext/opcache/jit/zend_jit_x86.dasc | 1 | ||||
-rw-r--r-- | ext/opcache/zend_file_cache.c | 2 | ||||
-rw-r--r-- | ext/opcache/zend_persist.c | 1 | ||||
-rw-r--r-- | ext/spl/tests/bug73423.phpt | 13 |
13 files changed, 5 insertions, 42 deletions
diff --git a/ext/opcache/Optimizer/block_pass.c b/ext/opcache/Optimizer/block_pass.c index c4580dddec..001e9d3360 100644 --- a/ext/opcache/Optimizer/block_pass.c +++ b/ext/opcache/Optimizer/block_pass.c @@ -990,7 +990,6 @@ static void assemble_code_blocks(zend_cfg *cfg, zend_op_array *op_array, zend_op } break; case ZEND_DECLARE_ANON_CLASS: - case ZEND_DECLARE_ANON_INHERITED_CLASS: case ZEND_FE_FETCH_R: case ZEND_FE_FETCH_RW: opline->extended_value = ZEND_OPLINE_TO_OFFSET(opline, new_opcodes + blocks[b->successors[0]].start); diff --git a/ext/opcache/Optimizer/compact_literals.c b/ext/opcache/Optimizer/compact_literals.c index 70d51fc832..ec80d5e553 100644 --- a/ext/opcache/Optimizer/compact_literals.c +++ b/ext/opcache/Optimizer/compact_literals.c @@ -271,17 +271,9 @@ literals_handle_static_prop: break; case ZEND_DECLARE_FUNCTION: case ZEND_DECLARE_CLASS: + case ZEND_DECLARE_CLASS_DELAYED: LITERAL_INFO(opline->op1.constant, LITERAL_VALUE, 2); break; - case ZEND_DECLARE_INHERITED_CLASS: - case ZEND_DECLARE_INHERITED_CLASS_DELAYED: - LITERAL_INFO(opline->op1.constant, LITERAL_VALUE, 2); - LITERAL_INFO(opline->op2.constant, LITERAL_VALUE, 2); - break; - case ZEND_DECLARE_ANON_INHERITED_CLASS: - LITERAL_INFO(opline->op1.constant, LITERAL_VALUE, 1); - LITERAL_INFO(opline->op2.constant, LITERAL_VALUE, 2); - break; case ZEND_ISSET_ISEMPTY_DIM_OBJ: case ZEND_ASSIGN_DIM: case ZEND_UNSET_DIM: diff --git a/ext/opcache/Optimizer/dfa_pass.c b/ext/opcache/Optimizer/dfa_pass.c index 7cffa45ddb..c9528918e3 100644 --- a/ext/opcache/Optimizer/dfa_pass.c +++ b/ext/opcache/Optimizer/dfa_pass.c @@ -608,7 +608,6 @@ static void zend_ssa_replace_control_link(zend_op_array *op_array, zend_ssa *ssa } break; case ZEND_DECLARE_ANON_CLASS: - case ZEND_DECLARE_ANON_INHERITED_CLASS: case ZEND_FE_FETCH_R: case ZEND_FE_FETCH_RW: if (ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value) == old->start) { diff --git a/ext/opcache/Optimizer/sccp.c b/ext/opcache/Optimizer/sccp.c index 1d960ab6dc..da829e2860 100644 --- a/ext/opcache/Optimizer/sccp.c +++ b/ext/opcache/Optimizer/sccp.c @@ -287,9 +287,7 @@ static zend_bool can_replace_op2( const zend_op_array *op_array, zend_op *opline, zend_ssa_op *ssa_op) { switch (opline->opcode) { /* Do not accept CONST */ - case ZEND_DECLARE_INHERITED_CLASS: - case ZEND_DECLARE_INHERITED_CLASS_DELAYED: - case ZEND_DECLARE_ANON_INHERITED_CLASS: + case ZEND_DECLARE_CLASS_DELAYED: case ZEND_BIND_LEXICAL: case ZEND_FE_FETCH_R: case ZEND_FE_FETCH_RW: @@ -1948,7 +1946,6 @@ static void sccp_mark_feasible_successors( case ZEND_ASSERT_CHECK: case ZEND_CATCH: case ZEND_DECLARE_ANON_CLASS: - case ZEND_DECLARE_ANON_INHERITED_CLASS: case ZEND_FE_FETCH_R: case ZEND_FE_FETCH_RW: scdf_mark_edge_feasible(scdf, block_num, block->successors[0]); diff --git a/ext/opcache/Optimizer/zend_cfg.c b/ext/opcache/Optimizer/zend_cfg.c index 489a3f1f7e..d956f6dfbd 100644 --- a/ext/opcache/Optimizer/zend_cfg.c +++ b/ext/opcache/Optimizer/zend_cfg.c @@ -376,7 +376,6 @@ int zend_build_cfg(zend_arena **arena, const zend_op_array *op_array, uint32_t b BB_START(i + 1); break; case ZEND_DECLARE_ANON_CLASS: - case ZEND_DECLARE_ANON_INHERITED_CLASS: case ZEND_FE_FETCH_R: case ZEND_FE_FETCH_RW: BB_START(ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value)); @@ -537,7 +536,6 @@ int zend_build_cfg(zend_arena **arena, const zend_op_array *op_array, uint32_t b } break; case ZEND_DECLARE_ANON_CLASS: - case ZEND_DECLARE_ANON_INHERITED_CLASS: case ZEND_FE_FETCH_R: case ZEND_FE_FETCH_RW: block->successors_count = 2; diff --git a/ext/opcache/Optimizer/zend_inference.c b/ext/opcache/Optimizer/zend_inference.c index f17d9e8b01..62a509dc6d 100644 --- a/ext/opcache/Optimizer/zend_inference.c +++ b/ext/opcache/Optimizer/zend_inference.c @@ -3164,7 +3164,6 @@ static int zend_update_type_info(const zend_op_array *op_array, break; } case ZEND_DECLARE_ANON_CLASS: - case ZEND_DECLARE_ANON_INHERITED_CLASS: UPDATE_SSA_TYPE(MAY_BE_CLASS, ssa_ops[i].result_def); if (script && (ce = zend_hash_find_ptr(&script->class_table, Z_STR_P(CRT_CONSTANT_EX(op_array, opline, opline->op1, ssa->rt_constants)))) != NULL) { UPDATE_SSA_OBJ_TYPE(ce, 0, ssa_ops[i].result_def); diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c index 8b75ec7d49..1ed57ce3d8 100644 --- a/ext/opcache/Optimizer/zend_optimizer.c +++ b/ext/opcache/Optimizer/zend_optimizer.c @@ -773,7 +773,6 @@ void zend_optimizer_migrate_jump(zend_op_array *op_array, zend_op *new_opline, z ZEND_SET_OP_JMP_ADDR(new_opline, new_opline->op2, ZEND_OP2_JMP_ADDR(opline)); break; case ZEND_DECLARE_ANON_CLASS: - case ZEND_DECLARE_ANON_INHERITED_CLASS: case ZEND_FE_FETCH_R: case ZEND_FE_FETCH_RW: new_opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, new_opline, ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value)); @@ -824,7 +823,6 @@ void zend_optimizer_shift_jump(zend_op_array *op_array, zend_op *opline, uint32_ } break; case ZEND_DECLARE_ANON_CLASS: - case ZEND_DECLARE_ANON_INHERITED_CLASS: case ZEND_FE_FETCH_R: case ZEND_FE_FETCH_RW: opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value) - shiftlist[ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value)]); @@ -1206,7 +1204,6 @@ static void zend_redo_pass_two(zend_op_array *op_array) } break; case ZEND_DECLARE_ANON_CLASS: - case ZEND_DECLARE_ANON_INHERITED_CLASS: case ZEND_FE_FETCH_R: case ZEND_FE_FETCH_RW: case ZEND_SWITCH_LONG: @@ -1295,7 +1292,6 @@ static void zend_redo_pass_two_ex(zend_op_array *op_array, zend_ssa *ssa) } break; case ZEND_DECLARE_ANON_CLASS: - case ZEND_DECLARE_ANON_INHERITED_CLASS: case ZEND_FE_FETCH_R: case ZEND_FE_FETCH_RW: case ZEND_SWITCH_LONG: diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c index e90f91c2dc..1dd862fc3b 100644 --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -3623,7 +3623,7 @@ static void preload_link(void) } else { CG(zend_lineno) = ce->info.user.line_start; } - zend_do_link_class(ce, parent); + zend_do_link_class(ce); CG(in_compilation) = 0; CG(compiled_filename) = NULL; @@ -3726,8 +3726,7 @@ static void preload_link(void) while (opline != end) { switch (opline->opcode) { case ZEND_DECLARE_CLASS: - case ZEND_DECLARE_INHERITED_CLASS: - case ZEND_DECLARE_INHERITED_CLASS_DELAYED: + case ZEND_DECLARE_CLASS_DELAYED: key = Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1); if (!zend_hash_exists(&script->script.class_table, key)) { MAKE_NOP(opline); diff --git a/ext/opcache/jit/zend_jit.c b/ext/opcache/jit/zend_jit.c index c6849cd3ac..4b94f967bb 100644 --- a/ext/opcache/jit/zend_jit.c +++ b/ext/opcache/jit/zend_jit.c @@ -2510,7 +2510,6 @@ static int zend_jit(zend_op_array *op_array, zend_ssa *ssa, const zend_op *rt_op case ZEND_FE_FETCH_R: case ZEND_FE_FETCH_RW: case ZEND_DECLARE_ANON_CLASS: - case ZEND_DECLARE_ANON_INHERITED_CLASS: if (!zend_jit_handler(&dasm_state, opline, zend_may_throw(opline, op_array, ssa)) || !zend_jit_cond_jmp(&dasm_state, opline + 1, ssa->cfg.blocks[b].successors[0])) { goto jit_failure; diff --git a/ext/opcache/jit/zend_jit_x86.dasc b/ext/opcache/jit/zend_jit_x86.dasc index d74a350bf6..18bdb06e93 100644 --- a/ext/opcache/jit/zend_jit_x86.dasc +++ b/ext/opcache/jit/zend_jit_x86.dasc @@ -7156,7 +7156,6 @@ static int zend_jit_needs_call_chain(zend_call_info *call_info, uint32_t b, zend case ZEND_ASSERT_CHECK: case ZEND_CATCH: case ZEND_DECLARE_ANON_CLASS: - case ZEND_DECLARE_ANON_INHERITED_CLASS: case ZEND_FE_FETCH_R: case ZEND_FE_FETCH_RW: return 1; diff --git a/ext/opcache/zend_file_cache.c b/ext/opcache/zend_file_cache.c index f9c8fde5cc..a2fd2c4614 100644 --- a/ext/opcache/zend_file_cache.c +++ b/ext/opcache/zend_file_cache.c @@ -467,7 +467,6 @@ static void zend_file_cache_serialize_op_array(zend_op_array *op_arra } break; case ZEND_DECLARE_ANON_CLASS: - case ZEND_DECLARE_ANON_INHERITED_CLASS: case ZEND_FE_FETCH_R: case ZEND_FE_FETCH_RW: case ZEND_SWITCH_LONG: @@ -1185,7 +1184,6 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr } break; case ZEND_DECLARE_ANON_CLASS: - case ZEND_DECLARE_ANON_INHERITED_CLASS: case ZEND_FE_FETCH_R: case ZEND_FE_FETCH_RW: case ZEND_SWITCH_LONG: diff --git a/ext/opcache/zend_persist.c b/ext/opcache/zend_persist.c index 16d07e689f..f4df9a301b 100644 --- a/ext/opcache/zend_persist.c +++ b/ext/opcache/zend_persist.c @@ -454,7 +454,6 @@ static void zend_persist_op_array_ex(zend_op_array *op_array, zend_persistent_sc } break; case ZEND_DECLARE_ANON_CLASS: - case ZEND_DECLARE_ANON_INHERITED_CLASS: case ZEND_FE_FETCH_R: case ZEND_FE_FETCH_RW: case ZEND_SWITCH_LONG: diff --git a/ext/spl/tests/bug73423.phpt b/ext/spl/tests/bug73423.phpt index 965b63318e..177da624be 100644 --- a/ext/spl/tests/bug73423.phpt +++ b/ext/spl/tests/bug73423.phpt @@ -68,15 +68,4 @@ foreach (new \RecursiveIteratorIterator (new fooIterator ($foo)) as $bar) ; ?> --EXPECTF-- -Fatal error: Uncaught Error: Class 'NotExists' not found in %sbug73423.php(%d) : eval()'d code:1 -Stack trace: -#0 %sbug73423.php(%d): eval() -#1 %sbug73423.php(%d): fooIterator->__destruct() -#2 {main} - -Next Error: Class 'NotExists' not found in %sbug73423.php(%d) : eval()'d code:1 -Stack trace: -#0 %sbug73423.php(%d): eval() -#1 %sbug73423.php(%d): fooIterator->__destruct() -#2 {main} - thrown in %sbug73423.php(%d) : eval()'d code on line 1 +Fatal error: Class 'NotExists' not found in %s(%d) : eval()'d code on line 1 |