@@ -2335,11 +2335,6 @@ static int zend_jit(const zend_op_array *op_array, zend_ssa *ssa, const zend_op
2335
2335
case ZEND_FETCH_OBJ_R :
2336
2336
case ZEND_FETCH_OBJ_IS :
2337
2337
case ZEND_FETCH_OBJ_W :
2338
- if (opline -> op2_type != IS_CONST
2339
- || Z_TYPE_P (RT_CONSTANT (opline , opline -> op2 )) != IS_STRING
2340
- || Z_STRVAL_P (RT_CONSTANT (opline , opline -> op2 ))[0 ] == '\0' ) {
2341
- break ;
2342
- }
2343
2338
ce = NULL ;
2344
2339
ce_is_instanceof = 0 ;
2345
2340
on_this = 0 ;
@@ -2369,6 +2364,11 @@ static int zend_jit(const zend_op_array *op_array, zend_ssa *ssa, const zend_op
2369
2364
}
2370
2365
}
2371
2366
}
2367
+ if (opline -> op2_type != IS_CONST
2368
+ || Z_TYPE_P (RT_CONSTANT (opline , opline -> op2 )) != IS_STRING
2369
+ || Z_STRVAL_P (RT_CONSTANT (opline , opline -> op2 ))[0 ] == '\0' ) {
2370
+ break ;
2371
+ }
2372
2372
if (!zend_jit_fetch_obj (& ctx , opline , op_array , ssa , ssa_op ,
2373
2373
op1_info , op1_addr , 0 , ce , ce_is_instanceof , on_this , 0 , 0 , NULL ,
2374
2374
RES_REG_ADDR (), IS_UNKNOWN ,
@@ -2716,15 +2716,25 @@ static int zend_jit(const zend_op_array *op_array, zend_ssa *ssa, const zend_op
2716
2716
goto jit_failure ;
2717
2717
}
2718
2718
2719
- /* If a simple hook is called, exit to the VM. */
2720
- ir_ref if_hook_enter = ir_IF (jit_CMP_IP (jit , IR_EQ , opline + 1 ));
2721
- ir_IF_FALSE (if_hook_enter );
2722
- if (GCC_GLOBAL_REGS ) {
2723
- ir_TAILCALL (IR_VOID , ir_LOAD_A (jit_IP (jit )));
2724
- } else {
2725
- ir_RETURN (ir_CONST_I32 (1 )); /* ZEND_VM_ENTER */
2719
+ if (JIT_G (opt_level ) < ZEND_JIT_LEVEL_INLINE ) {
2720
+ if (opline -> op1_type == IS_UNUSED ) {
2721
+ ce = op_array -> scope ;
2722
+ } else {
2723
+ ce = NULL ;
2724
+ }
2725
+ }
2726
+
2727
+ if (!ce || !(ce -> ce_flags & ZEND_ACC_FINAL ) || ce -> num_hooked_props > 0 ) {
2728
+ /* If a simple hook is called, exit to the VM. */
2729
+ ir_ref if_hook_enter = ir_IF (jit_CMP_IP (jit , IR_EQ , opline + 1 ));
2730
+ ir_IF_FALSE (if_hook_enter );
2731
+ if (GCC_GLOBAL_REGS ) {
2732
+ ir_TAILCALL (IR_VOID , ir_LOAD_A (jit_IP (jit )));
2733
+ } else {
2734
+ ir_RETURN (ir_CONST_I32 (1 )); /* ZEND_VM_ENTER */
2735
+ }
2736
+ ir_IF_TRUE (if_hook_enter );
2726
2737
}
2727
- ir_IF_TRUE (if_hook_enter );
2728
2738
2729
2739
break ;
2730
2740
default :
0 commit comments