File tree Expand file tree Collapse file tree 1 file changed +10
-0
lines changed Expand file tree Collapse file tree 1 file changed +10
-0
lines changed Original file line number Diff line number Diff line change @@ -3371,9 +3371,19 @@ static zend_always_inline zend_result _zend_update_type_info(
3371
3371
UPDATE_SSA_OBJ_TYPE (ce , 0 , ssa_op -> result_def );
3372
3372
} else if ((t1 & MAY_BE_CLASS ) && ssa_op -> op1_use >= 0 && ssa_var_info [ssa_op -> op1_use ].ce ) {
3373
3373
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 );
3374
+ if (!ssa_var_info [ssa_op -> result_def ].is_instanceof ) {
3375
+ ce = ssa_var_info [ssa_op -> op1_use ].ce ;
3376
+ }
3374
3377
} else {
3375
3378
UPDATE_SSA_OBJ_TYPE (NULL , 0 , ssa_op -> result_def );
3376
3379
}
3380
+ /* New objects without constructors cannot escape. */
3381
+ if (ce
3382
+ && !ce -> constructor
3383
+ && !ce -> create_object
3384
+ && ce -> default_object_handlers -> get_constructor == zend_std_get_constructor ) {
3385
+ tmp &= ~MAY_BE_RCN ;
3386
+ }
3377
3387
UPDATE_SSA_TYPE (tmp , ssa_op -> result_def );
3378
3388
break ;
3379
3389
case ZEND_CLONE :
You can’t perform that action at this time.
0 commit comments