@@ -1469,9 +1469,7 @@ ZEND_VM_HELPER_EX(zend_fetch_var_address_helper, CONST|TMPVAR|CV, UNUSED|CONST|V
1469
1469
zend_class_entry * ce ;
1470
1470
1471
1471
if (OP2_TYPE == IS_CONST ) {
1472
- if (OP1_TYPE == IS_CONST && EXPECTED (CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 ))))) {
1473
-
1474
- ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 )));
1472
+ if (OP1_TYPE == IS_CONST && EXPECTED ((ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 )))) != NULL )) {
1475
1473
retval = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 )) + sizeof (void * ));
1476
1474
1477
1475
/* check if static properties were destoyed */
@@ -1482,9 +1480,7 @@ ZEND_VM_HELPER_EX(zend_fetch_var_address_helper, CONST|TMPVAR|CV, UNUSED|CONST|V
1482
1480
}
1483
1481
1484
1482
ZEND_VM_C_GOTO (fetch_var_return );
1485
- } else if (EXPECTED (CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 ))))) {
1486
- ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )));
1487
- } else {
1483
+ } else if (UNEXPECTED ((ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )))) == NULL )) {
1488
1484
ce = zend_fetch_class_by_name (Z_STR_P (EX_CONSTANT (opline -> op2 )), EX_CONSTANT (opline -> op2 ) + 1 , ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION );
1489
1485
if (UNEXPECTED (ce == NULL )) {
1490
1486
if (OP1_TYPE != IS_CONST ) {
@@ -2830,12 +2826,13 @@ ZEND_VM_HANDLER(109, ZEND_FETCH_CLASS, ANY, CONST|TMPVAR|UNUSED|CV)
2830
2826
2831
2827
ZEND_VM_C_LABEL (try_class_name ):
2832
2828
if (OP2_TYPE == IS_CONST ) {
2833
- if ( EXPECTED ( CACHED_PTR (Z_CACHE_SLOT_P (class_name )))) {
2834
- Z_CE_P ( EX_VAR ( opline -> result . var )) = CACHED_PTR ( Z_CACHE_SLOT_P ( class_name ));
2835
- } else {
2836
- Z_CE_P ( EX_VAR ( opline -> result . var )) = zend_fetch_class_by_name (Z_STR_P (class_name ), EX_CONSTANT (opline -> op2 ) + 1 , opline -> extended_value );
2837
- CACHE_PTR (Z_CACHE_SLOT_P (class_name ), Z_CE_P ( EX_VAR ( opline -> result . var )) );
2829
+ zend_class_entry * ce = CACHED_PTR (Z_CACHE_SLOT_P (class_name ));
2830
+
2831
+ if ( UNEXPECTED ( ce == NULL )) {
2832
+ ce = zend_fetch_class_by_name (Z_STR_P (class_name ), EX_CONSTANT (opline -> op2 ) + 1 , opline -> extended_value );
2833
+ CACHE_PTR (Z_CACHE_SLOT_P (class_name ), ce );
2838
2834
}
2835
+ Z_CE_P (EX_VAR (opline -> result .var )) = ce ;
2839
2836
} else if (Z_TYPE_P (class_name ) == IS_OBJECT ) {
2840
2837
Z_CE_P (EX_VAR (opline -> result .var )) = Z_OBJCE_P (class_name );
2841
2838
} else if (Z_TYPE_P (class_name ) == IS_STRING ) {
@@ -2992,9 +2989,8 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, CONST|VAR, CONST|TMPVAR|UNUSE
2992
2989
2993
2990
if (OP1_TYPE == IS_CONST ) {
2994
2991
/* no function found. try a static method in class */
2995
- if (EXPECTED (CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 ))))) {
2996
- ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 )));
2997
- } else {
2992
+ ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 )));
2993
+ if (UNEXPECTED (ce == NULL )) {
2998
2994
ce = zend_fetch_class_by_name (Z_STR_P (EX_CONSTANT (opline -> op1 )), EX_CONSTANT (opline -> op1 ) + 1 , ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION );
2999
2995
if (UNEXPECTED (EG (exception ) != NULL )) {
3000
2996
HANDLE_EXCEPTION ();
@@ -3011,8 +3007,8 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, CONST|VAR, CONST|TMPVAR|UNUSE
3011
3007
3012
3008
if (OP1_TYPE == IS_CONST &&
3013
3009
OP2_TYPE == IS_CONST &&
3014
- EXPECTED (CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 ))))) {
3015
- fbc = CACHED_PTR ( Z_CACHE_SLOT_P ( EX_CONSTANT ( opline -> op2 )));
3010
+ EXPECTED (( fbc = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )))) != NULL )) {
3011
+ /* nothing to do */
3016
3012
} else if (OP1_TYPE != IS_CONST &&
3017
3013
OP2_TYPE == IS_CONST &&
3018
3014
(fbc = CACHED_POLYMORPHIC_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )), ce ))) {
@@ -3121,18 +3117,17 @@ ZEND_VM_HANDLER(59, ZEND_INIT_FCALL_BY_NAME, ANY, CONST)
3121
3117
zval * function_name , * func ;
3122
3118
zend_execute_data * call ;
3123
3119
3124
- if (EXPECTED (CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 ))))) {
3125
- fbc = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )));
3126
- } else {
3120
+ fbc = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )));
3121
+ if (UNEXPECTED (fbc == NULL )) {
3127
3122
function_name = (zval * )(EX_CONSTANT (opline -> op2 )+ 1 );
3128
- if (UNEXPECTED ((func = zend_hash_find (EG (function_table ), Z_STR_P (function_name ))) == NULL )) {
3123
+ func = zend_hash_find (EG (function_table ), Z_STR_P (function_name ));
3124
+ if (UNEXPECTED (func == NULL )) {
3129
3125
SAVE_OPLINE ();
3130
3126
zend_throw_error (NULL , "Call to undefined function %s()" , Z_STRVAL_P (EX_CONSTANT (opline -> op2 )));
3131
3127
HANDLE_EXCEPTION ();
3132
- } else {
3133
- fbc = Z_FUNC_P (func );
3134
- CACHE_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )), fbc );
3135
3128
}
3129
+ fbc = Z_FUNC_P (func );
3130
+ CACHE_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )), fbc );
3136
3131
}
3137
3132
call = zend_vm_stack_push_call_frame (ZEND_CALL_NESTED_FUNCTION ,
3138
3133
fbc , opline -> extended_value , NULL , NULL );
@@ -3423,19 +3418,18 @@ ZEND_VM_HANDLER(69, ZEND_INIT_NS_FCALL_BY_NAME, ANY, CONST)
3423
3418
zend_execute_data * call ;
3424
3419
3425
3420
func_name = EX_CONSTANT (opline -> op2 ) + 1 ;
3426
- if ( EXPECTED ( CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 ))))) {
3427
- fbc = CACHED_PTR ( Z_CACHE_SLOT_P ( EX_CONSTANT ( opline -> op2 )));
3428
- } else if (( func = zend_hash_find (EG (function_table ), Z_STR_P (func_name ))) == NULL ) {
3429
- func_name ++ ;
3430
- if ( UNEXPECTED (( func = zend_hash_find ( EG ( function_table ), Z_STR_P ( func_name ))) == NULL )) {
3431
- SAVE_OPLINE ( );
3432
- zend_throw_error ( NULL , "Call to undefined function %s()" , Z_STRVAL_P ( EX_CONSTANT ( opline -> op2 )));
3433
- HANDLE_EXCEPTION ();
3434
- } else {
3435
- fbc = Z_FUNC_P ( func );
3436
- CACHE_PTR ( Z_CACHE_SLOT_P ( EX_CONSTANT ( opline -> op2 )), fbc );
3421
+ fbc = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )));
3422
+ if ( UNEXPECTED ( fbc == NULL )) {
3423
+ func = zend_hash_find (EG (function_table ), Z_STR_P (func_name ));
3424
+ if ( func == NULL ) {
3425
+ func_name ++ ;
3426
+ func = zend_hash_find ( EG ( function_table ), Z_STR_P ( func_name ) );
3427
+ if ( UNEXPECTED ( func == NULL )) {
3428
+ SAVE_OPLINE ();
3429
+ zend_throw_error ( NULL , "Call to undefined function %s()" , Z_STRVAL_P ( EX_CONSTANT ( opline -> op2 )));
3430
+ HANDLE_EXCEPTION ( );
3431
+ }
3437
3432
}
3438
- } else {
3439
3433
fbc = Z_FUNC_P (func );
3440
3434
CACHE_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )), fbc );
3441
3435
}
@@ -3457,13 +3451,14 @@ ZEND_VM_HANDLER(61, ZEND_INIT_FCALL, ANY, CONST)
3457
3451
zend_function * fbc ;
3458
3452
zend_execute_data * call ;
3459
3453
3460
- if (EXPECTED (CACHED_PTR (Z_CACHE_SLOT_P (fname )))) {
3461
- fbc = CACHED_PTR (Z_CACHE_SLOT_P (fname ));
3462
- } else if (UNEXPECTED ((func = zend_hash_find (EG (function_table ), Z_STR_P (fname ))) == NULL )) {
3463
- SAVE_OPLINE ();
3464
- zend_throw_error (NULL , "Call to undefined function %s()" , Z_STRVAL_P (fname ));
3465
- HANDLE_EXCEPTION ();
3466
- } else {
3454
+ fbc = CACHED_PTR (Z_CACHE_SLOT_P (fname ));
3455
+ if (UNEXPECTED (fbc == NULL )) {
3456
+ func = zend_hash_find (EG (function_table ), Z_STR_P (fname ));
3457
+ if (UNEXPECTED (func == NULL )) {
3458
+ SAVE_OPLINE ();
3459
+ zend_throw_error (NULL , "Call to undefined function %s()" , Z_STRVAL_P (fname ));
3460
+ HANDLE_EXCEPTION ();
3461
+ }
3467
3462
fbc = Z_FUNC_P (func );
3468
3463
CACHE_PTR (Z_CACHE_SLOT_P (fname ), fbc );
3469
3464
}
@@ -4115,9 +4110,8 @@ ZEND_VM_HANDLER(107, ZEND_CATCH, CONST, CV)
4115
4110
ZEND_VM_SET_OPCODE (& EX (func )-> op_array .opcodes [opline -> extended_value ]);
4116
4111
ZEND_VM_CONTINUE (); /* CHECK_ME */
4117
4112
}
4118
- if (EXPECTED (CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 ))))) {
4119
- catch_ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 )));
4120
- } else {
4113
+ catch_ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 )));
4114
+ if (UNEXPECTED (catch_ce == NULL )) {
4121
4115
catch_ce = zend_fetch_class_by_name (Z_STR_P (EX_CONSTANT (opline -> op1 )), EX_CONSTANT (opline -> op1 ) + 1 , ZEND_FETCH_CLASS_NO_AUTOLOAD );
4122
4116
4123
4117
CACHE_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 )), catch_ce );
@@ -4877,9 +4871,8 @@ ZEND_VM_HANDLER(68, ZEND_NEW, CONST|VAR, ANY)
4877
4871
4878
4872
SAVE_OPLINE ();
4879
4873
if (OP1_TYPE == IS_CONST ) {
4880
- if (EXPECTED (CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 ))))) {
4881
- ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 )));
4882
- } else {
4874
+ ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 )));
4875
+ if (UNEXPECTED (ce == NULL )) {
4883
4876
ce = zend_fetch_class_by_name (Z_STR_P (EX_CONSTANT (opline -> op1 )), EX_CONSTANT (opline -> op1 ) + 1 , ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION );
4884
4877
if (UNEXPECTED (ce == NULL )) {
4885
4878
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
@@ -5515,9 +5508,8 @@ ZEND_VM_HANDLER(74, ZEND_UNSET_VAR, CONST|TMPVAR|CV, UNUSED|CONST|VAR)
5515
5508
zend_class_entry * ce ;
5516
5509
5517
5510
if (OP2_TYPE == IS_CONST ) {
5518
- if (EXPECTED (CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 ))))) {
5519
- ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )));
5520
- } else {
5511
+ ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )));
5512
+ if (UNEXPECTED (ce == NULL )) {
5521
5513
ce = zend_fetch_class_by_name (Z_STR_P (EX_CONSTANT (opline -> op2 )), EX_CONSTANT (opline -> op2 ) + 1 , ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION );
5522
5514
if (UNEXPECTED (EG (exception ) != NULL )) {
5523
5515
if (OP1_TYPE != IS_CONST && Z_TYPE (tmp ) != IS_UNDEF ) {
@@ -6380,9 +6372,7 @@ ZEND_VM_HANDLER(114, ZEND_ISSET_ISEMPTY_VAR, CONST|TMPVAR|CV, UNUSED|CONST|VAR)
6380
6372
zend_class_entry * ce ;
6381
6373
6382
6374
if (OP2_TYPE == IS_CONST ) {
6383
- if (OP1_TYPE == IS_CONST && EXPECTED (CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 ))))) {
6384
-
6385
- ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 )));
6375
+ if (OP1_TYPE == IS_CONST && EXPECTED ((ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 )))) != NULL )) {
6386
6376
value = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op1 )) + sizeof (void * ));
6387
6377
6388
6378
/* check if static properties were destoyed */
@@ -6391,9 +6381,7 @@ ZEND_VM_HANDLER(114, ZEND_ISSET_ISEMPTY_VAR, CONST|TMPVAR|CV, UNUSED|CONST|VAR)
6391
6381
}
6392
6382
6393
6383
ZEND_VM_C_GOTO (is_var_return );
6394
- } else if (EXPECTED (CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 ))))) {
6395
- ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )));
6396
- } else {
6384
+ } else if (UNEXPECTED ((ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )))) == NULL )) {
6397
6385
ce = zend_fetch_class_by_name (Z_STR_P (EX_CONSTANT (opline -> op2 )), EX_CONSTANT (opline -> op2 ) + 1 , ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION );
6398
6386
if (UNEXPECTED (ce == NULL )) {
6399
6387
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
@@ -6959,9 +6947,8 @@ ZEND_VM_C_LABEL(try_instanceof):
6959
6947
zend_class_entry * ce ;
6960
6948
6961
6949
if (OP2_TYPE == IS_CONST ) {
6962
- if (EXPECTED (CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 ))))) {
6963
- ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )));
6964
- } else {
6950
+ ce = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )));
6951
+ if (UNEXPECTED (ce == NULL )) {
6965
6952
ce = zend_fetch_class_by_name (Z_STR_P (EX_CONSTANT (opline -> op2 )), EX_CONSTANT (opline -> op2 ) + 1 , ZEND_FETCH_CLASS_NO_AUTOLOAD );
6966
6953
if (UNEXPECTED (ce == NULL )) {
6967
6954
ZVAL_FALSE (EX_VAR (opline -> result .var ));
@@ -7010,9 +6997,8 @@ ZEND_VM_HANDLER(144, ZEND_ADD_INTERFACE, ANY, CONST)
7010
6997
zend_class_entry * iface ;
7011
6998
7012
6999
SAVE_OPLINE ();
7013
- if (EXPECTED (CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 ))))) {
7014
- iface = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )));
7015
- } else {
7000
+ iface = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )));
7001
+ if (UNEXPECTED (iface == NULL )) {
7016
7002
iface = zend_fetch_class_by_name (Z_STR_P (EX_CONSTANT (opline -> op2 )), EX_CONSTANT (opline -> op2 ) + 1 , ZEND_FETCH_CLASS_INTERFACE );
7017
7003
if (UNEXPECTED (iface == NULL )) {
7018
7004
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
@@ -7035,9 +7021,8 @@ ZEND_VM_HANDLER(154, ZEND_ADD_TRAIT, ANY, ANY)
7035
7021
zend_class_entry * trait ;
7036
7022
7037
7023
SAVE_OPLINE ();
7038
- if (EXPECTED (CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 ))))) {
7039
- trait = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )));
7040
- } else {
7024
+ trait = CACHED_PTR (Z_CACHE_SLOT_P (EX_CONSTANT (opline -> op2 )));
7025
+ if (UNEXPECTED (trait == NULL )) {
7041
7026
trait = zend_fetch_class_by_name (Z_STR_P (EX_CONSTANT (opline -> op2 )),
7042
7027
EX_CONSTANT (opline -> op2 ) + 1 ,
7043
7028
ZEND_FETCH_CLASS_TRAIT );
0 commit comments