|
|
|
@ -3374,6 +3374,36 @@ static int ZEND_FASTCALL ZEND_FETCH_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HAN |
|
|
|
return zend_fetch_var_address_helper_SPEC_CONST_CONST(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); |
|
|
|
} |
|
|
|
|
|
|
|
static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
{ |
|
|
|
USE_OPLINE |
|
|
|
|
|
|
|
zval **container; |
|
|
|
|
|
|
|
SAVE_OPLINE(); |
|
|
|
|
|
|
|
if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && |
|
|
|
IS_CONST != IS_CV && |
|
|
|
EX_T(opline->op1.var).var.ptr_ptr) { |
|
|
|
PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); |
|
|
|
} |
|
|
|
|
|
|
|
if (IS_CONST == IS_TMP_VAR || IS_CONST == IS_CONST) { |
|
|
|
zval *container = opline->op1.zv; |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
container = NULL; |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
|
|
|
|
static int ZEND_FASTCALL ZEND_FETCH_DIM_TMP_VAR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
{ |
|
|
|
USE_OPLINE |
|
|
|
@ -4200,6 +4230,36 @@ static int ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDL |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
|
|
|
|
static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
{ |
|
|
|
USE_OPLINE |
|
|
|
zend_free_op free_op2; |
|
|
|
zval **container; |
|
|
|
|
|
|
|
SAVE_OPLINE(); |
|
|
|
|
|
|
|
if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && |
|
|
|
IS_CONST != IS_CV && |
|
|
|
EX_T(opline->op1.var).var.ptr_ptr) { |
|
|
|
PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); |
|
|
|
} |
|
|
|
|
|
|
|
if (IS_CONST == IS_TMP_VAR || IS_CONST == IS_CONST) { |
|
|
|
zval *container = opline->op1.zv; |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
zval_dtor(free_op2.var); |
|
|
|
|
|
|
|
} else { |
|
|
|
container = NULL; |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
zval_dtor(free_op2.var); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
|
|
|
|
static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
{ |
|
|
|
USE_OPLINE |
|
|
|
@ -4874,6 +4934,36 @@ static int ZEND_FASTCALL ZEND_FETCH_IS_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDL |
|
|
|
return zend_fetch_var_address_helper_SPEC_CONST_VAR(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); |
|
|
|
} |
|
|
|
|
|
|
|
static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
{ |
|
|
|
USE_OPLINE |
|
|
|
zend_free_op free_op2; |
|
|
|
zval **container; |
|
|
|
|
|
|
|
SAVE_OPLINE(); |
|
|
|
|
|
|
|
if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && |
|
|
|
IS_CONST != IS_CV && |
|
|
|
EX_T(opline->op1.var).var.ptr_ptr) { |
|
|
|
PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); |
|
|
|
} |
|
|
|
|
|
|
|
if (IS_CONST == IS_TMP_VAR || IS_CONST == IS_CONST) { |
|
|
|
zval *container = opline->op1.zv; |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; |
|
|
|
|
|
|
|
} else { |
|
|
|
container = NULL; |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
|
|
|
|
static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
{ |
|
|
|
USE_OPLINE |
|
|
|
@ -6104,6 +6194,36 @@ static int ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLE |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
|
|
|
|
static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
{ |
|
|
|
USE_OPLINE |
|
|
|
|
|
|
|
zval **container; |
|
|
|
|
|
|
|
SAVE_OPLINE(); |
|
|
|
|
|
|
|
if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && |
|
|
|
IS_CONST != IS_CV && |
|
|
|
EX_T(opline->op1.var).var.ptr_ptr) { |
|
|
|
PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); |
|
|
|
} |
|
|
|
|
|
|
|
if (IS_CONST == IS_TMP_VAR || IS_CONST == IS_CONST) { |
|
|
|
zval *container = opline->op1.zv; |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
container = NULL; |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
|
|
|
|
static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
{ |
|
|
|
USE_OPLINE |
|
|
|
@ -7840,6 +7960,36 @@ static int ZEND_FASTCALL ZEND_FETCH_IS_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDL |
|
|
|
return zend_fetch_var_address_helper_SPEC_TMP_CONST(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); |
|
|
|
} |
|
|
|
|
|
|
|
static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
{ |
|
|
|
USE_OPLINE |
|
|
|
zend_free_op free_op1; |
|
|
|
zval **container; |
|
|
|
|
|
|
|
SAVE_OPLINE(); |
|
|
|
|
|
|
|
if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && |
|
|
|
IS_TMP_VAR != IS_CV && |
|
|
|
EX_T(opline->op1.var).var.ptr_ptr) { |
|
|
|
PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); |
|
|
|
} |
|
|
|
|
|
|
|
if (IS_TMP_VAR == IS_TMP_VAR || IS_TMP_VAR == IS_CONST) { |
|
|
|
zval *container = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
zval_dtor(free_op1.var); |
|
|
|
} else { |
|
|
|
container = NULL; |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
|
|
|
|
static int ZEND_FASTCALL ZEND_FETCH_DIM_TMP_VAR_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
{ |
|
|
|
USE_OPLINE |
|
|
|
@ -8534,6 +8684,36 @@ static int ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
|
|
|
|
static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
{ |
|
|
|
USE_OPLINE |
|
|
|
zend_free_op free_op1, free_op2; |
|
|
|
zval **container; |
|
|
|
|
|
|
|
SAVE_OPLINE(); |
|
|
|
|
|
|
|
if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && |
|
|
|
IS_TMP_VAR != IS_CV && |
|
|
|
EX_T(opline->op1.var).var.ptr_ptr) { |
|
|
|
PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); |
|
|
|
} |
|
|
|
|
|
|
|
if (IS_TMP_VAR == IS_TMP_VAR || IS_TMP_VAR == IS_CONST) { |
|
|
|
zval *container = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
zval_dtor(free_op2.var); |
|
|
|
zval_dtor(free_op1.var); |
|
|
|
} else { |
|
|
|
container = NULL; |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
zval_dtor(free_op2.var); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
|
|
|
|
static int ZEND_FASTCALL ZEND_ADD_VAR_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
{ |
|
|
|
USE_OPLINE |
|
|
|
@ -9208,6 +9388,36 @@ static int ZEND_FASTCALL ZEND_FETCH_IS_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER |
|
|
|
return zend_fetch_var_address_helper_SPEC_TMP_VAR(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); |
|
|
|
} |
|
|
|
|
|
|
|
static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
{ |
|
|
|
USE_OPLINE |
|
|
|
zend_free_op free_op1, free_op2; |
|
|
|
zval **container; |
|
|
|
|
|
|
|
SAVE_OPLINE(); |
|
|
|
|
|
|
|
if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && |
|
|
|
IS_TMP_VAR != IS_CV && |
|
|
|
EX_T(opline->op1.var).var.ptr_ptr) { |
|
|
|
PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); |
|
|
|
} |
|
|
|
|
|
|
|
if (IS_TMP_VAR == IS_TMP_VAR || IS_TMP_VAR == IS_CONST) { |
|
|
|
zval *container = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; |
|
|
|
zval_dtor(free_op1.var); |
|
|
|
} else { |
|
|
|
container = NULL; |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
|
|
|
|
static int ZEND_FASTCALL ZEND_ADD_VAR_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
{ |
|
|
|
USE_OPLINE |
|
|
|
@ -10304,6 +10514,36 @@ static int ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
|
|
|
|
static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
{ |
|
|
|
USE_OPLINE |
|
|
|
zend_free_op free_op1; |
|
|
|
zval **container; |
|
|
|
|
|
|
|
SAVE_OPLINE(); |
|
|
|
|
|
|
|
if ((opline->extended_value & ZEND_FETCH_ADD_LOCK) && |
|
|
|
IS_TMP_VAR != IS_CV && |
|
|
|
EX_T(opline->op1.var).var.ptr_ptr) { |
|
|
|
PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); |
|
|
|
} |
|
|
|
|
|
|
|
if (IS_TMP_VAR == IS_TMP_VAR || IS_TMP_VAR == IS_CONST) { |
|
|
|
zval *container = _get_zval_ptr_tmp(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
zval_dtor(free_op1.var); |
|
|
|
} else { |
|
|
|
container = NULL; |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
|
|
|
|
static int ZEND_FASTCALL ZEND_ADD_VAR_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
{ |
|
|
|
USE_OPLINE |
|
|
|
@ -12858,10 +13098,19 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HA |
|
|
|
EX_T(opline->op1.var).var.ptr_ptr) { |
|
|
|
PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); |
|
|
|
} |
|
|
|
container = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; |
|
|
|
if (IS_VAR == IS_TMP_VAR || IS_VAR == IS_CONST) { |
|
|
|
zval *container = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; |
|
|
|
} else { |
|
|
|
container = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; |
|
|
|
} |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
@ -15025,10 +15274,19 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAND |
|
|
|
EX_T(opline->op1.var).var.ptr_ptr) { |
|
|
|
PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); |
|
|
|
} |
|
|
|
container = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
zval_dtor(free_op2.var); |
|
|
|
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; |
|
|
|
|
|
|
|
if (IS_VAR == IS_TMP_VAR || IS_VAR == IS_CONST) { |
|
|
|
zval *container = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
zval_dtor(free_op2.var); |
|
|
|
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; |
|
|
|
} else { |
|
|
|
container = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
zval_dtor(free_op2.var); |
|
|
|
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; |
|
|
|
} |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
@ -17106,10 +17364,19 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAND |
|
|
|
EX_T(opline->op1.var).var.ptr_ptr) { |
|
|
|
PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); |
|
|
|
} |
|
|
|
container = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; |
|
|
|
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; |
|
|
|
|
|
|
|
if (IS_VAR == IS_TMP_VAR || IS_VAR == IS_CONST) { |
|
|
|
zval *container = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; |
|
|
|
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; |
|
|
|
} else { |
|
|
|
container = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; |
|
|
|
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; |
|
|
|
} |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
@ -20222,10 +20489,19 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDL |
|
|
|
EX_T(opline->op1.var).var.ptr_ptr) { |
|
|
|
PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); |
|
|
|
} |
|
|
|
container = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; |
|
|
|
if (IS_VAR == IS_TMP_VAR || IS_VAR == IS_CONST) { |
|
|
|
zval *container = _get_zval_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; |
|
|
|
} else { |
|
|
|
container = _get_zval_ptr_ptr_var(opline->op1.var, EX_Ts(), &free_op1 TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; |
|
|
|
} |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
@ -28655,10 +28931,19 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAN |
|
|
|
EX_T(opline->op1.var).var.ptr_ptr) { |
|
|
|
PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); |
|
|
|
} |
|
|
|
container = _get_zval_ptr_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
if (IS_CV == IS_TMP_VAR || IS_CV == IS_CONST) { |
|
|
|
zval *container = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
container = _get_zval_ptr_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
@ -30601,9 +30886,18 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDL |
|
|
|
EX_T(opline->op1.var).var.ptr_ptr) { |
|
|
|
PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); |
|
|
|
} |
|
|
|
container = _get_zval_ptr_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
zval_dtor(free_op2.var); |
|
|
|
|
|
|
|
if (IS_CV == IS_TMP_VAR || IS_CV == IS_CONST) { |
|
|
|
zval *container = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
zval_dtor(free_op2.var); |
|
|
|
|
|
|
|
} else { |
|
|
|
container = _get_zval_ptr_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
zval_dtor(free_op2.var); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
@ -32553,9 +32847,18 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDL |
|
|
|
EX_T(opline->op1.var).var.ptr_ptr) { |
|
|
|
PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); |
|
|
|
} |
|
|
|
container = _get_zval_ptr_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; |
|
|
|
|
|
|
|
if (IS_CV == IS_TMP_VAR || IS_CV == IS_CONST) { |
|
|
|
zval *container = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; |
|
|
|
|
|
|
|
} else { |
|
|
|
container = _get_zval_ptr_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_R TSRMLS_CC); |
|
|
|
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
@ -35400,9 +35703,18 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLE |
|
|
|
EX_T(opline->op1.var).var.ptr_ptr) { |
|
|
|
PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); |
|
|
|
} |
|
|
|
container = _get_zval_ptr_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
if (IS_CV == IS_TMP_VAR || IS_CV == IS_CONST) { |
|
|
|
zval *container = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), &container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
container = _get_zval_ptr_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); |
|
|
|
zend_fetch_dimension_address_read(&EX_T(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_R TSRMLS_CC); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
@ -38520,16 +38832,16 @@ void zend_init_opcodes_handlers(void) |
|
|
|
ZEND_FETCH_R_SPEC_CV_VAR_HANDLER, |
|
|
|
ZEND_FETCH_R_SPEC_CV_UNUSED_HANDLER, |
|
|
|
ZEND_NULL_HANDLER, |
|
|
|
ZEND_FETCH_DIM_R_SPEC_CONST_CONST_HANDLER, |
|
|
|
ZEND_FETCH_DIM_R_SPEC_CONST_TMP_HANDLER, |
|
|
|
ZEND_FETCH_DIM_R_SPEC_CONST_VAR_HANDLER, |
|
|
|
ZEND_NULL_HANDLER, |
|
|
|
ZEND_FETCH_DIM_R_SPEC_CONST_CV_HANDLER, |
|
|
|
ZEND_FETCH_DIM_R_SPEC_TMP_CONST_HANDLER, |
|
|
|
ZEND_FETCH_DIM_R_SPEC_TMP_TMP_HANDLER, |
|
|
|
ZEND_FETCH_DIM_R_SPEC_TMP_VAR_HANDLER, |
|
|
|
ZEND_NULL_HANDLER, |
|
|
|
ZEND_NULL_HANDLER, |
|
|
|
ZEND_NULL_HANDLER, |
|
|
|
ZEND_NULL_HANDLER, |
|
|
|
ZEND_NULL_HANDLER, |
|
|
|
ZEND_NULL_HANDLER, |
|
|
|
ZEND_NULL_HANDLER, |
|
|
|
ZEND_NULL_HANDLER, |
|
|
|
ZEND_NULL_HANDLER, |
|
|
|
ZEND_FETCH_DIM_R_SPEC_TMP_CV_HANDLER, |
|
|
|
ZEND_FETCH_DIM_R_SPEC_VAR_CONST_HANDLER, |
|
|
|
ZEND_FETCH_DIM_R_SPEC_VAR_TMP_HANDLER, |
|
|
|
ZEND_FETCH_DIM_R_SPEC_VAR_VAR_HANDLER, |
|
|
|
|