File tree Expand file tree Collapse file tree 1 file changed +9
-0
lines changed Expand file tree Collapse file tree 1 file changed +9
-0
lines changed Original file line number Diff line number Diff line change @@ -3369,8 +3369,17 @@ static zend_always_inline zend_result _zend_update_type_info(
3369
3369
ce = zend_optimizer_get_class_entry_from_op1 (script , op_array , opline );
3370
3370
if (ce ) {
3371
3371
UPDATE_SSA_OBJ_TYPE (ce , 0 , ssa_op -> result_def );
3372
+ /* New objects without constructors cannot escape. */
3373
+ if (!ce -> constructor ) {
3374
+ tmp &= ~MAY_BE_RCN ;
3375
+ }
3372
3376
} else if ((t1 & MAY_BE_CLASS ) && ssa_op -> op1_use >= 0 && ssa_var_info [ssa_op -> op1_use ].ce ) {
3373
3377
UPDATE_SSA_OBJ_TYPE (ssa_var_info [ssa_op -> op1_use ].ce , ssa_var_info [ssa_op -> op1_use ].is_instanceof , ssa_op -> result_def );
3378
+ /* New objects without constructors cannot escape. */
3379
+ if (!ssa_var_info [ssa_op -> result_def ].is_instanceof
3380
+ && !ssa_var_info [ssa_op -> result_def ].ce -> constructor ) {
3381
+ tmp &= ~MAY_BE_RCN ;
3382
+ }
3374
3383
} else {
3375
3384
UPDATE_SSA_OBJ_TYPE (NULL , 0 , ssa_op -> result_def );
3376
3385
}
You can’t perform that action at this time.
0 commit comments