ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
-static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CONST_CONST(int type ZEND_OPCODE_HANDLER_ARGS_DC)
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_static_prop_helper_SPEC_CONST_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
- USE_OPLINE
+ /* This helper actually never will receive IS_VAR as second op, and has the same handling for VAR and TMP in the first op, but for interoperability with the other binary_assign_op helpers, it is necessary to "include" it */
- zval *varname;
- zval *retval;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
SAVE_OPLINE();
- do {
- if (IS_CONST == IS_CONST) {
- if (IS_CONST == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- } else {
- zval *class_name = RT_CONSTANT(opline, opline->op2);
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, &prop_info, (opline+1)->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
+ ZEND_ASSERT(EG(exception));
+ UNDEF_RESULT();
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ HANDLE_EXCEPTION();
+ }
- if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
- retval = NULL;
- break;
- }
- if (IS_CONST != IS_CONST) {
- CACHE_PTR(opline->extended_value, ce);
- }
- }
- }
- } else {
- if (IS_CONST == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
+ if (UNEXPECTED(Z_ISREF_P(prop))) {
+ ref = Z_REF_P(prop);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ prop = Z_REFVAL_P(prop);
+ }
- retval = NULL;
- break;
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if (IS_CONST == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- }
- }
+ if (UNEXPECTED(prop_info->type || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
- varname = RT_CONSTANT(opline, opline->op1);
- if (IS_CONST == IS_CONST) {
- name = Z_STR_P(varname);
- } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
- name = Z_STR_P(varname);
- tmp_name = NULL;
+ binary_op(&z_copy, prop, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(prop);
+ ZVAL_COPY_VALUE(prop, &z_copy);
} else {
- if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
- zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
- }
- name = zval_get_tmp_string(varname, &tmp_name);
+ zval_ptr_dtor(&z_copy);
}
+ } else {
+ binary_op(prop, prop, value);
+ }
- retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
- if (IS_CONST != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
+ FREE_OP(free_op_data);
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
- if (IS_CONST == IS_CONST && EXPECTED(retval)) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
- }
+static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CONST_CONST_STATIC_PROP(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+#if 1 && (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CONST_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CONST == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CONST_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
- } while (0);
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CONST_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#else
+# if 0 || IS_CONST != IS_UNUSED
+# if 0
+ /* opline->extended_value checks are specialized, don't need opline */
+ USE_OPLINE
+# endif
+
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CONST_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CONST_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# if 0 || IS_CONST == IS_CONST || IS_CONST == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CONST_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
+# endif
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CONST_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#endif
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_CONST_STATIC_PROP(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_CONST_STATIC_PROP(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_CONST_STATIC_PROP(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_CONST_STATIC_PROP(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_CONST_STATIC_PROP(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
- if (UNEXPECTED(retval == NULL)) {
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_CONST_STATIC_PROP(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_CONST_STATIC_PROP(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_CONST_STATIC_PROP(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_CONST_STATIC_PROP(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_CONST_STATIC_PROP(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_CONST_STATIC_PROP(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_CONST_STATIC_PROP(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_static_property_helper_SPEC_CONST_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+ zend_property_info *prop_info;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ zend_pre_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
+
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_CONST_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_CONST_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_static_property_helper_SPEC_CONST_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+ zend_property_info *prop_info;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ zend_post_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
+
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_STATIC_PROP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_CONST_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_CONST_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CONST_CONST(int type ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+
+ SAVE_OPLINE();
+
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, NULL, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS, type, opline->extended_value & ZEND_FETCH_OBJ_FLAGS OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
if (EG(exception)) {
ZVAL_UNDEF(EX_VAR(opline->result.var));
HANDLE_EXCEPTION();
} else {
ZEND_ASSERT(type == BP_VAR_IS);
- retval = &EG(uninitialized_zval);
+ prop = &EG(uninitialized_zval);
}
}
if (type == BP_VAR_R || type == BP_VAR_IS) {
- ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
+ ZVAL_COPY_DEREF(EX_VAR(opline->result.var), prop);
} else {
- ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ ZVAL_INDIRECT(EX_VAR(opline->result.var), prop);
}
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
zval *retval;
if (IS_CONST == IS_CONST) {
- cache_slot = CACHE_ADDR(opline->extended_value);
+ cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
-
ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else {
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = RT_CONSTANT((opline+1), (opline+1)->op1);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value_ptr;
+ zend_property_info *prop_info;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value_ptr = get_zval_ptr_ptr((opline+1)->op1_type, (opline+1)->op1, &free_op_data, BP_VAR_W);
+
+ if ((opline+1)->op1_type == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ prop = &EG(uninitialized_zval);
+ } else if ((opline+1)->op1_type == IS_VAR && (opline->extended_value & ZEND_RETURNS_FUNCTION) && UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(prop, value_ptr, IS_CONST OPLINE_CC EXECUTE_DATA_CC))) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ if (UNEXPECTED(prop_info->type)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+ if (UNEXPECTED(Z_REFCOUNTED_P(prop)) && Z_ISREF_P(prop)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+ }
+ }
+ zend_assign_to_variable_reference(prop, value_ptr);
+ if (prop_info->type) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
zval *value;
int result;
- zval *varname;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
-
SAVE_OPLINE();
- if (IS_CONST == IS_CONST) {
- if (IS_CONST == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- } else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- if (IS_CONST != IS_CONST) {
- CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
- }
- }
- } else {
- if (IS_CONST == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if (IS_CONST == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
-
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- }
- }
-
- varname = RT_CONSTANT(opline, opline->op1);
- if (IS_CONST == IS_CONST) {
- name = Z_STR_P(varname);
- } else {
- name = zval_get_tmp_string(varname, &tmp_name);
- }
+ result = zend_fetch_static_property_address(&value, NULL, opline->extended_value & ~ZEND_ISEMPTY, BP_VAR_IS, 0 OPLINE_CC EXECUTE_DATA_CC);
- value = zend_std_get_static_property(ce, name, 1);
-
- if (IS_CONST == IS_CONST && value) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
- }
-
- if (IS_CONST != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
-
-is_static_prop_return:
if (!(opline->extended_value & ZEND_ISEMPTY)) {
- result = value && Z_TYPE_P(value) > IS_NULL &&
+ result = result == SUCCESS && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else {
- result = !value || !i_zend_is_true(value);
+ result = result != SUCCESS || !i_zend_is_true(value);
}
ZEND_VM_SMART_BRANCH(result, 1);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_static_prop_helper_SPEC_CONST_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ /* This helper actually never will receive IS_VAR as second op, and has the same handling for VAR and TMP in the first op, but for interoperability with the other binary_assign_op helpers, it is necessary to "include" it */
+
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ SAVE_OPLINE();
+
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, &prop_info, (opline+1)->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
+ ZEND_ASSERT(EG(exception));
+ UNDEF_RESULT();
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ HANDLE_EXCEPTION();
+ }
+
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
+
+ if (UNEXPECTED(Z_ISREF_P(prop))) {
+ ref = Z_REF_P(prop);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ prop = Z_REFVAL_P(prop);
+ }
+
+ if (UNEXPECTED(prop_info->type || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, prop, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(prop);
+ ZVAL_COPY_VALUE(prop, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(prop, prop, value);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ FREE_OP(free_op_data);
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CONST_TMPVAR_STATIC_PROP(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+#if 1 && (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CONST_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && ((IS_TMP_VAR|IS_VAR) == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CONST_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CONST_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#else
+# if 0 || IS_CONST != IS_UNUSED
+# if 0
+ /* opline->extended_value checks are specialized, don't need opline */
+ USE_OPLINE
+# endif
+
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CONST_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CONST_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# if 0 || (IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CONST_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
+# endif
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CONST_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#endif
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_TMPVAR_STATIC_PROP(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_TMPVAR_STATIC_PROP(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_TMPVAR_STATIC_PROP(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_TMPVAR_STATIC_PROP(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_TMPVAR_STATIC_PROP(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_TMPVAR_STATIC_PROP(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_TMPVAR_STATIC_PROP(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_TMPVAR_STATIC_PROP(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_TMPVAR_STATIC_PROP(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_TMPVAR_STATIC_PROP(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_TMPVAR_STATIC_PROP(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_TMPVAR_STATIC_PROP(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
zval *retval;
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
- cache_slot = CACHE_ADDR(opline->extended_value);
+ cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
-
ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else {
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
ZEND_VM_RETURN();
}
-static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CONST_VAR(int type ZEND_OPCODE_HANDLER_ARGS_DC)
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_static_property_helper_SPEC_CONST_VAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
-
- zval *varname;
- zval *retval;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
+ zval *prop;
+ zend_property_info *prop_info;
SAVE_OPLINE();
- do {
- if (IS_VAR == IS_CONST) {
- if (IS_CONST == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- } else {
- zval *class_name = RT_CONSTANT(opline, opline->op2);
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
- if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
+ zend_pre_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
- retval = NULL;
- break;
- }
- if (IS_CONST != IS_CONST) {
- CACHE_PTR(opline->extended_value, ce);
- }
- }
- }
- } else {
- if (IS_VAR == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
- retval = NULL;
- break;
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if (IS_CONST == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- }
- }
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_CONST_VAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
- varname = RT_CONSTANT(opline, opline->op1);
- if (IS_CONST == IS_CONST) {
- name = Z_STR_P(varname);
- } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
- name = Z_STR_P(varname);
- tmp_name = NULL;
- } else {
- if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
- zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
- }
- name = zval_get_tmp_string(varname, &tmp_name);
- }
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_CONST_VAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
- retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_static_property_helper_SPEC_CONST_VAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+ zend_property_info *prop_info;
- if (IS_CONST != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
+ SAVE_OPLINE();
- if (IS_CONST == IS_CONST && EXPECTED(retval)) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
- }
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
- } while (0);
+ zend_post_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
+
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_CONST_VAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_CONST_VAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CONST_VAR(int type ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+
+ SAVE_OPLINE();
- if (UNEXPECTED(retval == NULL)) {
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, NULL, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS, type, opline->extended_value & ZEND_FETCH_OBJ_FLAGS OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
if (EG(exception)) {
ZVAL_UNDEF(EX_VAR(opline->result.var));
HANDLE_EXCEPTION();
} else {
ZEND_ASSERT(type == BP_VAR_IS);
- retval = &EG(uninitialized_zval);
+ prop = &EG(uninitialized_zval);
}
}
if (type == BP_VAR_R || type == BP_VAR_IS) {
- ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
+ ZVAL_COPY_DEREF(EX_VAR(opline->result.var), prop);
} else {
- ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ ZVAL_INDIRECT(EX_VAR(opline->result.var), prop);
}
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_VAR(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = RT_CONSTANT((opline+1), (opline+1)->op1);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value_ptr;
+ zend_property_info *prop_info;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value_ptr = get_zval_ptr_ptr((opline+1)->op1_type, (opline+1)->op1, &free_op_data, BP_VAR_W);
+
+ if ((opline+1)->op1_type == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ prop = &EG(uninitialized_zval);
+ } else if ((opline+1)->op1_type == IS_VAR && (opline->extended_value & ZEND_RETURNS_FUNCTION) && UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(prop, value_ptr, IS_VAR OPLINE_CC EXECUTE_DATA_CC))) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ if (UNEXPECTED(prop_info->type)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+ if (UNEXPECTED(Z_REFCOUNTED_P(prop)) && Z_ISREF_P(prop)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+ }
+ }
+ zend_assign_to_variable_reference(prop, value_ptr);
+ if (prop_info->type) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
zval *value;
int result;
- zval *varname;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
-
SAVE_OPLINE();
- if (IS_VAR == IS_CONST) {
- if (IS_CONST == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- } else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- if (IS_CONST != IS_CONST) {
- CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
- }
- }
- } else {
- if (IS_VAR == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
-
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if (IS_CONST == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
-
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- }
- }
-
- varname = RT_CONSTANT(opline, opline->op1);
- if (IS_CONST == IS_CONST) {
- name = Z_STR_P(varname);
- } else {
- name = zval_get_tmp_string(varname, &tmp_name);
- }
- value = zend_std_get_static_property(ce, name, 1);
+ result = zend_fetch_static_property_address(&value, NULL, opline->extended_value & ~ZEND_ISEMPTY, BP_VAR_IS, 0 OPLINE_CC EXECUTE_DATA_CC);
- if (IS_CONST == IS_CONST && value) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
- }
-
- if (IS_CONST != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
-
-is_static_prop_return:
if (!(opline->extended_value & ZEND_ISEMPTY)) {
- result = value && Z_TYPE_P(value) > IS_NULL &&
+ result = result == SUCCESS && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else {
- result = !value || !i_zend_is_true(value);
+ result = result != SUCCESS || !i_zend_is_true(value);
}
ZEND_VM_SMART_BRANCH(result, 1);
ZEND_VM_RETURN();
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_static_prop_helper_SPEC_CONST_UNUSED(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ /* This helper actually never will receive IS_VAR as second op, and has the same handling for VAR and TMP in the first op, but for interoperability with the other binary_assign_op helpers, it is necessary to "include" it */
+
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ SAVE_OPLINE();
+
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, &prop_info, (opline+1)->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
+ ZEND_ASSERT(EG(exception));
+ UNDEF_RESULT();
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ HANDLE_EXCEPTION();
+ }
+
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
+
+ if (UNEXPECTED(Z_ISREF_P(prop))) {
+ ref = Z_REF_P(prop);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ prop = Z_REFVAL_P(prop);
+ }
+
+ if (UNEXPECTED(prop_info->type || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, prop, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(prop);
+ ZVAL_COPY_VALUE(prop, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(prop, prop, value);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ FREE_OP(free_op_data);
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CONST_UNUSED_STATIC_PROP(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+#if 1 && (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CONST_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_UNUSED == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CONST_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CONST_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#else
+# if 0 || IS_CONST != IS_UNUSED
+# if 0
+ /* opline->extended_value checks are specialized, don't need opline */
+ USE_OPLINE
+# endif
+
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CONST_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CONST_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# if 0 || IS_UNUSED == IS_CONST || IS_UNUSED == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CONST_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
+# endif
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CONST_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#endif
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_UNUSED_STATIC_PROP(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_UNUSED_STATIC_PROP(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_UNUSED_STATIC_PROP(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_UNUSED_STATIC_PROP(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_UNUSED_STATIC_PROP(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_UNUSED_STATIC_PROP(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_UNUSED_STATIC_PROP(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_UNUSED_STATIC_PROP(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_UNUSED_STATIC_PROP(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_UNUSED_STATIC_PROP(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_UNUSED_STATIC_PROP(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CONST_UNUSED_STATIC_PROP(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_static_property_helper_SPEC_CONST_UNUSED(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+ zend_property_info *prop_info;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ zend_pre_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
+
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_CONST_UNUSED(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_CONST_UNUSED(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_static_property_helper_SPEC_CONST_UNUSED(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+ zend_property_info *prop_info;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ zend_post_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
+
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_CONST_UNUSED(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_CONST_UNUSED(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CONST_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
-
- zval *varname;
- zval *retval;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
+ zval *prop;
SAVE_OPLINE();
- do {
- if (IS_UNUSED == IS_CONST) {
- if (IS_CONST == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- } else {
- zval *class_name = RT_CONSTANT(opline, opline->op2);
-
- if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
-
- retval = NULL;
- break;
- }
- if (IS_CONST != IS_CONST) {
- CACHE_PTR(opline->extended_value, ce);
- }
- }
- }
- } else {
- if (IS_UNUSED == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
-
- retval = NULL;
- break;
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if (IS_CONST == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- }
- }
-
- varname = RT_CONSTANT(opline, opline->op1);
- if (IS_CONST == IS_CONST) {
- name = Z_STR_P(varname);
- } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
- name = Z_STR_P(varname);
- tmp_name = NULL;
- } else {
- if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
- zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
- }
- name = zval_get_tmp_string(varname, &tmp_name);
- }
-
- retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
-
- if (IS_CONST != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
-
- if (IS_CONST == IS_CONST && EXPECTED(retval)) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
- }
-
- } while (0);
-
- if (UNEXPECTED(retval == NULL)) {
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, NULL, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS, type, opline->extended_value & ZEND_FETCH_OBJ_FLAGS OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
if (EG(exception)) {
ZVAL_UNDEF(EX_VAR(opline->result.var));
HANDLE_EXCEPTION();
} else {
ZEND_ASSERT(type == BP_VAR_IS);
- retval = &EG(uninitialized_zval);
+ prop = &EG(uninitialized_zval);
}
}
if (type == BP_VAR_R || type == BP_VAR_IS) {
- ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
+ ZVAL_COPY_DEREF(EX_VAR(opline->result.var), prop);
} else {
- ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ ZVAL_INDIRECT(EX_VAR(opline->result.var), prop);
}
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
}
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = RT_CONSTANT((opline+1), (opline+1)->op1);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value_ptr;
+ zend_property_info *prop_info;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value_ptr = get_zval_ptr_ptr((opline+1)->op1_type, (opline+1)->op1, &free_op_data, BP_VAR_W);
+
+ if ((opline+1)->op1_type == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ prop = &EG(uninitialized_zval);
+ } else if ((opline+1)->op1_type == IS_VAR && (opline->extended_value & ZEND_RETURNS_FUNCTION) && UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(prop, value_ptr, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC))) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ if (UNEXPECTED(prop_info->type)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+ if (UNEXPECTED(Z_REFCOUNTED_P(prop)) && Z_ISREF_P(prop)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+ }
+ }
+ zend_assign_to_variable_reference(prop, value_ptr);
+ if (prop_info->type) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
zval *value;
int result;
- zval *varname;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
-
SAVE_OPLINE();
- if (IS_UNUSED == IS_CONST) {
- if (IS_CONST == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- } else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- if (IS_CONST != IS_CONST) {
- CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
- }
- }
- } else {
- if (IS_UNUSED == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
-
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if (IS_CONST == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
-
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- }
- }
-
- varname = RT_CONSTANT(opline, opline->op1);
- if (IS_CONST == IS_CONST) {
- name = Z_STR_P(varname);
- } else {
- name = zval_get_tmp_string(varname, &tmp_name);
- }
-
- value = zend_std_get_static_property(ce, name, 1);
- if (IS_CONST == IS_CONST && value) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
- }
+ result = zend_fetch_static_property_address(&value, NULL, opline->extended_value & ~ZEND_ISEMPTY, BP_VAR_IS, 0 OPLINE_CC EXECUTE_DATA_CC);
- if (IS_CONST != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
-
-is_static_prop_return:
if (!(opline->extended_value & ZEND_ISEMPTY)) {
- result = value && Z_TYPE_P(value) > IS_NULL &&
+ result = result == SUCCESS && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else {
- result = !value || !i_zend_is_true(value);
+ result = result != SUCCESS || !i_zend_is_true(value);
}
ZEND_VM_SMART_BRANCH(result, 1);
zval *retval;
if (IS_CV == IS_CONST) {
- cache_slot = CACHE_ADDR(opline->extended_value);
+ cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
-
ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else {
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
-static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_TMPVAR_CONST(int type ZEND_OPCODE_HANDLER_ARGS_DC)
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_static_property_helper_SPEC_TMPVAR_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
- zend_free_op free_op1;
- zval *varname;
- zval *retval;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
+ zval *prop;
+ zend_property_info *prop_info;
SAVE_OPLINE();
- do {
- if (IS_CONST == IS_CONST) {
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- } else {
- zval *class_name = RT_CONSTANT(opline, opline->op2);
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
- if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- retval = NULL;
- break;
- }
- if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
- CACHE_PTR(opline->extended_value, ce);
- }
- }
- }
- } else {
- if (IS_CONST == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- retval = NULL;
- break;
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- }
- }
+ zend_pre_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
- varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
- name = Z_STR_P(varname);
- } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
- name = Z_STR_P(varname);
- tmp_name = NULL;
- } else {
- if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
- zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
- }
- name = zval_get_tmp_string(varname, &tmp_name);
- }
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
- retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_TMPVAR_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
- if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_TMPVAR_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED(retval)) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
- }
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_static_property_helper_SPEC_TMPVAR_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+ zend_property_info *prop_info;
- zval_ptr_dtor_nogc(free_op1);
- } while (0);
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ zend_post_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
+
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_TMPVAR_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_TMPVAR_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_TMPVAR_CONST(int type ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+
+ SAVE_OPLINE();
- if (UNEXPECTED(retval == NULL)) {
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, NULL, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS, type, opline->extended_value & ZEND_FETCH_OBJ_FLAGS OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
if (EG(exception)) {
ZVAL_UNDEF(EX_VAR(opline->result.var));
HANDLE_EXCEPTION();
} else {
ZEND_ASSERT(type == BP_VAR_IS);
- retval = &EG(uninitialized_zval);
+ prop = &EG(uninitialized_zval);
}
}
if (type == BP_VAR_R || type == BP_VAR_IS) {
- ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
+ ZVAL_COPY_DEREF(EX_VAR(opline->result.var), prop);
} else {
- ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ ZVAL_INDIRECT(EX_VAR(opline->result.var), prop);
}
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
zval *retval;
if (IS_CONST == IS_CONST) {
- cache_slot = CACHE_ADDR(opline->extended_value);
+ cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = RT_CONSTANT((opline+1), (opline+1)->op1);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value_ptr;
+ zend_property_info *prop_info;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value_ptr = get_zval_ptr_ptr((opline+1)->op1_type, (opline+1)->op1, &free_op_data, BP_VAR_W);
+
+ if ((opline+1)->op1_type == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ prop = &EG(uninitialized_zval);
+ } else if ((opline+1)->op1_type == IS_VAR && (opline->extended_value & ZEND_RETURNS_FUNCTION) && UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(prop, value_ptr, IS_CONST OPLINE_CC EXECUTE_DATA_CC))) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ if (UNEXPECTED(prop_info->type)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+ if (UNEXPECTED(Z_REFCOUNTED_P(prop)) && Z_ISREF_P(prop)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+ }
+ }
+ zend_assign_to_variable_reference(prop, value_ptr);
+ if (prop_info->type) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
USE_OPLINE
zval *value;
int result;
- zend_free_op free_op1;
- zval *varname;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
SAVE_OPLINE();
- if (IS_CONST == IS_CONST) {
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- } else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
- CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
- }
- }
- } else {
- if (IS_CONST == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
-
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- }
- }
-
- varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
- name = Z_STR_P(varname);
- } else {
- name = zval_get_tmp_string(varname, &tmp_name);
- }
-
- value = zend_std_get_static_property(ce, name, 1);
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST && value) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
- }
+ result = zend_fetch_static_property_address(&value, NULL, opline->extended_value & ~ZEND_ISEMPTY, BP_VAR_IS, 0 OPLINE_CC EXECUTE_DATA_CC);
- if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
- zval_ptr_dtor_nogc(free_op1);
-
-is_static_prop_return:
if (!(opline->extended_value & ZEND_ISEMPTY)) {
- result = value && Z_TYPE_P(value) > IS_NULL &&
+ result = result == SUCCESS && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else {
- result = !value || !i_zend_is_true(value);
+ result = result != SUCCESS || !i_zend_is_true(value);
}
ZEND_VM_SMART_BRANCH(result, 1);
zval *retval;
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
- cache_slot = CACHE_ADDR(opline->extended_value);
+ cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
-static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(int type ZEND_OPCODE_HANDLER_ARGS_DC)
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_static_property_helper_SPEC_TMPVAR_VAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
- zend_free_op free_op1;
- zval *varname;
- zval *retval;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
+ zval *prop;
+ zend_property_info *prop_info;
SAVE_OPLINE();
- do {
- if (IS_VAR == IS_CONST) {
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- } else {
- zval *class_name = RT_CONSTANT(opline, opline->op2);
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
- if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- retval = NULL;
- break;
- }
- if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
- CACHE_PTR(opline->extended_value, ce);
- }
- }
- }
- } else {
- if (IS_VAR == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- retval = NULL;
- break;
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- }
- }
+ zend_pre_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
- varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
- name = Z_STR_P(varname);
- } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
- name = Z_STR_P(varname);
- tmp_name = NULL;
- } else {
- if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
- zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
- }
- name = zval_get_tmp_string(varname, &tmp_name);
- }
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
- retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_TMPVAR_VAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
- if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_TMPVAR_VAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED(retval)) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
- }
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_static_property_helper_SPEC_TMPVAR_VAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+ zend_property_info *prop_info;
- zval_ptr_dtor_nogc(free_op1);
- } while (0);
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ zend_post_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
+
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
- if (UNEXPECTED(retval == NULL)) {
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_TMPVAR_VAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_TMPVAR_VAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(int type ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+
+ SAVE_OPLINE();
+
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, NULL, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS, type, opline->extended_value & ZEND_FETCH_OBJ_FLAGS OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
if (EG(exception)) {
ZVAL_UNDEF(EX_VAR(opline->result.var));
HANDLE_EXCEPTION();
} else {
ZEND_ASSERT(type == BP_VAR_IS);
- retval = &EG(uninitialized_zval);
+ prop = &EG(uninitialized_zval);
}
}
if (type == BP_VAR_R || type == BP_VAR_IS) {
- ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
+ ZVAL_COPY_DEREF(EX_VAR(opline->result.var), prop);
} else {
- ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ ZVAL_INDIRECT(EX_VAR(opline->result.var), prop);
}
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = RT_CONSTANT((opline+1), (opline+1)->op1);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value_ptr;
+ zend_property_info *prop_info;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value_ptr = get_zval_ptr_ptr((opline+1)->op1_type, (opline+1)->op1, &free_op_data, BP_VAR_W);
+
+ if ((opline+1)->op1_type == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ prop = &EG(uninitialized_zval);
+ } else if ((opline+1)->op1_type == IS_VAR && (opline->extended_value & ZEND_RETURNS_FUNCTION) && UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(prop, value_ptr, IS_VAR OPLINE_CC EXECUTE_DATA_CC))) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ if (UNEXPECTED(prop_info->type)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+ if (UNEXPECTED(Z_REFCOUNTED_P(prop)) && Z_ISREF_P(prop)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+ }
+ }
+ zend_assign_to_variable_reference(prop, value_ptr);
+ if (prop_info->type) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
USE_OPLINE
zval *value;
int result;
- zend_free_op free_op1;
- zval *varname;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
SAVE_OPLINE();
- if (IS_VAR == IS_CONST) {
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- } else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
- CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
- }
- }
- } else {
- if (IS_VAR == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- }
- }
-
- varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
- name = Z_STR_P(varname);
- } else {
- name = zval_get_tmp_string(varname, &tmp_name);
- }
-
- value = zend_std_get_static_property(ce, name, 1);
-
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST && value) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
- }
-
- if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
- zval_ptr_dtor_nogc(free_op1);
+ result = zend_fetch_static_property_address(&value, NULL, opline->extended_value & ~ZEND_ISEMPTY, BP_VAR_IS, 0 OPLINE_CC EXECUTE_DATA_CC);
-is_static_prop_return:
if (!(opline->extended_value & ZEND_ISEMPTY)) {
- result = value && Z_TYPE_P(value) > IS_NULL &&
+ result = result == SUCCESS && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else {
- result = !value || !i_zend_is_true(value);
+ result = result != SUCCESS || !i_zend_is_true(value);
}
ZEND_VM_SMART_BRANCH(result, 1);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_static_property_helper_SPEC_TMPVAR_UNUSED(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+ zend_property_info *prop_info;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ zend_pre_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
+
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_TMPVAR_UNUSED(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_TMPVAR_UNUSED(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_static_property_helper_SPEC_TMPVAR_UNUSED(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+ zend_property_info *prop_info;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ zend_post_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
+
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_TMPVAR_UNUSED(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_TMPVAR_UNUSED(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_TMPVAR_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
- zend_free_op free_op1;
- zval *varname;
- zval *retval;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
+ zval *prop;
SAVE_OPLINE();
- do {
- if (IS_UNUSED == IS_CONST) {
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- } else {
- zval *class_name = RT_CONSTANT(opline, opline->op2);
-
- if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- retval = NULL;
- break;
- }
- if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
- CACHE_PTR(opline->extended_value, ce);
- }
- }
- }
- } else {
- if (IS_UNUSED == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- retval = NULL;
- break;
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- }
- }
-
- varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
- name = Z_STR_P(varname);
- } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
- name = Z_STR_P(varname);
- tmp_name = NULL;
- } else {
- if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
- zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
- }
- name = zval_get_tmp_string(varname, &tmp_name);
- }
-
- retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
-
- if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
-
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED(retval)) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
- }
-
- zval_ptr_dtor_nogc(free_op1);
- } while (0);
-
- if (UNEXPECTED(retval == NULL)) {
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, NULL, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS, type, opline->extended_value & ZEND_FETCH_OBJ_FLAGS OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
if (EG(exception)) {
ZVAL_UNDEF(EX_VAR(opline->result.var));
HANDLE_EXCEPTION();
} else {
ZEND_ASSERT(type == BP_VAR_IS);
- retval = &EG(uninitialized_zval);
+ prop = &EG(uninitialized_zval);
}
}
if (type == BP_VAR_R || type == BP_VAR_IS) {
- ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
+ ZVAL_COPY_DEREF(EX_VAR(opline->result.var), prop);
} else {
- ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ ZVAL_INDIRECT(EX_VAR(opline->result.var), prop);
}
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_UNUSED(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = RT_CONSTANT((opline+1), (opline+1)->op1);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value_ptr;
+ zend_property_info *prop_info;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value_ptr = get_zval_ptr_ptr((opline+1)->op1_type, (opline+1)->op1, &free_op_data, BP_VAR_W);
+
+ if ((opline+1)->op1_type == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ prop = &EG(uninitialized_zval);
+ } else if ((opline+1)->op1_type == IS_VAR && (opline->extended_value & ZEND_RETURNS_FUNCTION) && UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(prop, value_ptr, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC))) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ if (UNEXPECTED(prop_info->type)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+ if (UNEXPECTED(Z_REFCOUNTED_P(prop)) && Z_ISREF_P(prop)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+ }
+ }
+ zend_assign_to_variable_reference(prop, value_ptr);
+ if (prop_info->type) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
USE_OPLINE
zval *value;
int result;
- zend_free_op free_op1;
- zval *varname;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
SAVE_OPLINE();
- if (IS_UNUSED == IS_CONST) {
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- } else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
- CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
- }
- }
- } else {
- if (IS_UNUSED == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- }
- }
-
- varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
- name = Z_STR_P(varname);
- } else {
- name = zval_get_tmp_string(varname, &tmp_name);
- }
-
- value = zend_std_get_static_property(ce, name, 1);
-
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST && value) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
- }
-
- if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
- zval_ptr_dtor_nogc(free_op1);
+ result = zend_fetch_static_property_address(&value, NULL, opline->extended_value & ~ZEND_ISEMPTY, BP_VAR_IS, 0 OPLINE_CC EXECUTE_DATA_CC);
-is_static_prop_return:
if (!(opline->extended_value & ZEND_ISEMPTY)) {
- result = value && Z_TYPE_P(value) > IS_NULL &&
+ result = result == SUCCESS && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else {
- result = !value || !i_zend_is_true(value);
+ result = result != SUCCESS || !i_zend_is_true(value);
}
ZEND_VM_SMART_BRANCH(result, 1);
zval *retval;
if (IS_CV == IS_CONST) {
- cache_slot = CACHE_ADDR(opline->extended_value);
+ cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_static_prop_helper_SPEC_TMP_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ /* This helper actually never will receive IS_VAR as second op, and has the same handling for VAR and TMP in the first op, but for interoperability with the other binary_assign_op helpers, it is necessary to "include" it */
+
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ SAVE_OPLINE();
+
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, &prop_info, (opline+1)->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
+ ZEND_ASSERT(EG(exception));
+ UNDEF_RESULT();
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ HANDLE_EXCEPTION();
+ }
+
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
+
+ if (UNEXPECTED(Z_ISREF_P(prop))) {
+ ref = Z_REF_P(prop);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ prop = Z_REFVAL_P(prop);
+ }
+
+ if (UNEXPECTED(prop_info->type || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, prop, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(prop);
+ ZVAL_COPY_VALUE(prop, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(prop, prop, value);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ FREE_OP(free_op_data);
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_TMP_CONST_STATIC_PROP(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+#if 1 && (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_TMP_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CONST == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_TMP_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_TMP_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#else
+# if 0 || IS_TMP_VAR != IS_UNUSED
+# if 0
+ /* opline->extended_value checks are specialized, don't need opline */
+ USE_OPLINE
+# endif
+
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_TMP_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_TMP_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# if 0 || IS_CONST == IS_CONST || IS_CONST == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_TMP_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
+# endif
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_TMP_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#endif
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_CONST_STATIC_PROP(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_CONST_STATIC_PROP(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_CONST_STATIC_PROP(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_CONST_STATIC_PROP(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_CONST_STATIC_PROP(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_CONST_STATIC_PROP(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_CONST_STATIC_PROP(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_CONST_STATIC_PROP(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_CONST_STATIC_PROP(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_CONST_STATIC_PROP(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_CONST_STATIC_PROP(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_CONST_STATIC_PROP(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
-
ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else {
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_static_prop_helper_SPEC_TMP_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ /* This helper actually never will receive IS_VAR as second op, and has the same handling for VAR and TMP in the first op, but for interoperability with the other binary_assign_op helpers, it is necessary to "include" it */
+
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ SAVE_OPLINE();
+
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, &prop_info, (opline+1)->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
+ ZEND_ASSERT(EG(exception));
+ UNDEF_RESULT();
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ HANDLE_EXCEPTION();
+ }
+
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
+
+ if (UNEXPECTED(Z_ISREF_P(prop))) {
+ ref = Z_REF_P(prop);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ prop = Z_REFVAL_P(prop);
+ }
+
+ if (UNEXPECTED(prop_info->type || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, prop, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(prop);
+ ZVAL_COPY_VALUE(prop, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(prop, prop, value);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ FREE_OP(free_op_data);
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_TMP_TMPVAR_STATIC_PROP(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+#if 1 && (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_TMP_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && ((IS_TMP_VAR|IS_VAR) == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_TMP_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_TMP_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#else
+# if 0 || IS_TMP_VAR != IS_UNUSED
+# if 0
+ /* opline->extended_value checks are specialized, don't need opline */
+ USE_OPLINE
+# endif
+
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_TMP_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_TMP_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# if 0 || (IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_TMP_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
+# endif
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_TMP_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#endif
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_TMPVAR_STATIC_PROP(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_TMPVAR_STATIC_PROP(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_TMPVAR_STATIC_PROP(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_TMPVAR_STATIC_PROP(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_TMPVAR_STATIC_PROP(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_TMPVAR_STATIC_PROP(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_TMPVAR_STATIC_PROP(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_TMPVAR_STATIC_PROP(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_TMPVAR_STATIC_PROP(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_TMPVAR_STATIC_PROP(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_TMPVAR_STATIC_PROP(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_TMPVAR_STATIC_PROP(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
-
ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else {
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
ZEND_VM_RETURN();
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_static_prop_helper_SPEC_TMP_UNUSED(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ /* This helper actually never will receive IS_VAR as second op, and has the same handling for VAR and TMP in the first op, but for interoperability with the other binary_assign_op helpers, it is necessary to "include" it */
+
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ SAVE_OPLINE();
+
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, &prop_info, (opline+1)->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
+ ZEND_ASSERT(EG(exception));
+ UNDEF_RESULT();
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ HANDLE_EXCEPTION();
+ }
+
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
+
+ if (UNEXPECTED(Z_ISREF_P(prop))) {
+ ref = Z_REF_P(prop);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ prop = Z_REFVAL_P(prop);
+ }
+
+ if (UNEXPECTED(prop_info->type || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, prop, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(prop);
+ ZVAL_COPY_VALUE(prop, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(prop, prop, value);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ FREE_OP(free_op_data);
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_TMP_UNUSED_STATIC_PROP(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+#if 1 && (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_TMP_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_UNUSED == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_TMP_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_TMP_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#else
+# if 0 || IS_TMP_VAR != IS_UNUSED
+# if 0
+ /* opline->extended_value checks are specialized, don't need opline */
+ USE_OPLINE
+# endif
+
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_TMP_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_TMP_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# if 0 || IS_UNUSED == IS_CONST || IS_UNUSED == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_TMP_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
+# endif
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_TMP_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#endif
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_UNUSED_STATIC_PROP(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_UNUSED_STATIC_PROP(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_UNUSED_STATIC_PROP(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_UNUSED_STATIC_PROP(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_UNUSED_STATIC_PROP(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_UNUSED_STATIC_PROP(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_UNUSED_STATIC_PROP(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_UNUSED_STATIC_PROP(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_UNUSED_STATIC_PROP(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_UNUSED_STATIC_PROP(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_UNUSED_STATIC_PROP(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_TMP_UNUSED_STATIC_PROP(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
if (UNEXPECTED(ZEND_CALL_INFO(EX(call)) & ZEND_CALL_SEND_ARG_BY_REF)) {
if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
-
ZEND_VM_TAIL_CALL(ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else {
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
ZVAL_NULL(var_ptr);
ZVAL_UNDEFINED_OP1();
}
- ZVAL_DEREF(var_ptr);
- increment_function(var_ptr);
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval old;
+ ZVAL_COPY(&old, var_ptr);
+
+ increment_function(var_ptr);
+
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_DOUBLE) && Z_TYPE(old) == IS_LONG) {
+ zend_throw_incdec_ref_error(ref, 1);
+ ZVAL_COPY_VALUE(var_ptr, &old);
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ HANDLE_EXCEPTION();
+ } else if (UNEXPECTED(!zend_verify_ref_assignable_zval(ref, var_ptr, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &old);
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ HANDLE_EXCEPTION();
+ } else {
+ zval_ptr_dtor(&old);
+ }
+ } else {
+ increment_function(var_ptr);
+ }
+ } else {
+ increment_function(var_ptr);
+ }
if (UNEXPECTED(0)) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
ZVAL_NULL(var_ptr);
ZVAL_UNDEFINED_OP1();
}
- ZVAL_DEREF(var_ptr);
- increment_function(var_ptr);
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval old;
+ ZVAL_COPY(&old, var_ptr);
+
+ increment_function(var_ptr);
+
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_DOUBLE) && Z_TYPE(old) == IS_LONG) {
+ zend_throw_incdec_ref_error(ref, 1);
+ ZVAL_COPY_VALUE(var_ptr, &old);
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ HANDLE_EXCEPTION();
+ } else if (UNEXPECTED(!zend_verify_ref_assignable_zval(ref, var_ptr, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &old);
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ HANDLE_EXCEPTION();
+ } else {
+ zval_ptr_dtor(&old);
+ }
+ } else {
+ increment_function(var_ptr);
+ }
+ } else {
+ increment_function(var_ptr);
+ }
if (UNEXPECTED(1)) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
ZVAL_NULL(var_ptr);
ZVAL_UNDEFINED_OP1();
}
- ZVAL_DEREF(var_ptr);
- decrement_function(var_ptr);
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval old;
+ ZVAL_COPY(&old, var_ptr);
+
+ decrement_function(var_ptr);
+
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_DOUBLE) && Z_TYPE(old) == IS_LONG) {
+ zend_throw_incdec_ref_error(ref, 0);
+ ZVAL_COPY_VALUE(var_ptr, &old);
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ HANDLE_EXCEPTION();
+ } else if (UNEXPECTED(!zend_verify_ref_assignable_zval(ref, var_ptr, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &old);
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ HANDLE_EXCEPTION();
+ } else {
+ zval_ptr_dtor(&old);
+ }
+ } else {
+ decrement_function(var_ptr);
+ }
+ } else {
+ decrement_function(var_ptr);
+ }
if (UNEXPECTED(0)) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
ZVAL_NULL(var_ptr);
ZVAL_UNDEFINED_OP1();
}
- ZVAL_DEREF(var_ptr);
- decrement_function(var_ptr);
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval old;
+ ZVAL_COPY(&old, var_ptr);
+
+ decrement_function(var_ptr);
+
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_DOUBLE) && Z_TYPE(old) == IS_LONG) {
+ zend_throw_incdec_ref_error(ref, 0);
+ ZVAL_COPY_VALUE(var_ptr, &old);
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ HANDLE_EXCEPTION();
+ } else if (UNEXPECTED(!zend_verify_ref_assignable_zval(ref, var_ptr, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &old);
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ HANDLE_EXCEPTION();
+ } else {
+ zval_ptr_dtor(&old);
+ }
+ } else {
+ decrement_function(var_ptr);
+ }
+ } else {
+ decrement_function(var_ptr);
+ }
if (UNEXPECTED(1)) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
ZVAL_NULL(var_ptr);
ZVAL_UNDEFINED_OP1();
}
- ZVAL_DEREF(var_ptr);
- ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
- increment_function(var_ptr);
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+
+ ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
+
+ increment_function(var_ptr);
+
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_DOUBLE) && Z_TYPE_P(EX_VAR(opline->result.var)) == IS_LONG) {
+ zend_throw_incdec_ref_error(ref, 1);
+ ZVAL_COPY_VALUE(var_ptr, EX_VAR(opline->result.var));
+ } else if (UNEXPECTED(!zend_verify_ref_assignable_zval(ref, var_ptr, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, EX_VAR(opline->result.var));
+ }
+ }
+ } else {
+ ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
+
+ increment_function(var_ptr);
+ }
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
ZVAL_NULL(var_ptr);
ZVAL_UNDEFINED_OP1();
}
- ZVAL_DEREF(var_ptr);
- ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
- decrement_function(var_ptr);
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+
+ ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
+
+ decrement_function(var_ptr);
+
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_DOUBLE) && Z_TYPE_P(EX_VAR(opline->result.var)) == IS_LONG) {
+ zend_throw_incdec_ref_error(ref, 0);
+ ZVAL_COPY_VALUE(var_ptr, EX_VAR(opline->result.var));
+ } else if (UNEXPECTED(!zend_verify_ref_assignable_zval(ref, var_ptr, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, EX_VAR(opline->result.var));
+ }
+ }
+ } else {
+ ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
+
+ decrement_function(var_ptr);
+ }
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
if (EXPECTED(opline->op2_type == IS_CV)) {
zval *variable_ptr = EX_VAR(opline->op2.var);
- zend_assign_to_variable(variable_ptr, value, IS_CV);
+ zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
} else {
zval *res = EX_VAR(opline->op2.var);
zend_refcounted *gc = Z_COUNTED_P(value);
value_type = Z_TYPE_INFO_P(value);
if (EXPECTED(value_type != IS_UNDEF)
&& EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key, 0) == SUCCESS)) {
+ if ((value_type & Z_TYPE_MASK) != IS_REFERENCE) {
+ zend_property_info *prop_info =
+ zend_get_typed_property_info_for_slot(Z_OBJ_P(array), value);
+ if (UNEXPECTED(prop_info)) {
+ ZVAL_NEW_REF(value, value);
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(value), prop_info);
+ value_type = IS_REFERENCE_EX;
+ }
+ }
break;
}
} else if (EXPECTED(Z_OBJCE_P(array)->default_properties_count == 0)
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
- zend_free_op free_op1, free_op_data1;
+ zend_free_op free_op1, free_op_data;
zval *object;
zval *property;
zval *value;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
property = RT_CONSTANT(opline, opline->op2);
do {
- value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_op_object;
- }
+ goto assign_op_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
assign_op_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- ZVAL_DEREF(zptr);
+ zval *orig_zptr = zptr;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ if (UNEXPECTED(Z_ISREF_P(zptr))) {
+ ref = Z_REF_P(zptr);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ zptr = Z_REFVAL_P(zptr);
+ }
+
+ if (IS_CONST == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), orig_zptr);
+ }
+ if (UNEXPECTED(prop_info || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, zptr, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(zptr);
+ ZVAL_COPY_VALUE(zptr, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(zptr, zptr, value);
+ }
- binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
}
} else {
- zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
+ zend_assign_op_overloaded_property(object, property, cache_slot, value, binary_op OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
- FREE_OP(free_op_data1);
+ FREE_OP(free_op_data);
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
/* assign_obj has two opcodes! */
ZEND_VM_NEXT_OPCODE_EX(1, 2);
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_static_prop_helper_SPEC_VAR_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ /* This helper actually never will receive IS_VAR as second op, and has the same handling for VAR and TMP in the first op, but for interoperability with the other binary_assign_op helpers, it is necessary to "include" it */
+
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ SAVE_OPLINE();
+
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, &prop_info, (opline+1)->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
+ ZEND_ASSERT(EG(exception));
+ UNDEF_RESULT();
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ HANDLE_EXCEPTION();
+ }
+
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
+
+ if (UNEXPECTED(Z_ISREF_P(prop))) {
+ ref = Z_REF_P(prop);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ prop = Z_REFVAL_P(prop);
+ }
+
+ if (UNEXPECTED(prop_info->type || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, prop, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(prop);
+ ZVAL_COPY_VALUE(prop, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(prop, prop, value);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ FREE_OP(free_op_data);
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
if (UNEXPECTED(!var_ptr)) {
goto assign_dim_op_ret_null;
}
- ZVAL_DEREF(var_ptr);
}
value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
- binary_op(var_ptr, var_ptr, value);
+ if (IS_CONST != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval tmp;
+ binary_op(&tmp, var_ptr, value);
+ if (EXPECTED(zend_verify_ref_assignable_zval(ref, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &tmp);
+ } else {
+ zval_ptr_dtor(&tmp);
+
+ FREE_OP(free_op_data1);
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ HANDLE_EXCEPTION();
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- ZVAL_DEREF(var_ptr);
+ zend_reference *ref = NULL;
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ }
- binary_op(var_ptr, var_ptr, value);
+ if (UNEXPECTED(ref && ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval tmp;
+ binary_op(&tmp, var_ptr, value);
+
+ if (UNEXPECTED(zend_verify_ref_assignable_zval(ref, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &tmp);
+ } else {
+ zval_ptr_dtor(&tmp);
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && IS_CONST == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CONST == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_VAR != IS_UNUSED
# if 0
if (EXPECTED(0)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || IS_CONST == IS_CONST || IS_CONST == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && IS_CONST == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CONST == IS_UNUSED)
+ if (EXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_VAR != IS_UNUSED
# if 0
if (EXPECTED(1)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || IS_CONST == IS_CONST || IS_CONST == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && IS_CONST == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CONST == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#else
+# if 0 || IS_VAR != IS_UNUSED
+# if 0
+ /* opline->extended_value checks are specialized, don't need opline */
+ USE_OPLINE
+# endif
+
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# if 0 || IS_CONST == IS_CONST || IS_CONST == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
+# endif
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#endif
+}
+
+static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CONST_STATIC_PROP(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+#if 1 && (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CONST == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_VAR != IS_UNUSED
# if 0
if (EXPECTED(0)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || IS_CONST == IS_CONST || IS_CONST == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_STATIC_PROP(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_STATIC_PROP(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_STATIC_PROP(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_STATIC_PROP(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_STATIC_PROP(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_STATIC_PROP(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_STATIC_PROP(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_STATIC_PROP(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_STATIC_PROP(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_STATIC_PROP(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_STATIC_PROP(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_STATIC_PROP(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
do {
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto pre_incdec_object;
- }
+ goto pre_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
pre_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if (IS_CONST == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
-
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
- }
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+ zend_pre_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_pre_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
do {
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto post_incdec_object;
- }
+ goto post_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
post_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
ZVAL_NULL(EX_VAR(opline->result.var));
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if (IS_CONST == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+
+ zend_post_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_post_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_post_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
property = RT_CONSTANT(opline, opline->op2);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
+ zend_fetch_property_address(
+ result, container, IS_VAR, property, IS_CONST,
+ ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
+ BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC);
if (IS_VAR == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
}
property = RT_CONSTANT(opline, opline->op2);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, 1 OPLINE_CC);
if (IS_VAR == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
-
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else {
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
property = RT_CONSTANT(opline, opline->op2);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, 1 OPLINE_CC);
if (IS_VAR == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
goto exit_assign_obj;
}
assign_object:
if (IS_CONST == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CONST);
+ value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
exit_assign_obj:
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
zval_ptr_dtor_nogc(free_op_data);
goto exit_assign_obj;
}
assign_object:
if (IS_CONST == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
zval_ptr_dtor_nogc(free_op_data);
exit_assign_obj:
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
zval_ptr_dtor_nogc(free_op_data);
goto exit_assign_obj;
}
assign_object:
if (IS_CONST == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_VAR);
+ value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
zval_ptr_dtor_nogc(free_op_data);
exit_assign_obj:
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
goto exit_assign_obj;
}
assign_object:
if (IS_CONST == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CV);
+ value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
exit_assign_obj:
{
USE_OPLINE
zend_free_op free_op1;
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+ orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = RT_CONSTANT((opline+1), (opline+1)->op1);
- value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
zend_free_op free_op1;
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+ orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
zval_ptr_dtor_nogc(free_op_data);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
zend_free_op free_op1;
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+ orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_VAR, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
zval_ptr_dtor_nogc(free_op_data);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
zend_free_op free_op1;
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+ orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_CV);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
if (UNEXPECTED(0)) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
if (UNEXPECTED(1)) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1, free_op_data;
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+
+ if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = RT_CONSTANT(opline, opline->op2);
+
+ cache_addr = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_VAR, property, IS_CONST, cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_VAR == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, IS_CONST OPLINE_CC EXECUTE_DATA_CC))) {
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if (IS_CONST == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1;
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+
+ if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = RT_CONSTANT(opline, opline->op2);
+
+ cache_addr = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_VAR, property, IS_CONST, cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_cv_BP_VAR_W((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_CV == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, IS_CONST OPLINE_CC EXECUTE_DATA_CC))) {
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if (IS_CONST == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
- zend_free_op free_op1, free_op2, free_op_data1;
+ zend_free_op free_op1, free_op2, free_op_data;
zval *object;
zval *property;
zval *value;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
do {
- value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_op_object;
- }
+ goto assign_op_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
assign_op_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- ZVAL_DEREF(zptr);
+ zval *orig_zptr = zptr;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ if (UNEXPECTED(Z_ISREF_P(zptr))) {
+ ref = Z_REF_P(zptr);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ zptr = Z_REFVAL_P(zptr);
+ }
+
+ if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), orig_zptr);
+ }
+ if (UNEXPECTED(prop_info || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, zptr, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(zptr);
+ ZVAL_COPY_VALUE(zptr, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(zptr, zptr, value);
+ }
- binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
}
} else {
- zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
+ zend_assign_op_overloaded_property(object, property, cache_slot, value, binary_op OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
- FREE_OP(free_op_data1);
+ FREE_OP(free_op_data);
zval_ptr_dtor_nogc(free_op2);
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
/* assign_obj has two opcodes! */
ZEND_VM_NEXT_OPCODE_EX(1, 2);
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_static_prop_helper_SPEC_VAR_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ /* This helper actually never will receive IS_VAR as second op, and has the same handling for VAR and TMP in the first op, but for interoperability with the other binary_assign_op helpers, it is necessary to "include" it */
+
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ SAVE_OPLINE();
+
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, &prop_info, (opline+1)->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
+ ZEND_ASSERT(EG(exception));
+ UNDEF_RESULT();
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ HANDLE_EXCEPTION();
+ }
+
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
+
+ if (UNEXPECTED(Z_ISREF_P(prop))) {
+ ref = Z_REF_P(prop);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ prop = Z_REFVAL_P(prop);
+ }
+
+ if (UNEXPECTED(prop_info->type || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, prop, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(prop);
+ ZVAL_COPY_VALUE(prop, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(prop, prop, value);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ FREE_OP(free_op_data);
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
if (UNEXPECTED(!var_ptr)) {
goto assign_dim_op_ret_null;
}
- ZVAL_DEREF(var_ptr);
}
value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
- binary_op(var_ptr, var_ptr, value);
+ if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval tmp;
+ binary_op(&tmp, var_ptr, value);
+ if (EXPECTED(zend_verify_ref_assignable_zval(ref, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &tmp);
+ } else {
+ zval_ptr_dtor(&tmp);
+ zval_ptr_dtor_nogc(free_op2);
+ FREE_OP(free_op_data1);
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ HANDLE_EXCEPTION();
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- ZVAL_DEREF(var_ptr);
+ zend_reference *ref = NULL;
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ }
- binary_op(var_ptr, var_ptr, value);
+ if (UNEXPECTED(ref && ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval tmp;
+ binary_op(&tmp, var_ptr, value);
+
+ if (UNEXPECTED(zend_verify_ref_assignable_zval(ref, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &tmp);
+ } else {
+ zval_ptr_dtor(&tmp);
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && ((IS_TMP_VAR|IS_VAR) == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_VAR != IS_UNUSED
# if 0
if (EXPECTED(0)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || (IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && ((IS_TMP_VAR|IS_VAR) == IS_UNUSED)
+ if (EXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_VAR != IS_UNUSED
# if 0
if (EXPECTED(1)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || (IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && ((IS_TMP_VAR|IS_VAR) == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#else
+# if 0 || IS_VAR != IS_UNUSED
+# if 0
+ /* opline->extended_value checks are specialized, don't need opline */
+ USE_OPLINE
+# endif
+
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# if 0 || (IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
+# endif
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#endif
+}
+
+static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_STATIC_PROP(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+#if 1 && (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && ((IS_TMP_VAR|IS_VAR) == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_VAR != IS_UNUSED
# if 0
if (EXPECTED(0)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || (IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_STATIC_PROP(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_STATIC_PROP(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_STATIC_PROP(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_STATIC_PROP(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_STATIC_PROP(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_STATIC_PROP(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_STATIC_PROP(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_STATIC_PROP(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_STATIC_PROP(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_STATIC_PROP(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_STATIC_PROP(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_STATIC_PROP(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_TMPVAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
do {
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto pre_incdec_object;
- }
+ goto pre_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
pre_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
-
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
- }
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+ zend_pre_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_pre_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
do {
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto post_incdec_object;
- }
+ goto post_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
post_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
ZVAL_NULL(EX_VAR(opline->result.var));
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+
+ zend_post_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_post_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_post_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
+ zend_fetch_property_address(
+ result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR),
+ (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
+ BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC);
zval_ptr_dtor_nogc(free_op2);
if (IS_VAR == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
}
property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, 1 OPLINE_CC);
zval_ptr_dtor_nogc(free_op2);
if (IS_VAR == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
-
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else {
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, 1 OPLINE_CC);
zval_ptr_dtor_nogc(free_op2);
if (IS_VAR == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
+ goto assign_object;
+ }
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
+
+ goto exit_assign_obj;
+ }
+ }
+
+assign_object:
+ if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
+ EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
+ zend_object *zobj = Z_OBJ_P(object);
+ zval *property_val;
+
+ if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
+ property_val = OBJ_PROP(zobj, prop_offset);
+ if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ zval_ptr_dtor_nogc(free_op2);
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+fast_assign_obj:
+ value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+ goto exit_assign_obj;
+ }
+ } else {
+ if (EXPECTED(zobj->properties != NULL)) {
+ if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
+ if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
+ GC_DELREF(zobj->properties);
+ }
+ zobj->properties = zend_array_dup(zobj->properties);
+ }
+ property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
+ if (property_val) {
+ goto fast_assign_obj;
+ }
+ }
+
+ if (!zobj->ce->__set) {
+
+ if (EXPECTED(zobj->properties == NULL)) {
+ rebuild_object_properties(zobj);
+ }
+ if (IS_CONST == IS_CONST) {
+ if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
+ Z_ADDREF_P(value);
+ }
+ } else if (IS_CONST != IS_TMP_VAR) {
+ if (Z_ISREF_P(value)) {
+ if (IS_CONST == IS_VAR) {
+ zend_reference *ref = Z_REF_P(value);
+ if (GC_DELREF(ref) == 0) {
+ ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
+ efree_size(ref, sizeof(zend_reference));
+ value = &tmp;
+ } else {
+ value = Z_REFVAL_P(value);
+ Z_TRY_ADDREF_P(value);
+ }
+ } else {
+ value = Z_REFVAL_P(value);
+ Z_TRY_ADDREF_P(value);
+ }
+ } else if (IS_CONST == IS_CV) {
+ Z_TRY_ADDREF_P(value);
+ }
+ }
+ zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+ goto exit_assign_obj;
}
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ }
+ if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
+ ZVAL_DEREF(value);
+ }
+
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
+ }
+
+exit_assign_obj:
+ zval_ptr_dtor_nogc(free_op2);
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ /* assign_obj has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1, free_op2, free_op_data;
+ zval *object, *property, *value, tmp;
+
+ SAVE_OPLINE();
+ object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+
+ if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
+ value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
+ object = Z_REFVAL_P(object);
+ goto assign_object;
+ }
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
+ zval_ptr_dtor_nogc(free_op_data);
goto exit_assign_obj;
}
}
assign_object:
if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ zval_ptr_dtor_nogc(free_op2);
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CONST);
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
- }
- goto exit_assign_obj;
- }
- } else {
- if (EXPECTED(zobj->properties != NULL)) {
- if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
- if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
- GC_DELREF(zobj->properties);
- }
- zobj->properties = zend_array_dup(zobj->properties);
- }
- property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
- if (property_val) {
- goto fast_assign_obj;
- }
- }
-
- if (!zobj->ce->__set) {
-
- if (EXPECTED(zobj->properties == NULL)) {
- rebuild_object_properties(zobj);
- }
- if (IS_CONST == IS_CONST) {
- if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
- Z_ADDREF_P(value);
- }
- } else if (IS_CONST != IS_TMP_VAR) {
- if (Z_ISREF_P(value)) {
- if (IS_CONST == IS_VAR) {
- zend_reference *ref = Z_REF_P(value);
- if (GC_DELREF(ref) == 0) {
- ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
- efree_size(ref, sizeof(zend_reference));
- value = &tmp;
- } else {
- value = Z_REFVAL_P(value);
- Z_TRY_ADDREF_P(value);
- }
- } else {
- value = Z_REFVAL_P(value);
- Z_TRY_ADDREF_P(value);
- }
- } else if (IS_CONST == IS_CV) {
- Z_TRY_ADDREF_P(value);
- }
- }
- zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
- }
- goto exit_assign_obj;
- }
- }
- }
-
- if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
- ZVAL_DEREF(value);
- }
-
- Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
-
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
- }
-
-exit_assign_obj:
- zval_ptr_dtor_nogc(free_op2);
- if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
- /* assign_obj has two opcodes! */
- ZEND_VM_NEXT_OPCODE_EX(1, 2);
-}
-
-static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
- USE_OPLINE
- zend_free_op free_op1, free_op2, free_op_data;
- zval *object, *property, *value, tmp;
-
- SAVE_OPLINE();
- object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
-
- if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
- ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
- }
-
- property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
- value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-
- if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
- object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
- }
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
- zval_ptr_dtor_nogc(free_op_data);
- goto exit_assign_obj;
- }
- }
-
-assign_object:
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
- EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
- zend_object *zobj = Z_OBJ_P(object);
- zval *property_val;
-
- if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
- property_val = OBJ_PROP(zobj, prop_offset);
- if (Z_TYPE_P(property_val) != IS_UNDEF) {
-fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
zval_ptr_dtor_nogc(free_op_data);
exit_assign_obj:
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
zval_ptr_dtor_nogc(free_op_data);
goto exit_assign_obj;
}
assign_object:
if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ zval_ptr_dtor_nogc(free_op2);
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_VAR);
+ value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
zval_ptr_dtor_nogc(free_op_data);
exit_assign_obj:
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
goto exit_assign_obj;
}
assign_object:
if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ zval_ptr_dtor_nogc(free_op2);
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CV);
+ value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
exit_assign_obj:
{
USE_OPLINE
zend_free_op free_op1;
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op2, free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+ orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = RT_CONSTANT((opline+1), (opline+1)->op1);
- value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+ zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
zend_free_op free_op1;
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op2, free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+ orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
zval_ptr_dtor_nogc(free_op_data);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+ zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
zend_free_op free_op1;
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op2, free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+ orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_VAR, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
zval_ptr_dtor_nogc(free_op_data);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+ zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
zend_free_op free_op1;
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op2, free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+ orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_CV);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+ zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
ZEND_VM_NEXT_OPCODE_EX(1, 2);
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1, free_op2, free_op_data;
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+
+ if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
+
+ cache_addr = ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ zval_ptr_dtor_nogc(free_op2);
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_VAR == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC))) {
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ zval_ptr_dtor_nogc(free_op2);
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ zval_ptr_dtor_nogc(free_op2);
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ zval_ptr_dtor_nogc(free_op2);
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1, free_op2;
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+
+ if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
+
+ cache_addr = ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_cv_BP_VAR_W((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ zval_ptr_dtor_nogc(free_op2);
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_CV == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC))) {
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ zval_ptr_dtor_nogc(free_op2);
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ zval_ptr_dtor_nogc(free_op2);
+
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ zval_ptr_dtor_nogc(free_op2);
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
if (UNEXPECTED(0)) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
if (UNEXPECTED(1)) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_VAR, EX_USES_STRICT_TYPES());
if (UNEXPECTED(0)) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_VAR, EX_USES_STRICT_TYPES());
if (UNEXPECTED(1)) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (IS_VAR == IS_VAR &&
UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
- zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+ zend_throw_error(NULL, "Cannot assign by reference to an array dimension of an object");
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
UNDEF_RESULT();
ZEND_VM_RETURN();
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_static_prop_helper_SPEC_VAR_UNUSED(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ /* This helper actually never will receive IS_VAR as second op, and has the same handling for VAR and TMP in the first op, but for interoperability with the other binary_assign_op helpers, it is necessary to "include" it */
+
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ SAVE_OPLINE();
+
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, &prop_info, (opline+1)->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
+ ZEND_ASSERT(EG(exception));
+ UNDEF_RESULT();
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ HANDLE_EXCEPTION();
+ }
+
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
+
+ if (UNEXPECTED(Z_ISREF_P(prop))) {
+ ref = Z_REF_P(prop);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ prop = Z_REFVAL_P(prop);
+ }
+
+ if (UNEXPECTED(prop_info->type || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, prop, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(prop);
+ ZVAL_COPY_VALUE(prop, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(prop, prop, value);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ FREE_OP(free_op_data);
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_VAR_UNUSED(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
if (UNEXPECTED(!var_ptr)) {
goto assign_dim_op_ret_null;
}
- ZVAL_DEREF(var_ptr);
}
value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
- binary_op(var_ptr, var_ptr, value);
+ if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval tmp;
+ binary_op(&tmp, var_ptr, value);
+ if (EXPECTED(zend_verify_ref_assignable_zval(ref, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &tmp);
+ } else {
+ zval_ptr_dtor(&tmp);
+
+ FREE_OP(free_op_data1);
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ HANDLE_EXCEPTION();
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && IS_UNUSED == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_UNUSED == IS_UNUSED)
+ if (EXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_VAR != IS_UNUSED
# if 0
if (EXPECTED(1)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || IS_UNUSED == IS_CONST || IS_UNUSED == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
+# endif
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#endif
+}
+
+static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_UNUSED_STATIC_PROP(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+#if 1 && (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_UNUSED == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#else
+# if 0 || IS_VAR != IS_UNUSED
+# if 0
+ /* opline->extended_value checks are specialized, don't need opline */
+ USE_OPLINE
+# endif
+
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# if 0 || IS_UNUSED == IS_CONST || IS_UNUSED == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_STATIC_PROP(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_STATIC_PROP(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_STATIC_PROP(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_STATIC_PROP(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_STATIC_PROP(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_STATIC_PROP(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_STATIC_PROP(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_STATIC_PROP(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_STATIC_PROP(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_STATIC_PROP(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_STATIC_PROP(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_STATIC_PROP(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
{
USE_OPLINE
zend_free_op free_op1;
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+ orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = RT_CONSTANT((opline+1), (opline+1)->op1);
- value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
zend_free_op free_op1;
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+ orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
zval_ptr_dtor_nogc(free_op_data);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
zend_free_op free_op1;
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+ orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_VAR, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
zval_ptr_dtor_nogc(free_op_data);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
zend_free_op free_op1;
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+ orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_CV);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
- zend_free_op free_op1, free_op_data1;
+ zend_free_op free_op1, free_op_data;
zval *object;
zval *property;
zval *value;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
do {
- value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_op_object;
- }
+ goto assign_op_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
assign_op_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- ZVAL_DEREF(zptr);
+ zval *orig_zptr = zptr;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ if (UNEXPECTED(Z_ISREF_P(zptr))) {
+ ref = Z_REF_P(zptr);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ zptr = Z_REFVAL_P(zptr);
+ }
+
+ if (IS_CV == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), orig_zptr);
+ }
+ if (UNEXPECTED(prop_info || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, zptr, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(zptr);
+ ZVAL_COPY_VALUE(zptr, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(zptr, zptr, value);
+ }
- binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
}
} else {
- zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
+ zend_assign_op_overloaded_property(object, property, cache_slot, value, binary_op OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
- FREE_OP(free_op_data1);
+ FREE_OP(free_op_data);
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
/* assign_obj has two opcodes! */
if (UNEXPECTED(!var_ptr)) {
goto assign_dim_op_ret_null;
}
- ZVAL_DEREF(var_ptr);
}
value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
- binary_op(var_ptr, var_ptr, value);
+ if (IS_CV != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval tmp;
+ binary_op(&tmp, var_ptr, value);
+ if (EXPECTED(zend_verify_ref_assignable_zval(ref, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &tmp);
+ } else {
+ zval_ptr_dtor(&tmp);
+
+ FREE_OP(free_op_data1);
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ HANDLE_EXCEPTION();
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- ZVAL_DEREF(var_ptr);
+ zend_reference *ref = NULL;
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ }
+
+ if (UNEXPECTED(ref && ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval tmp;
+ binary_op(&tmp, var_ptr, value);
- binary_op(var_ptr, var_ptr, value);
+ if (UNEXPECTED(zend_verify_ref_assignable_zval(ref, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &tmp);
+ } else {
+ zval_ptr_dtor(&tmp);
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && IS_CV == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CV == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_VAR != IS_UNUSED
# if 0
if (EXPECTED(0)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || IS_CV == IS_CONST || IS_CV == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && IS_CV == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CV == IS_UNUSED)
+ if (EXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_VAR != IS_UNUSED
# if 0
if (EXPECTED(1)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || IS_CV == IS_CONST || IS_CV == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && IS_CV == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CV == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_VAR != IS_UNUSED
# if 0
if (EXPECTED(0)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || IS_CV == IS_CONST || IS_CV == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
do {
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto pre_incdec_object;
- }
+ goto pre_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
pre_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if (IS_CV == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
-
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
- }
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+ zend_pre_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_pre_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
do {
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto post_incdec_object;
- }
+ goto post_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
post_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
ZVAL_NULL(EX_VAR(opline->result.var));
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if (IS_CV == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+
+ zend_post_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_post_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_post_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
+ zend_fetch_property_address(
+ result, container, IS_VAR, property, IS_CV,
+ ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
+ BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC);
if (IS_VAR == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
}
property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, 1 OPLINE_CC);
if (IS_VAR == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
-
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else {
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, 1 OPLINE_CC);
if (IS_VAR == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
goto exit_assign_obj;
}
assign_object:
if (IS_CV == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CONST);
+ value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
exit_assign_obj:
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
zval_ptr_dtor_nogc(free_op_data);
goto exit_assign_obj;
}
assign_object:
if (IS_CV == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
zval_ptr_dtor_nogc(free_op_data);
exit_assign_obj:
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
zval_ptr_dtor_nogc(free_op_data);
goto exit_assign_obj;
}
assign_object:
if (IS_CV == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_VAR);
+ value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
zval_ptr_dtor_nogc(free_op_data);
exit_assign_obj:
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
goto exit_assign_obj;
}
assign_object:
if (IS_CV == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CV);
+ value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
exit_assign_obj:
{
USE_OPLINE
zend_free_op free_op1;
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+ orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = RT_CONSTANT((opline+1), (opline+1)->op1);
- value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
zend_free_op free_op1;
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+ orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
zval_ptr_dtor_nogc(free_op_data);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
zend_free_op free_op1;
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+ orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_VAR, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
zval_ptr_dtor_nogc(free_op_data);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
zend_free_op free_op1;
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+ orig_object_ptr = object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_CV);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- value = zend_assign_to_variable(variable_ptr, value, IS_CV);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
if (UNEXPECTED(0)) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- value = zend_assign_to_variable(variable_ptr, value, IS_CV);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
if (UNEXPECTED(1)) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (IS_VAR == IS_VAR &&
UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
- zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+ zend_throw_error(NULL, "Cannot assign by reference to an array dimension of an object");
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
UNDEF_RESULT();
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1, free_op_data;
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+
+ if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
+
+ cache_addr = (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_VAR, property, IS_CV, cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_VAR == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, IS_CV OPLINE_CC EXECUTE_DATA_CC))) {
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if (IS_CV == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1;
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
+
+ if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
+
+ cache_addr = (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_VAR, property, IS_CV, cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_cv_BP_VAR_W((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_CV == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, IS_CV OPLINE_CC EXECUTE_DATA_CC))) {
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if (IS_CV == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
+
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
}
variable_ptr = EX_VAR(opline->op2.var);
- zend_assign_to_variable(variable_ptr, value, IS_CV);
+ zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
}
variable_ptr = EX_VAR(opline->op2.var);
- zend_assign_to_variable(variable_ptr, value, IS_CV);
+ zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
- zend_free_op free_op_data1;
+ zend_free_op free_op_data;
zval *object;
zval *property;
zval *value;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = &EX(This);
property = RT_CONSTANT(opline, opline->op2);
do {
- value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_op_object;
- }
+ goto assign_op_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
assign_op_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- ZVAL_DEREF(zptr);
+ zval *orig_zptr = zptr;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ if (UNEXPECTED(Z_ISREF_P(zptr))) {
+ ref = Z_REF_P(zptr);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ zptr = Z_REFVAL_P(zptr);
+ }
+
+ if (IS_CONST == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), orig_zptr);
+ }
+ if (UNEXPECTED(prop_info || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, zptr, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(zptr);
+ ZVAL_COPY_VALUE(zptr, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(zptr, zptr, value);
+ }
- binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
}
} else {
- zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
+ zend_assign_op_overloaded_property(object, property, cache_slot, value, binary_op OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
- FREE_OP(free_op_data1);
+ FREE_OP(free_op_data);
/* assign_obj has two opcodes! */
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && IS_CONST == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_UNUSED_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CONST == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_UNUSED_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_UNUSED != IS_UNUSED
# if 0
if (EXPECTED(0)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || IS_CONST == IS_CONST || IS_CONST == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_UNUSED_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_UNUSED_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = &EX(This);
do {
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto pre_incdec_object;
- }
+ goto pre_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
pre_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if (IS_CONST == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
-
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
- }
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+ zend_pre_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_pre_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = &EX(This);
do {
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto post_incdec_object;
- }
+ goto post_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
post_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
ZVAL_NULL(EX_VAR(opline->result.var));
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if (IS_CONST == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+
+ zend_post_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_post_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_post_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
zval *retval;
if (IS_CONST == IS_CONST) {
- cache_slot = CACHE_ADDR(opline->extended_value);
+ cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
property = RT_CONSTANT(opline, opline->op2);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
+ zend_fetch_property_address(
+ result, container, IS_UNUSED, property, IS_CONST,
+ ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
+ BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC);
if (IS_UNUSED == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
}
property = RT_CONSTANT(opline, opline->op2);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, 1 OPLINE_CC);
if (IS_UNUSED == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
if ((IS_UNUSED & (IS_CONST|IS_TMP_VAR))) {
ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
-
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else {
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
property = RT_CONSTANT(opline, opline->op2);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, 1 OPLINE_CC);
if (IS_UNUSED == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
goto exit_assign_obj;
}
assign_object:
if (IS_CONST == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CONST);
+ value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
exit_assign_obj:
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
zval_ptr_dtor_nogc(free_op_data);
goto exit_assign_obj;
}
assign_object:
if (IS_CONST == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
zval_ptr_dtor_nogc(free_op_data);
exit_assign_obj:
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
zval_ptr_dtor_nogc(free_op_data);
goto exit_assign_obj;
}
assign_object:
if (IS_CONST == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_VAR);
+ value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
zval_ptr_dtor_nogc(free_op_data);
exit_assign_obj:
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
goto exit_assign_obj;
}
assign_object:
if (IS_CONST == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CV);
+ value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
exit_assign_obj:
ZEND_VM_NEXT_OPCODE_EX(1, 2);
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = &EX(This);
+
+ if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = RT_CONSTANT(opline, opline->op2);
+
+ cache_addr = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_UNUSED, property, IS_CONST, cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_VAR == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, IS_CONST OPLINE_CC EXECUTE_DATA_CC))) {
+
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if (IS_CONST == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = &EX(This);
+
+ if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = RT_CONSTANT(opline, opline->op2);
+
+ cache_addr = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_UNUSED, property, IS_CONST, cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_cv_BP_VAR_W((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_CV == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, IS_CONST OPLINE_CC EXECUTE_DATA_CC))) {
+
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if (IS_CONST == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+
+
+
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_INIT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
- zend_free_op free_op2, free_op_data1;
+ zend_free_op free_op2, free_op_data;
zval *object;
zval *property;
zval *value;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = &EX(This);
property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
do {
- value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_op_object;
- }
+ goto assign_op_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
assign_op_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- ZVAL_DEREF(zptr);
+ zval *orig_zptr = zptr;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ if (UNEXPECTED(Z_ISREF_P(zptr))) {
+ ref = Z_REF_P(zptr);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ zptr = Z_REFVAL_P(zptr);
+ }
+
+ if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), orig_zptr);
+ }
+ if (UNEXPECTED(prop_info || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, zptr, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(zptr);
+ ZVAL_COPY_VALUE(zptr, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(zptr, zptr, value);
+ }
- binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
}
} else {
- zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
+ zend_assign_op_overloaded_property(object, property, cache_slot, value, binary_op OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
- FREE_OP(free_op_data1);
+ FREE_OP(free_op_data);
zval_ptr_dtor_nogc(free_op2);
/* assign_obj has two opcodes! */
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_UNUSED_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && ((IS_TMP_VAR|IS_VAR) == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_UNUSED_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_UNUSED != IS_UNUSED
# if 0
if (EXPECTED(0)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || (IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_UNUSED_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_UNUSED_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = &EX(This);
do {
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto pre_incdec_object;
- }
+ goto pre_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
pre_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
-
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
- }
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+ zend_pre_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_pre_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = &EX(This);
do {
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto post_incdec_object;
- }
+ goto post_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
post_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
ZVAL_NULL(EX_VAR(opline->result.var));
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+
+ zend_post_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_post_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_post_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
zval *retval;
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
- cache_slot = CACHE_ADDR(opline->extended_value);
+ cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
+ zend_fetch_property_address(
+ result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR),
+ (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
+ BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC);
zval_ptr_dtor_nogc(free_op2);
if (IS_UNUSED == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
}
property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, 1 OPLINE_CC);
zval_ptr_dtor_nogc(free_op2);
if (IS_UNUSED == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
if ((IS_UNUSED & (IS_CONST|IS_TMP_VAR))) {
ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
-
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else {
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, 1 OPLINE_CC);
zval_ptr_dtor_nogc(free_op2);
if (IS_UNUSED == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
goto exit_assign_obj;
}
assign_object:
if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ zval_ptr_dtor_nogc(free_op2);
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CONST);
+ value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
exit_assign_obj:
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
zval_ptr_dtor_nogc(free_op_data);
goto exit_assign_obj;
}
assign_object:
if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ zval_ptr_dtor_nogc(free_op2);
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
zval_ptr_dtor_nogc(free_op_data);
exit_assign_obj:
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
zval_ptr_dtor_nogc(free_op_data);
goto exit_assign_obj;
}
assign_object:
if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ zval_ptr_dtor_nogc(free_op2);
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_VAR);
+ value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
zval_ptr_dtor_nogc(free_op_data);
exit_assign_obj:
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
goto exit_assign_obj;
}
assign_object:
if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ zval_ptr_dtor_nogc(free_op2);
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CV);
+ value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
exit_assign_obj:
ZEND_VM_NEXT_OPCODE_EX(1, 2);
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op2, free_op_data;
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = &EX(This);
+
+ if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
+
+ cache_addr = ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+
+ zval_ptr_dtor_nogc(free_op2);
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_VAR == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC))) {
+
+ zval_ptr_dtor_nogc(free_op2);
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+
+ zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+
+ zval_ptr_dtor_nogc(free_op2);
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+ zval_ptr_dtor_nogc(free_op2);
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op2;
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = &EX(This);
+
+ if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
+
+ cache_addr = ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_cv_BP_VAR_W((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+
+ zval_ptr_dtor_nogc(free_op2);
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_CV == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC))) {
+
+ zval_ptr_dtor_nogc(free_op2);
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+
+ zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+
+ zval_ptr_dtor_nogc(free_op2);
+
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+ zval_ptr_dtor_nogc(free_op2);
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
- zend_free_op free_op_data1;
+ zend_free_op free_op_data;
zval *object;
zval *property;
zval *value;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = &EX(This);
property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
do {
- value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_op_object;
- }
+ goto assign_op_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
assign_op_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- ZVAL_DEREF(zptr);
+ zval *orig_zptr = zptr;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ if (UNEXPECTED(Z_ISREF_P(zptr))) {
+ ref = Z_REF_P(zptr);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ zptr = Z_REFVAL_P(zptr);
+ }
+
+ if (IS_CV == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), orig_zptr);
+ }
+ if (UNEXPECTED(prop_info || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, zptr, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(zptr);
+ ZVAL_COPY_VALUE(zptr, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(zptr, zptr, value);
+ }
- binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
}
} else {
- zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
+ zend_assign_op_overloaded_property(object, property, cache_slot, value, binary_op OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
- FREE_OP(free_op_data1);
+ FREE_OP(free_op_data);
/* assign_obj has two opcodes! */
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && IS_CV == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_UNUSED_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CV == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_UNUSED_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_UNUSED != IS_UNUSED
# if 0
if (EXPECTED(0)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || IS_CV == IS_CONST || IS_CV == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_UNUSED_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_UNUSED_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = &EX(This);
do {
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto pre_incdec_object;
- }
+ goto pre_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
pre_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if (IS_CV == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
-
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
- }
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+ zend_pre_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_pre_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = &EX(This);
do {
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto post_incdec_object;
- }
+ goto post_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
post_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
ZVAL_NULL(EX_VAR(opline->result.var));
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if (IS_CV == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+
+ zend_post_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_post_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_post_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
zval *retval;
if (IS_CV == IS_CONST) {
- cache_slot = CACHE_ADDR(opline->extended_value);
+ cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
+ zend_fetch_property_address(
+ result, container, IS_UNUSED, property, IS_CV,
+ ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
+ BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC);
if (IS_UNUSED == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
}
property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, 1 OPLINE_CC);
if (IS_UNUSED == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
if ((IS_UNUSED & (IS_CONST|IS_TMP_VAR))) {
ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
-
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else {
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, 1 OPLINE_CC);
if (IS_UNUSED == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
goto exit_assign_obj;
}
assign_object:
if (IS_CV == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CONST);
+ value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
exit_assign_obj:
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
zval_ptr_dtor_nogc(free_op_data);
goto exit_assign_obj;
}
assign_object:
if (IS_CV == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
zval_ptr_dtor_nogc(free_op_data);
exit_assign_obj:
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
zval_ptr_dtor_nogc(free_op_data);
goto exit_assign_obj;
}
assign_object:
if (IS_CV == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_VAR);
+ value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
zval_ptr_dtor_nogc(free_op_data);
exit_assign_obj:
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
goto exit_assign_obj;
}
assign_object:
if (IS_CV == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CV);
+ value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
exit_assign_obj:
ZEND_VM_NEXT_OPCODE_EX(1, 2);
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = &EX(This);
+
+ if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
+
+ cache_addr = (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_UNUSED, property, IS_CV, cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_VAR == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, IS_CV OPLINE_CC EXECUTE_DATA_CC))) {
+
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if (IS_CV == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = &EX(This);
+
+ if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
+
+ cache_addr = (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_UNUSED, property, IS_CV, cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_cv_BP_VAR_W((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_CV == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, IS_CV OPLINE_CC EXECUTE_DATA_CC))) {
+
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if (IS_CV == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+
+
+
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_INIT_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZVAL_NULL(var_ptr);
ZVAL_UNDEFINED_OP1();
}
- ZVAL_DEREF(var_ptr);
- increment_function(var_ptr);
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval old;
+ ZVAL_COPY(&old, var_ptr);
+
+ increment_function(var_ptr);
+
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_DOUBLE) && Z_TYPE(old) == IS_LONG) {
+ zend_throw_incdec_ref_error(ref, 1);
+ ZVAL_COPY_VALUE(var_ptr, &old);
+
+ HANDLE_EXCEPTION();
+ } else if (UNEXPECTED(!zend_verify_ref_assignable_zval(ref, var_ptr, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &old);
+
+ HANDLE_EXCEPTION();
+ } else {
+ zval_ptr_dtor(&old);
+ }
+ } else {
+ increment_function(var_ptr);
+ }
+ } else {
+ increment_function(var_ptr);
+ }
if (UNEXPECTED(0)) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
ZVAL_NULL(var_ptr);
ZVAL_UNDEFINED_OP1();
}
- ZVAL_DEREF(var_ptr);
- increment_function(var_ptr);
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval old;
+ ZVAL_COPY(&old, var_ptr);
+
+ increment_function(var_ptr);
+
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_DOUBLE) && Z_TYPE(old) == IS_LONG) {
+ zend_throw_incdec_ref_error(ref, 1);
+ ZVAL_COPY_VALUE(var_ptr, &old);
+
+ HANDLE_EXCEPTION();
+ } else if (UNEXPECTED(!zend_verify_ref_assignable_zval(ref, var_ptr, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &old);
+
+ HANDLE_EXCEPTION();
+ } else {
+ zval_ptr_dtor(&old);
+ }
+ } else {
+ increment_function(var_ptr);
+ }
+ } else {
+ increment_function(var_ptr);
+ }
if (UNEXPECTED(1)) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
ZVAL_NULL(var_ptr);
ZVAL_UNDEFINED_OP1();
}
- ZVAL_DEREF(var_ptr);
- decrement_function(var_ptr);
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval old;
+ ZVAL_COPY(&old, var_ptr);
+
+ decrement_function(var_ptr);
+
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_DOUBLE) && Z_TYPE(old) == IS_LONG) {
+ zend_throw_incdec_ref_error(ref, 0);
+ ZVAL_COPY_VALUE(var_ptr, &old);
+
+ HANDLE_EXCEPTION();
+ } else if (UNEXPECTED(!zend_verify_ref_assignable_zval(ref, var_ptr, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &old);
+
+ HANDLE_EXCEPTION();
+ } else {
+ zval_ptr_dtor(&old);
+ }
+ } else {
+ decrement_function(var_ptr);
+ }
+ } else {
+ decrement_function(var_ptr);
+ }
if (UNEXPECTED(0)) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
ZVAL_NULL(var_ptr);
ZVAL_UNDEFINED_OP1();
}
- ZVAL_DEREF(var_ptr);
- decrement_function(var_ptr);
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval old;
+ ZVAL_COPY(&old, var_ptr);
+
+ decrement_function(var_ptr);
+
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_DOUBLE) && Z_TYPE(old) == IS_LONG) {
+ zend_throw_incdec_ref_error(ref, 0);
+ ZVAL_COPY_VALUE(var_ptr, &old);
+
+ HANDLE_EXCEPTION();
+ } else if (UNEXPECTED(!zend_verify_ref_assignable_zval(ref, var_ptr, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &old);
+
+ HANDLE_EXCEPTION();
+ } else {
+ zval_ptr_dtor(&old);
+ }
+ } else {
+ decrement_function(var_ptr);
+ }
+ } else {
+ decrement_function(var_ptr);
+ }
if (UNEXPECTED(1)) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
ZVAL_NULL(var_ptr);
ZVAL_UNDEFINED_OP1();
}
- ZVAL_DEREF(var_ptr);
- ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
- increment_function(var_ptr);
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+
+ ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
+
+ increment_function(var_ptr);
+
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_DOUBLE) && Z_TYPE_P(EX_VAR(opline->result.var)) == IS_LONG) {
+ zend_throw_incdec_ref_error(ref, 1);
+ ZVAL_COPY_VALUE(var_ptr, EX_VAR(opline->result.var));
+ } else if (UNEXPECTED(!zend_verify_ref_assignable_zval(ref, var_ptr, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, EX_VAR(opline->result.var));
+ }
+ }
+ } else {
+ ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
+
+ increment_function(var_ptr);
+ }
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
ZVAL_NULL(var_ptr);
ZVAL_UNDEFINED_OP1();
}
- ZVAL_DEREF(var_ptr);
- ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
- decrement_function(var_ptr);
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+
+ ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
+
+ decrement_function(var_ptr);
+
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_DOUBLE) && Z_TYPE_P(EX_VAR(opline->result.var)) == IS_LONG) {
+ zend_throw_incdec_ref_error(ref, 0);
+ ZVAL_COPY_VALUE(var_ptr, EX_VAR(opline->result.var));
+ } else if (UNEXPECTED(!zend_verify_ref_assignable_zval(ref, var_ptr, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, EX_VAR(opline->result.var));
+ }
+ }
+ } else {
+ ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
+
+ decrement_function(var_ptr);
+ }
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
- zend_free_op free_op_data1;
+ zend_free_op free_op_data;
zval *object;
zval *property;
zval *value;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
property = RT_CONSTANT(opline, opline->op2);
do {
- value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_op_object;
- }
+ goto assign_op_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
assign_op_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- ZVAL_DEREF(zptr);
+ zval *orig_zptr = zptr;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ if (UNEXPECTED(Z_ISREF_P(zptr))) {
+ ref = Z_REF_P(zptr);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ zptr = Z_REFVAL_P(zptr);
+ }
+
+ if (IS_CONST == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), orig_zptr);
+ }
+ if (UNEXPECTED(prop_info || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, zptr, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(zptr);
+ ZVAL_COPY_VALUE(zptr, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(zptr, zptr, value);
+ }
- binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
}
} else {
- zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
+ zend_assign_op_overloaded_property(object, property, cache_slot, value, binary_op OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
- FREE_OP(free_op_data1);
+ FREE_OP(free_op_data);
/* assign_obj has two opcodes! */
ZEND_VM_NEXT_OPCODE_EX(1, 2);
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_static_prop_helper_SPEC_CV_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ /* This helper actually never will receive IS_VAR as second op, and has the same handling for VAR and TMP in the first op, but for interoperability with the other binary_assign_op helpers, it is necessary to "include" it */
+
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ SAVE_OPLINE();
+
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, &prop_info, (opline+1)->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
+ ZEND_ASSERT(EG(exception));
+ UNDEF_RESULT();
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ HANDLE_EXCEPTION();
+ }
+
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
+
+ if (UNEXPECTED(Z_ISREF_P(prop))) {
+ ref = Z_REF_P(prop);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ prop = Z_REFVAL_P(prop);
+ }
+
+ if (UNEXPECTED(prop_info->type || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, prop, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(prop);
+ ZVAL_COPY_VALUE(prop, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(prop, prop, value);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ FREE_OP(free_op_data);
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
if (UNEXPECTED(!var_ptr)) {
goto assign_dim_op_ret_null;
}
- ZVAL_DEREF(var_ptr);
}
value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
- binary_op(var_ptr, var_ptr, value);
+ if (IS_CONST != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval tmp;
+ binary_op(&tmp, var_ptr, value);
+ if (EXPECTED(zend_verify_ref_assignable_zval(ref, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &tmp);
+ } else {
+ zval_ptr_dtor(&tmp);
+
+ FREE_OP(free_op_data1);
+
+ HANDLE_EXCEPTION();
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- ZVAL_DEREF(var_ptr);
+ zend_reference *ref = NULL;
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ }
+
+ if (UNEXPECTED(ref && ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval tmp;
+ binary_op(&tmp, var_ptr, value);
- binary_op(var_ptr, var_ptr, value);
+ if (UNEXPECTED(zend_verify_ref_assignable_zval(ref, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &tmp);
+ } else {
+ zval_ptr_dtor(&tmp);
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && IS_CONST == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CONST == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_CV != IS_UNUSED
# if 0
if (EXPECTED(0)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || IS_CONST == IS_CONST || IS_CONST == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && IS_CONST == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CONST == IS_UNUSED)
+ if (EXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_CV != IS_UNUSED
# if 0
if (EXPECTED(1)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || IS_CONST == IS_CONST || IS_CONST == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && IS_CONST == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CONST == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#else
+# if 0 || IS_CV != IS_UNUSED
+# if 0
+ /* opline->extended_value checks are specialized, don't need opline */
+ USE_OPLINE
+# endif
+
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# if 0 || IS_CONST == IS_CONST || IS_CONST == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
+# endif
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#endif
+}
+
+static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CONST_STATIC_PROP(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+#if 1 && (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CONST == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_CV != IS_UNUSED
# if 0
if (EXPECTED(0)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || IS_CONST == IS_CONST || IS_CONST == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_STATIC_PROP(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_STATIC_PROP(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_STATIC_PROP(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_STATIC_PROP(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_STATIC_PROP(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_STATIC_PROP(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_STATIC_PROP(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_STATIC_PROP(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_STATIC_PROP(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_STATIC_PROP(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_STATIC_PROP(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_STATIC_PROP(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
do {
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto pre_incdec_object;
- }
+ goto pre_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
pre_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if (IS_CONST == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
-
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
- }
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+ zend_pre_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_pre_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
do {
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto post_incdec_object;
- }
+ goto post_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
post_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
ZVAL_NULL(EX_VAR(opline->result.var));
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if (IS_CONST == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+
+ zend_post_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_post_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_post_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_CV_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
-static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CV_CONST(int type ZEND_OPCODE_HANDLER_ARGS_DC)
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_static_property_helper_SPEC_CV_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
-
- zval *varname;
- zval *retval;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
+ zval *prop;
+ zend_property_info *prop_info;
SAVE_OPLINE();
- do {
- if (IS_CONST == IS_CONST) {
- if (IS_CV == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- } else {
- zval *class_name = RT_CONSTANT(opline, opline->op2);
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
- if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
+ zend_pre_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
- retval = NULL;
- break;
- }
- if (IS_CV != IS_CONST) {
- CACHE_PTR(opline->extended_value, ce);
- }
- }
- }
- } else {
- if (IS_CONST == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
- retval = NULL;
- break;
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if (IS_CV == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- }
- }
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_STATIC_PROP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_CV_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
- varname = EX_VAR(opline->op1.var);
- if (IS_CV == IS_CONST) {
- name = Z_STR_P(varname);
- } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
- name = Z_STR_P(varname);
- tmp_name = NULL;
- } else {
- if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
- zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
- }
- name = zval_get_tmp_string(varname, &tmp_name);
- }
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_CV_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
- retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_static_property_helper_SPEC_CV_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+ zend_property_info *prop_info;
- if (IS_CV != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
+ SAVE_OPLINE();
- if (IS_CV == IS_CONST && EXPECTED(retval)) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
- }
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
- } while (0);
+ zend_post_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
+
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_STATIC_PROP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_CV_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_STATIC_PROP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_CV_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CV_CONST(int type ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+
+ SAVE_OPLINE();
- if (UNEXPECTED(retval == NULL)) {
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, NULL, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS, type, opline->extended_value & ZEND_FETCH_OBJ_FLAGS OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
if (EG(exception)) {
ZVAL_UNDEF(EX_VAR(opline->result.var));
HANDLE_EXCEPTION();
} else {
ZEND_ASSERT(type == BP_VAR_IS);
- retval = &EG(uninitialized_zval);
+ prop = &EG(uninitialized_zval);
}
}
if (type == BP_VAR_R || type == BP_VAR_IS) {
- ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
+ ZVAL_COPY_DEREF(EX_VAR(opline->result.var), prop);
} else {
- ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ ZVAL_INDIRECT(EX_VAR(opline->result.var), prop);
}
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
zval *retval;
if (IS_CONST == IS_CONST) {
- cache_slot = CACHE_ADDR(opline->extended_value);
+ cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
property = RT_CONSTANT(opline, opline->op2);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
+ zend_fetch_property_address(
+ result, container, IS_CV, property, IS_CONST,
+ ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
+ BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC);
if (IS_CV == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
}
property = RT_CONSTANT(opline, opline->op2);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, 1 OPLINE_CC);
if (IS_CV == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
-
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else {
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
property = RT_CONSTANT(opline, opline->op2);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, 1 OPLINE_CC);
if (IS_CV == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
goto exit_assign_obj;
}
assign_object:
if (IS_CONST == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CONST);
+ value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
exit_assign_obj:
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
zval_ptr_dtor_nogc(free_op_data);
goto exit_assign_obj;
}
assign_object:
if (IS_CONST == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
zval_ptr_dtor_nogc(free_op_data);
exit_assign_obj:
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
zval_ptr_dtor_nogc(free_op_data);
goto exit_assign_obj;
}
assign_object:
if (IS_CONST == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_VAR);
+ value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
zval_ptr_dtor_nogc(free_op_data);
exit_assign_obj:
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
goto exit_assign_obj;
}
assign_object:
if (IS_CONST == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CV);
+ value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
exit_assign_obj:
ZEND_VM_NEXT_OPCODE_EX(1, 2);
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = RT_CONSTANT((opline+1), (opline+1)->op1);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = EX_VAR(opline->op1.var);
+ orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = RT_CONSTANT((opline+1), (opline+1)->op1);
- value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = EX_VAR(opline->op1.var);
+ orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
zval_ptr_dtor_nogc(free_op_data);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = EX_VAR(opline->op1.var);
+ orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_VAR, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
zval_ptr_dtor_nogc(free_op_data);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = EX_VAR(opline->op1.var);
+ orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_CV);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
if (UNEXPECTED(0)) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
if (UNEXPECTED(1)) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = EX_VAR(opline->op1.var);
+
+ if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = RT_CONSTANT(opline, opline->op2);
+
+ cache_addr = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_CV, property, IS_CONST, cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_VAR == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, IS_CONST OPLINE_CC EXECUTE_DATA_CC))) {
+
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if (IS_CONST == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = EX_VAR(opline->op1.var);
+
+ if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = RT_CONSTANT(opline, opline->op2);
+
+ cache_addr = (IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_CV, property, IS_CONST, cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_cv_BP_VAR_W((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_CV == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, IS_CONST OPLINE_CC EXECUTE_DATA_CC))) {
+
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if (IS_CONST == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+
+
+
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value_ptr;
+ zend_property_info *prop_info;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value_ptr = get_zval_ptr_ptr((opline+1)->op1_type, (opline+1)->op1, &free_op_data, BP_VAR_W);
+
+ if ((opline+1)->op1_type == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ prop = &EG(uninitialized_zval);
+ } else if ((opline+1)->op1_type == IS_VAR && (opline->extended_value & ZEND_RETURNS_FUNCTION) && UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(prop, value_ptr, IS_CONST OPLINE_CC EXECUTE_DATA_CC))) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ if (UNEXPECTED(prop_info->type)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+ if (UNEXPECTED(Z_REFCOUNTED_P(prop)) && Z_ISREF_P(prop)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+ }
+ }
+ zend_assign_to_variable_reference(prop, value_ptr);
+ if (prop_info->type) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
zval *value;
int result;
- zval *varname;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
-
SAVE_OPLINE();
- if (IS_CONST == IS_CONST) {
- if (IS_CV == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- } else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- if (IS_CV != IS_CONST) {
- CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
- }
- }
- } else {
- if (IS_CONST == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
-
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if (IS_CV == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
-
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- }
- }
-
- varname = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
- if (IS_CV == IS_CONST) {
- name = Z_STR_P(varname);
- } else {
- name = zval_get_tmp_string(varname, &tmp_name);
- }
- value = zend_std_get_static_property(ce, name, 1);
-
- if (IS_CV == IS_CONST && value) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
- }
-
- if (IS_CV != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
+ result = zend_fetch_static_property_address(&value, NULL, opline->extended_value & ~ZEND_ISEMPTY, BP_VAR_IS, 0 OPLINE_CC EXECUTE_DATA_CC);
-is_static_prop_return:
if (!(opline->extended_value & ZEND_ISEMPTY)) {
- result = value && Z_TYPE_P(value) > IS_NULL &&
+ result = result == SUCCESS && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else {
- result = !value || !i_zend_is_true(value);
+ result = result != SUCCESS || !i_zend_is_true(value);
}
ZEND_VM_SMART_BRANCH(result, 1);
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
- zend_free_op free_op2, free_op_data1;
+ zend_free_op free_op2, free_op_data;
zval *object;
zval *property;
zval *value;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
do {
- value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_op_object;
- }
+ goto assign_op_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
assign_op_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- ZVAL_DEREF(zptr);
+ zval *orig_zptr = zptr;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ if (UNEXPECTED(Z_ISREF_P(zptr))) {
+ ref = Z_REF_P(zptr);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ zptr = Z_REFVAL_P(zptr);
+ }
+
+ if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), orig_zptr);
+ }
+ if (UNEXPECTED(prop_info || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, zptr, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(zptr);
+ ZVAL_COPY_VALUE(zptr, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(zptr, zptr, value);
+ }
- binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
}
} else {
- zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
+ zend_assign_op_overloaded_property(object, property, cache_slot, value, binary_op OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
- FREE_OP(free_op_data1);
+ FREE_OP(free_op_data);
zval_ptr_dtor_nogc(free_op2);
/* assign_obj has two opcodes! */
ZEND_VM_NEXT_OPCODE_EX(1, 2);
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_static_prop_helper_SPEC_CV_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ /* This helper actually never will receive IS_VAR as second op, and has the same handling for VAR and TMP in the first op, but for interoperability with the other binary_assign_op helpers, it is necessary to "include" it */
+
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ SAVE_OPLINE();
+
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, &prop_info, (opline+1)->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
+ ZEND_ASSERT(EG(exception));
+ UNDEF_RESULT();
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ HANDLE_EXCEPTION();
+ }
+
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
+
+ if (UNEXPECTED(Z_ISREF_P(prop))) {
+ ref = Z_REF_P(prop);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ prop = Z_REFVAL_P(prop);
+ }
+
+ if (UNEXPECTED(prop_info->type || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, prop, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(prop);
+ ZVAL_COPY_VALUE(prop, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(prop, prop, value);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ FREE_OP(free_op_data);
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
if (UNEXPECTED(!var_ptr)) {
goto assign_dim_op_ret_null;
}
- ZVAL_DEREF(var_ptr);
}
value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
- binary_op(var_ptr, var_ptr, value);
+ if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval tmp;
+ binary_op(&tmp, var_ptr, value);
+ if (EXPECTED(zend_verify_ref_assignable_zval(ref, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &tmp);
+ } else {
+ zval_ptr_dtor(&tmp);
+ zval_ptr_dtor_nogc(free_op2);
+ FREE_OP(free_op_data1);
+
+ HANDLE_EXCEPTION();
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- ZVAL_DEREF(var_ptr);
+ zend_reference *ref = NULL;
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ }
- binary_op(var_ptr, var_ptr, value);
+ if (UNEXPECTED(ref && ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval tmp;
+ binary_op(&tmp, var_ptr, value);
+
+ if (UNEXPECTED(zend_verify_ref_assignable_zval(ref, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &tmp);
+ } else {
+ zval_ptr_dtor(&tmp);
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && ((IS_TMP_VAR|IS_VAR) == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_CV != IS_UNUSED
# if 0
if (EXPECTED(0)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || (IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && ((IS_TMP_VAR|IS_VAR) == IS_UNUSED)
+ if (EXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_CV != IS_UNUSED
# if 0
if (EXPECTED(1)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || (IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && ((IS_TMP_VAR|IS_VAR) == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#else
+# if 0 || IS_CV != IS_UNUSED
+# if 0
+ /* opline->extended_value checks are specialized, don't need opline */
+ USE_OPLINE
+# endif
+
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# if 0 || (IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
+# endif
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#endif
+}
+
+static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_TMPVAR_STATIC_PROP(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+#if 1 && (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && ((IS_TMP_VAR|IS_VAR) == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_CV != IS_UNUSED
# if 0
if (EXPECTED(0)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || (IS_TMP_VAR|IS_VAR) == IS_CONST || (IS_TMP_VAR|IS_VAR) == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_STATIC_PROP(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_STATIC_PROP(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_STATIC_PROP(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_STATIC_PROP(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_STATIC_PROP(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_STATIC_PROP(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_STATIC_PROP(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_STATIC_PROP(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_STATIC_PROP(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_STATIC_PROP(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_STATIC_PROP(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_STATIC_PROP(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_TMPVAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
do {
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto pre_incdec_object;
- }
+ goto pre_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
pre_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
-
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
- }
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+ zend_pre_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_pre_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
do {
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto post_incdec_object;
- }
+ goto post_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
post_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
ZVAL_NULL(EX_VAR(opline->result.var));
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+
+ zend_post_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_post_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_post_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
zval *retval;
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
- cache_slot = CACHE_ADDR(opline->extended_value);
+ cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
+ zend_fetch_property_address(
+ result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR),
+ (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
+ BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC);
zval_ptr_dtor_nogc(free_op2);
if (IS_CV == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
}
property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, 1 OPLINE_CC);
zval_ptr_dtor_nogc(free_op2);
if (IS_CV == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
-
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else {
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, 1 OPLINE_CC);
zval_ptr_dtor_nogc(free_op2);
if (IS_CV == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
goto exit_assign_obj;
}
assign_object:
if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ zval_ptr_dtor_nogc(free_op2);
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CONST);
+ value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
exit_assign_obj:
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
zval_ptr_dtor_nogc(free_op_data);
goto exit_assign_obj;
}
assign_object:
if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ zval_ptr_dtor_nogc(free_op2);
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
zval_ptr_dtor_nogc(free_op_data);
exit_assign_obj:
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
zval_ptr_dtor_nogc(free_op_data);
goto exit_assign_obj;
}
assign_object:
if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ zval_ptr_dtor_nogc(free_op2);
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_VAR);
+ value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
zval_ptr_dtor_nogc(free_op_data);
exit_assign_obj:
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
goto exit_assign_obj;
}
assign_object:
if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ zval_ptr_dtor_nogc(free_op2);
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CV);
+ value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
exit_assign_obj:
{
USE_OPLINE
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op2, free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = EX_VAR(opline->op1.var);
+ orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = RT_CONSTANT((opline+1), (opline+1)->op1);
- value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+ zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op2, free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = EX_VAR(opline->op1.var);
+ orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
zval_ptr_dtor_nogc(free_op_data);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+ zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op2, free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = EX_VAR(opline->op1.var);
+ orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_VAR, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
zval_ptr_dtor_nogc(free_op_data);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+ zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op2, free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = EX_VAR(opline->op1.var);
+ orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_CV);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+ zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
ZEND_VM_NEXT_OPCODE_EX(1, 2);
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op2, free_op_data;
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = EX_VAR(opline->op1.var);
+
+ if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
+
+ cache_addr = ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+
+ zval_ptr_dtor_nogc(free_op2);
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_VAR == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC))) {
+
+ zval_ptr_dtor_nogc(free_op2);
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+
+ zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+
+ zval_ptr_dtor_nogc(free_op2);
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+ zval_ptr_dtor_nogc(free_op2);
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op2;
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = EX_VAR(opline->op1.var);
+
+ if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
+
+ cache_addr = ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_CV, property, (IS_TMP_VAR|IS_VAR), cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_cv_BP_VAR_W((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+
+ zval_ptr_dtor_nogc(free_op2);
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_CV == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, (IS_TMP_VAR|IS_VAR) OPLINE_CC EXECUTE_DATA_CC))) {
+
+ zval_ptr_dtor_nogc(free_op2);
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+
+ zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+
+ zval_ptr_dtor_nogc(free_op2);
+
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+ zval_ptr_dtor_nogc(free_op2);
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
if (UNEXPECTED(0)) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
if (UNEXPECTED(1)) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
-static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CV_VAR(int type ZEND_OPCODE_HANDLER_ARGS_DC)
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_static_property_helper_SPEC_CV_VAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
-
- zval *varname;
- zval *retval;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
+ zval *prop;
+ zend_property_info *prop_info;
SAVE_OPLINE();
- do {
- if (IS_VAR == IS_CONST) {
- if (IS_CV == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- } else {
- zval *class_name = RT_CONSTANT(opline, opline->op2);
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
- if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
+ zend_pre_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
- retval = NULL;
- break;
- }
- if (IS_CV != IS_CONST) {
- CACHE_PTR(opline->extended_value, ce);
- }
- }
- }
- } else {
- if (IS_VAR == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
- retval = NULL;
- break;
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if (IS_CV == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- }
- }
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_CV_VAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
- varname = EX_VAR(opline->op1.var);
- if (IS_CV == IS_CONST) {
- name = Z_STR_P(varname);
- } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
- name = Z_STR_P(varname);
- tmp_name = NULL;
- } else {
- if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
- zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
- }
- name = zval_get_tmp_string(varname, &tmp_name);
- }
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_CV_VAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_static_property_helper_SPEC_CV_VAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+ zend_property_info *prop_info;
- retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
+ SAVE_OPLINE();
- if (IS_CV != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
- if (IS_CV == IS_CONST && EXPECTED(retval)) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
- }
+ zend_post_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
- } while (0);
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_CV_VAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_CV_VAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CV_VAR(int type ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
- if (UNEXPECTED(retval == NULL)) {
+ SAVE_OPLINE();
+
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, NULL, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS, type, opline->extended_value & ZEND_FETCH_OBJ_FLAGS OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
if (EG(exception)) {
ZVAL_UNDEF(EX_VAR(opline->result.var));
HANDLE_EXCEPTION();
} else {
ZEND_ASSERT(type == BP_VAR_IS);
- retval = &EG(uninitialized_zval);
+ prop = &EG(uninitialized_zval);
}
}
if (type == BP_VAR_R || type == BP_VAR_IS) {
- ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
+ ZVAL_COPY_DEREF(EX_VAR(opline->result.var), prop);
} else {
- ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ ZVAL_INDIRECT(EX_VAR(opline->result.var), prop);
}
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_VAR(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = RT_CONSTANT((opline+1), (opline+1)->op1);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_VAR, EX_USES_STRICT_TYPES());
if (UNEXPECTED(0)) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_VAR, EX_USES_STRICT_TYPES());
if (UNEXPECTED(1)) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (IS_CV == IS_VAR &&
UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
- zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+ zend_throw_error(NULL, "Cannot assign by reference to an array dimension of an object");
if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
UNDEF_RESULT();
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value_ptr;
+ zend_property_info *prop_info;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value_ptr = get_zval_ptr_ptr((opline+1)->op1_type, (opline+1)->op1, &free_op_data, BP_VAR_W);
+
+ if ((opline+1)->op1_type == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ prop = &EG(uninitialized_zval);
+ } else if ((opline+1)->op1_type == IS_VAR && (opline->extended_value & ZEND_RETURNS_FUNCTION) && UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(prop, value_ptr, IS_VAR OPLINE_CC EXECUTE_DATA_CC))) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ if (UNEXPECTED(prop_info->type)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+ if (UNEXPECTED(Z_REFCOUNTED_P(prop)) && Z_ISREF_P(prop)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+ }
+ }
+ zend_assign_to_variable_reference(prop, value_ptr);
+ if (prop_info->type) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
zval *value;
int result;
- zval *varname;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
-
SAVE_OPLINE();
- if (IS_VAR == IS_CONST) {
- if (IS_CV == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- } else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- if (IS_CV != IS_CONST) {
- CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
- }
- }
- } else {
- if (IS_VAR == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
-
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if (IS_CV == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
-
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- }
- }
-
- varname = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
- if (IS_CV == IS_CONST) {
- name = Z_STR_P(varname);
- } else {
- name = zval_get_tmp_string(varname, &tmp_name);
- }
- value = zend_std_get_static_property(ce, name, 1);
+ result = zend_fetch_static_property_address(&value, NULL, opline->extended_value & ~ZEND_ISEMPTY, BP_VAR_IS, 0 OPLINE_CC EXECUTE_DATA_CC);
- if (IS_CV == IS_CONST && value) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
- }
-
- if (IS_CV != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
-
-is_static_prop_return:
if (!(opline->extended_value & ZEND_ISEMPTY)) {
- result = value && Z_TYPE_P(value) > IS_NULL &&
+ result = result == SUCCESS && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else {
- result = !value || !i_zend_is_true(value);
+ result = result != SUCCESS || !i_zend_is_true(value);
}
ZEND_VM_SMART_BRANCH(result, 1);
ZEND_VM_RETURN();
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_static_prop_helper_SPEC_CV_UNUSED(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ /* This helper actually never will receive IS_VAR as second op, and has the same handling for VAR and TMP in the first op, but for interoperability with the other binary_assign_op helpers, it is necessary to "include" it */
+
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ SAVE_OPLINE();
+
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, &prop_info, (opline+1)->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
+ ZEND_ASSERT(EG(exception));
+ UNDEF_RESULT();
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ HANDLE_EXCEPTION();
+ }
+
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
+
+ if (UNEXPECTED(Z_ISREF_P(prop))) {
+ ref = Z_REF_P(prop);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ prop = Z_REFVAL_P(prop);
+ }
+
+ if (UNEXPECTED(prop_info->type || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, prop, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(prop);
+ ZVAL_COPY_VALUE(prop, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(prop, prop, value);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ FREE_OP(free_op_data);
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_CV_UNUSED(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
if (UNEXPECTED(!var_ptr)) {
goto assign_dim_op_ret_null;
}
- ZVAL_DEREF(var_ptr);
}
value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
- binary_op(var_ptr, var_ptr, value);
+ if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval tmp;
+ binary_op(&tmp, var_ptr, value);
+ if (EXPECTED(zend_verify_ref_assignable_zval(ref, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &tmp);
+ } else {
+ zval_ptr_dtor(&tmp);
+
+ FREE_OP(free_op_data1);
+
+ HANDLE_EXCEPTION();
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && IS_UNUSED == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_UNUSED == IS_UNUSED)
+ if (EXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_CV != IS_UNUSED
# if 0
if (EXPECTED(1)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || IS_UNUSED == IS_CONST || IS_UNUSED == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
+# endif
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#endif
+}
+
+static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_UNUSED_STATIC_PROP(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+#if 1 && (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_UNUSED == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#else
+# if 0 || IS_CV != IS_UNUSED
+# if 0
+ /* opline->extended_value checks are specialized, don't need opline */
+ USE_OPLINE
+# endif
+
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# if 0 || IS_UNUSED == IS_CONST || IS_UNUSED == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_STATIC_PROP(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_STATIC_PROP(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_STATIC_PROP(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_STATIC_PROP(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_STATIC_PROP(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_STATIC_PROP(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_STATIC_PROP(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_STATIC_PROP(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_STATIC_PROP(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_STATIC_PROP(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_STATIC_PROP(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_STATIC_PROP(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_static_property_helper_SPEC_CV_UNUSED(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+ zend_property_info *prop_info;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ zend_pre_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
+
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_STATIC_PROP_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_CV_UNUSED(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_pre_incdec_static_property_helper_SPEC_CV_UNUSED(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_static_property_helper_SPEC_CV_UNUSED(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+ zval *prop;
+ zend_property_info *prop_info;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_RW, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ zend_post_incdec_property_zval(prop, prop_info->type ? prop_info : NULL, inc OPLINE_CC EXECUTE_DATA_CC);
+
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_STATIC_PROP_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_CV_UNUSED(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_STATIC_PROP_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ ZEND_VM_TAIL_CALL(zend_post_incdec_static_property_helper_SPEC_CV_UNUSED(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CV_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
-
- zval *varname;
- zval *retval;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
+ zval *prop;
SAVE_OPLINE();
- do {
- if (IS_UNUSED == IS_CONST) {
- if (IS_CV == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value)) != NULL)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- } else {
- zval *class_name = RT_CONSTANT(opline, opline->op2);
-
- if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(class_name), Z_STR_P(class_name + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
-
- retval = NULL;
- break;
- }
- if (IS_CV != IS_CONST) {
- CACHE_PTR(opline->extended_value, ce);
- }
- }
- }
- } else {
- if (IS_UNUSED == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
-
- retval = NULL;
- break;
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if (IS_CV == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value) == ce)) {
- retval = CACHED_PTR(opline->extended_value + sizeof(void*));
- break;
- }
- }
-
- varname = EX_VAR(opline->op1.var);
- if (IS_CV == IS_CONST) {
- name = Z_STR_P(varname);
- } else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
- name = Z_STR_P(varname);
- tmp_name = NULL;
- } else {
- if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
- zval_undefined_cv(EX(opline)->op1.var EXECUTE_DATA_CC);
- }
- name = zval_get_tmp_string(varname, &tmp_name);
- }
-
- retval = zend_std_get_static_property(ce, name, type == BP_VAR_IS);
-
- if (IS_CV != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
-
- if (IS_CV == IS_CONST && EXPECTED(retval)) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value, ce, retval);
- }
-
- } while (0);
-
- if (UNEXPECTED(retval == NULL)) {
+ if (UNEXPECTED(zend_fetch_static_property_address(&prop, NULL, opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS, type, opline->extended_value & ZEND_FETCH_OBJ_FLAGS OPLINE_CC EXECUTE_DATA_CC) != SUCCESS)) {
if (EG(exception)) {
ZVAL_UNDEF(EX_VAR(opline->result.var));
HANDLE_EXCEPTION();
} else {
ZEND_ASSERT(type == BP_VAR_IS);
- retval = &EG(uninitialized_zval);
+ prop = &EG(uninitialized_zval);
}
}
if (type == BP_VAR_R || type == BP_VAR_IS) {
- ZVAL_COPY_DEREF(EX_VAR(opline->result.var), retval);
+ ZVAL_COPY_DEREF(EX_VAR(opline->result.var), prop);
} else {
- ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ ZVAL_INDIRECT(EX_VAR(opline->result.var), prop);
}
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
}
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = RT_CONSTANT((opline+1), (opline+1)->op1);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *prop, *value;
+ zend_property_info *prop_info;
+ zval tmp;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(prop_info->type)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(prop, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+ value = zend_assign_to_variable(prop, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+
+ /* assign_static_prop has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = EX_VAR(opline->op1.var);
+ orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = RT_CONSTANT((opline+1), (opline+1)->op1);
- value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = EX_VAR(opline->op1.var);
+ orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
zval_ptr_dtor_nogc(free_op_data);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = EX_VAR(opline->op1.var);
+ orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_VAR, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
zval_ptr_dtor_nogc(free_op_data);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = EX_VAR(opline->op1.var);
+ orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_CV);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
ZEND_VM_NEXT_OPCODE_EX(1, 2);
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *prop, *value_ptr;
+ zend_property_info *prop_info;
+
+ SAVE_OPLINE();
+
+ if (zend_fetch_static_property_address(&prop, &prop_info, opline->extended_value & ~ZEND_RETURNS_FUNCTION, BP_VAR_W, 0 OPLINE_CC EXECUTE_DATA_CC) != SUCCESS) {
+ FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ value_ptr = get_zval_ptr_ptr((opline+1)->op1_type, (opline+1)->op1, &free_op_data, BP_VAR_W);
+
+ if ((opline+1)->op1_type == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ prop = &EG(uninitialized_zval);
+ } else if ((opline+1)->op1_type == IS_VAR && (opline->extended_value & ZEND_RETURNS_FUNCTION) && UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(prop, value_ptr, IS_UNUSED OPLINE_CC EXECUTE_DATA_CC))) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ if (UNEXPECTED(prop_info->type)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+ if (UNEXPECTED(Z_REFCOUNTED_P(prop)) && Z_ISREF_P(prop)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+ }
+ }
+ zend_assign_to_variable_reference(prop, value_ptr);
+ if (prop_info->type) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(prop), prop_info);
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), prop);
+ }
+
+ if (free_op_data) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
zval *value;
int result;
- zval *varname;
- zend_string *name, *tmp_name;
- zend_class_entry *ce;
-
SAVE_OPLINE();
- if (IS_UNUSED == IS_CONST) {
- if (IS_CV == IS_CONST && EXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) != NULL)) {
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- } else if (UNEXPECTED((ce = CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY)) == NULL)) {
- ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op2)), Z_STR_P(RT_CONSTANT(opline, opline->op2) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- if (IS_CV != IS_CONST) {
- CACHE_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce);
- }
- }
- } else {
- if (IS_UNUSED == IS_UNUSED) {
- ce = zend_fetch_class(NULL, opline->op2.num);
- if (UNEXPECTED(ce == NULL)) {
- ZEND_ASSERT(EG(exception));
-
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
- }
- } else {
- ce = Z_CE_P(EX_VAR(opline->op2.var));
- }
- if (IS_CV == IS_CONST &&
- EXPECTED(CACHED_PTR(opline->extended_value & ~ZEND_ISEMPTY) == ce)) {
-
- value = CACHED_PTR((opline->extended_value & ~ZEND_ISEMPTY) + sizeof(void*));
- goto is_static_prop_return;
- }
- }
-
- varname = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
- if (IS_CV == IS_CONST) {
- name = Z_STR_P(varname);
- } else {
- name = zval_get_tmp_string(varname, &tmp_name);
- }
- value = zend_std_get_static_property(ce, name, 1);
+ result = zend_fetch_static_property_address(&value, NULL, opline->extended_value & ~ZEND_ISEMPTY, BP_VAR_IS, 0 OPLINE_CC EXECUTE_DATA_CC);
- if (IS_CV == IS_CONST && value) {
- CACHE_POLYMORPHIC_PTR(opline->extended_value & ~ZEND_ISEMPTY, ce, value);
- }
-
- if (IS_CV != IS_CONST) {
- zend_tmp_string_release(tmp_name);
- }
-
-is_static_prop_return:
if (!(opline->extended_value & ZEND_ISEMPTY)) {
- result = value && Z_TYPE_P(value) > IS_NULL &&
+ result = result == SUCCESS && Z_TYPE_P(value) > IS_NULL &&
(!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else {
- result = !value || !i_zend_is_true(value);
+ result = result != SUCCESS || !i_zend_is_true(value);
}
ZEND_VM_SMART_BRANCH(result, 1);
GC_SET_REFCOUNT(ref, 2);
GC_TYPE_INFO(ref) = IS_REFERENCE;
ZVAL_COPY_VALUE(&ref->val, value);
+ ref->sources.ptr = NULL;
Z_REF_P(value) = ref;
Z_TYPE_INFO_P(value) = IS_REFERENCE_EX;
ZVAL_REF(variable_ptr, ref);
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
USE_OPLINE
- zend_free_op free_op_data1;
+ zend_free_op free_op_data;
zval *object;
zval *property;
zval *value;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
do {
- value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
+ value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data);
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_op_object;
- }
+ goto assign_op_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
assign_op_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- ZVAL_DEREF(zptr);
+ zval *orig_zptr = zptr;
+ zend_reference *ref;
+ zend_bool is_typed_ref = 0;
+
+ if (UNEXPECTED(Z_ISREF_P(zptr))) {
+ ref = Z_REF_P(zptr);
+ is_typed_ref = ZEND_REF_HAS_TYPE_SOURCES(ref);
+ zptr = Z_REFVAL_P(zptr);
+ }
+
+ if (IS_CV == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), orig_zptr);
+ }
+ if (UNEXPECTED(prop_info || is_typed_ref)) {
+ /* special case for typed properties */
+ zval z_copy;
+
+ binary_op(&z_copy, zptr, value);
+ if (EXPECTED(is_typed_ref ? zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()) : zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(zptr);
+ ZVAL_COPY_VALUE(zptr, &z_copy);
+ } else {
+ zval_ptr_dtor(&z_copy);
+ }
+ } else {
+ binary_op(zptr, zptr, value);
+ }
- binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
}
} else {
- zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
+ zend_assign_op_overloaded_property(object, property, cache_slot, value, binary_op OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
- FREE_OP(free_op_data1);
+ FREE_OP(free_op_data);
/* assign_obj has two opcodes! */
if (UNEXPECTED(!var_ptr)) {
goto assign_dim_op_ret_null;
}
- ZVAL_DEREF(var_ptr);
}
value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
- binary_op(var_ptr, var_ptr, value);
+ if (IS_CV != IS_UNUSED && UNEXPECTED(Z_ISREF_P(var_ptr))) {
+ zend_reference *ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval tmp;
+ binary_op(&tmp, var_ptr, value);
+ if (EXPECTED(zend_verify_ref_assignable_zval(ref, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &tmp);
+ } else {
+ zval_ptr_dtor(&tmp);
+
+ FREE_OP(free_op_data1);
+
+ HANDLE_EXCEPTION();
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- ZVAL_DEREF(var_ptr);
+ zend_reference *ref = NULL;
+ if (UNEXPECTED(Z_TYPE_P(var_ptr) == IS_REFERENCE)) {
+ ref = Z_REF_P(var_ptr);
+ var_ptr = Z_REFVAL_P(var_ptr);
+ }
- binary_op(var_ptr, var_ptr, value);
+ if (UNEXPECTED(ref && ZEND_REF_HAS_TYPE_SOURCES(ref))) {
+ zval tmp;
+ binary_op(&tmp, var_ptr, value);
+
+ if (UNEXPECTED(zend_verify_ref_assignable_zval(ref, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(var_ptr);
+ ZVAL_COPY_VALUE(var_ptr, &tmp);
+ } else {
+ zval_ptr_dtor(&tmp);
+ }
+ } else {
+ binary_op(var_ptr, var_ptr, value);
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && IS_CV == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CV == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_CV != IS_UNUSED
# if 0
if (EXPECTED(0)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || IS_CV == IS_CONST || IS_CV == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CV_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && IS_CV == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CV == IS_UNUSED)
+ if (EXPECTED(1)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_CV != IS_UNUSED
# if 0
if (EXPECTED(1)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || IS_CV == IS_CONST || IS_CV == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
{
-#if 1 && IS_CV == IS_UNUSED
- ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#if 1 && (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR)
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+#elif 1 && (IS_CV == IS_UNUSED)
+ if (EXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
#else
# if 0 || IS_CV != IS_UNUSED
# if 0
if (EXPECTED(0)) {
ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
+# if 0 || IS_CV == IS_CONST || IS_CV == (IS_TMP_VAR|IS_VAR)
+ if (UNEXPECTED(0)) {
+ ZEND_VM_TAIL_CALL(zend_binary_assign_op_static_prop_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
+ }
+# endif
# endif
ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
do {
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto pre_incdec_object;
- }
+ goto pre_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
pre_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if (IS_CV == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
-
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
- }
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+ zend_pre_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_pre_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
zval *object;
zval *property;
zval *zptr;
+ void **cache_slot;
+ zend_property_info *prop_info;
SAVE_OPLINE();
object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
do {
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto post_incdec_object;
- }
+ goto post_incdec_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
break;
}
}
- /* here we are sure we are dealing with an object */
post_incdec_object:
- if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL))) != NULL)) {
+ /* here we are sure we are dealing with an object */
+ cache_slot = (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL;
+ if (EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, cache_slot)) != NULL)) {
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
ZVAL_NULL(EX_VAR(opline->result.var));
} else {
- if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
- ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(zptr));
- if (inc) {
- fast_long_increment_function(zptr);
- } else {
- fast_long_decrement_function(zptr);
- }
+ if (IS_CV == IS_CONST) {
+ prop_info = (zend_property_info*)CACHED_PTR_EX(cache_slot + 2);
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY(EX_VAR(opline->result.var), zptr);
- if (inc) {
- increment_function(zptr);
- } else {
- decrement_function(zptr);
- }
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), zptr);
}
+
+ zend_post_incdec_property_zval(zptr, prop_info, inc OPLINE_CC EXECUTE_DATA_CC);
}
} else {
- zend_post_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
+ zend_post_incdec_overloaded_property(object, property, cache_slot, inc OPLINE_CC EXECUTE_DATA_CC);
}
} while (0);
zval *retval;
if (IS_CV == IS_CONST) {
- cache_slot = CACHE_ADDR(opline->extended_value);
+ cache_slot = CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_REF /* FUNC_ARG fetch may contain it */);
if (EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) {
uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_W OPLINE_CC);
+ zend_fetch_property_address(
+ result, container, IS_CV, property, IS_CV,
+ ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) : NULL),
+ BP_VAR_W, opline->extended_value & ZEND_FETCH_OBJ_FLAGS, 1 OPLINE_CC);
if (IS_CV == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
}
property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_RW, 0, 1 OPLINE_CC);
if (IS_CV == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
ZEND_VM_TAIL_CALL(zend_use_tmp_in_write_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
-
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else {
ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
result = EX_VAR(opline->result.var);
- zend_fetch_property_address(result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET OPLINE_CC);
+ zend_fetch_property_address(result, container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), BP_VAR_UNSET, 0, 1 OPLINE_CC);
if (IS_CV == IS_VAR) {
FREE_VAR_PTR_AND_EXTRACT_RESULT_IF_NECESSARY(free_op1, result);
value = RT_CONSTANT((opline+1), (opline+1)->op1);
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
goto exit_assign_obj;
}
assign_object:
if (IS_CV == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
-fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CONST);
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
- }
- goto exit_assign_obj;
- }
- } else {
- if (EXPECTED(zobj->properties != NULL)) {
- if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
- if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
- GC_DELREF(zobj->properties);
- }
- zobj->properties = zend_array_dup(zobj->properties);
- }
- property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
- if (property_val) {
- goto fast_assign_obj;
- }
- }
-
- if (!zobj->ce->__set) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
- if (EXPECTED(zobj->properties == NULL)) {
- rebuild_object_properties(zobj);
- }
- if (IS_CONST == IS_CONST) {
- if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
- Z_ADDREF_P(value);
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CONST & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
}
- } else if (IS_CONST != IS_TMP_VAR) {
- if (Z_ISREF_P(value)) {
- if (IS_CONST == IS_VAR) {
- zend_reference *ref = Z_REF_P(value);
- if (GC_DELREF(ref) == 0) {
- ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
- efree_size(ref, sizeof(zend_reference));
- value = &tmp;
- } else {
- value = Z_REFVAL_P(value);
- Z_TRY_ADDREF_P(value);
- }
- } else {
- value = Z_REFVAL_P(value);
- Z_TRY_ADDREF_P(value);
- }
- } else if (IS_CONST == IS_CV) {
- Z_TRY_ADDREF_P(value);
+ if (((IS_CONST & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
}
- }
- zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
- }
- goto exit_assign_obj;
- }
- }
- }
-
- if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
- ZVAL_DEREF(value);
- }
-
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
-
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
- }
-
-exit_assign_obj:
-
-
- /* assign_obj has two opcodes! */
- ZEND_VM_NEXT_OPCODE_EX(1, 2);
-}
-
-static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
- USE_OPLINE
- zend_free_op free_op_data;
- zval *object, *property, *value, tmp;
-
- SAVE_OPLINE();
- object = EX_VAR(opline->op1.var);
-
- if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
- ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
- }
-
- property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
- value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-
- if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
- object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
- }
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
- zval_ptr_dtor_nogc(free_op_data);
- goto exit_assign_obj;
- }
- }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CONST & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
-assign_object:
- if (IS_CV == IS_CONST &&
- EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
- zend_object *zobj = Z_OBJ_P(object);
- zval *property_val;
- if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
- property_val = OBJ_PROP(zobj, prop_offset);
- if (Z_TYPE_P(property_val) != IS_UNDEF) {
-fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
- }
- goto exit_assign_obj;
- }
- } else {
- if (EXPECTED(zobj->properties != NULL)) {
- if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
- if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
- GC_DELREF(zobj->properties);
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
}
- zobj->properties = zend_array_dup(zobj->properties);
- }
- property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
- if (property_val) {
- goto fast_assign_obj;
- }
- }
-
- if (!zobj->ce->__set) {
- if (EXPECTED(zobj->properties == NULL)) {
- rebuild_object_properties(zobj);
- }
- if (IS_TMP_VAR == IS_CONST) {
- if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
- Z_ADDREF_P(value);
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CONST == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
}
- } else if (IS_TMP_VAR != IS_TMP_VAR) {
- if (Z_ISREF_P(value)) {
- if (IS_TMP_VAR == IS_VAR) {
- zend_reference *ref = Z_REF_P(value);
- if (GC_DELREF(ref) == 0) {
- ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
- efree_size(ref, sizeof(zend_reference));
- value = &tmp;
- } else {
- value = Z_REFVAL_P(value);
- Z_TRY_ADDREF_P(value);
- }
- } else {
- value = Z_REFVAL_P(value);
- Z_TRY_ADDREF_P(value);
- }
- } else if (IS_TMP_VAR == IS_CV) {
- Z_TRY_ADDREF_P(value);
- }
- }
- zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
- }
- goto exit_assign_obj;
- }
- }
- }
- if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
- ZVAL_DEREF(value);
- }
-
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
-
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
- }
- zval_ptr_dtor_nogc(free_op_data);
-exit_assign_obj:
-
-
- /* assign_obj has two opcodes! */
- ZEND_VM_NEXT_OPCODE_EX(1, 2);
-}
-
-static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
- USE_OPLINE
- zend_free_op free_op_data;
- zval *object, *property, *value, tmp;
-
- SAVE_OPLINE();
- object = EX_VAR(opline->op1.var);
-
- if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
- ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
- }
-
- property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
- value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-
- if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
- object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
- }
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
- zval_ptr_dtor_nogc(free_op_data);
- goto exit_assign_obj;
- }
- }
-
-assign_object:
- if (IS_CV == IS_CONST &&
- EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
- zend_object *zobj = Z_OBJ_P(object);
- zval *property_val;
+ value = &tmp;
+ if ((IS_CONST & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
- if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
- property_val = OBJ_PROP(zobj, prop_offset);
- if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_VAR);
+ value = zend_assign_to_variable(property_val, value, IS_CONST, EX_USES_STRICT_TYPES());
+ }
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+ goto exit_assign_obj;
+ }
+ } else {
+ if (EXPECTED(zobj->properties != NULL)) {
+ if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
+ if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
+ GC_DELREF(zobj->properties);
+ }
+ zobj->properties = zend_array_dup(zobj->properties);
+ }
+ property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
+ if (property_val) {
+ goto fast_assign_obj;
+ }
+ }
+
+ if (!zobj->ce->__set) {
+
+ if (EXPECTED(zobj->properties == NULL)) {
+ rebuild_object_properties(zobj);
+ }
+ if (IS_CONST == IS_CONST) {
+ if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
+ Z_ADDREF_P(value);
+ }
+ } else if (IS_CONST != IS_TMP_VAR) {
+ if (Z_ISREF_P(value)) {
+ if (IS_CONST == IS_VAR) {
+ zend_reference *ref = Z_REF_P(value);
+ if (GC_DELREF(ref) == 0) {
+ ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
+ efree_size(ref, sizeof(zend_reference));
+ value = &tmp;
+ } else {
+ value = Z_REFVAL_P(value);
+ Z_TRY_ADDREF_P(value);
+ }
+ } else {
+ value = Z_REFVAL_P(value);
+ Z_TRY_ADDREF_P(value);
+ }
+ } else if (IS_CONST == IS_CV) {
+ Z_TRY_ADDREF_P(value);
+ }
+ }
+ zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+ goto exit_assign_obj;
+ }
+ }
+ }
+
+ if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
+ ZVAL_DEREF(value);
+ }
+
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
+ }
+
+exit_assign_obj:
+
+
+ /* assign_obj has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *object, *property, *value, tmp;
+
+ SAVE_OPLINE();
+ object = EX_VAR(opline->op1.var);
+
+ if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
+ value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
+ object = Z_REFVAL_P(object);
+ goto assign_object;
+ }
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
+ zval_ptr_dtor_nogc(free_op_data);
+ goto exit_assign_obj;
+ }
+ }
+
+assign_object:
+ if (IS_CV == IS_CONST &&
+ EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
+ zend_object *zobj = Z_OBJ_P(object);
+ zval *property_val;
+
+ if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
+ property_val = OBJ_PROP(zobj, prop_offset);
+ if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_TMP_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_TMP_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_TMP_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_TMP_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+fast_assign_obj:
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ }
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+ goto exit_assign_obj;
+ }
+ } else {
+ if (EXPECTED(zobj->properties != NULL)) {
+ if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
+ if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
+ GC_DELREF(zobj->properties);
+ }
+ zobj->properties = zend_array_dup(zobj->properties);
+ }
+ property_val = zend_hash_find_ex(zobj->properties, Z_STR_P(property), 1);
+ if (property_val) {
+ goto fast_assign_obj;
+ }
+ }
+
+ if (!zobj->ce->__set) {
+
+ if (EXPECTED(zobj->properties == NULL)) {
+ rebuild_object_properties(zobj);
+ }
+ if (IS_TMP_VAR == IS_CONST) {
+ if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
+ Z_ADDREF_P(value);
+ }
+ } else if (IS_TMP_VAR != IS_TMP_VAR) {
+ if (Z_ISREF_P(value)) {
+ if (IS_TMP_VAR == IS_VAR) {
+ zend_reference *ref = Z_REF_P(value);
+ if (GC_DELREF(ref) == 0) {
+ ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
+ efree_size(ref, sizeof(zend_reference));
+ value = &tmp;
+ } else {
+ value = Z_REFVAL_P(value);
+ Z_TRY_ADDREF_P(value);
+ }
+ } else {
+ value = Z_REFVAL_P(value);
+ Z_TRY_ADDREF_P(value);
+ }
+ } else if (IS_TMP_VAR == IS_CV) {
+ Z_TRY_ADDREF_P(value);
+ }
+ }
+ zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), value);
+ }
+ goto exit_assign_obj;
+ }
+ }
+ }
+
+ if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
+ ZVAL_DEREF(value);
+ }
+
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
+ }
+ zval_ptr_dtor_nogc(free_op_data);
+exit_assign_obj:
+
+
+ /* assign_obj has two opcodes! */
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *object, *property, *value, tmp;
+
+ SAVE_OPLINE();
+ object = EX_VAR(opline->op1.var);
+
+ if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
+ value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
+ object = Z_REFVAL_P(object);
+ goto assign_object;
+ }
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
+ zval_ptr_dtor_nogc(free_op_data);
+ goto exit_assign_obj;
+ }
+ }
+
+assign_object:
+ if (IS_CV == IS_CONST &&
+ EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
+ zend_object *zobj = Z_OBJ_P(object);
+ zval *property_val;
+
+ if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
+ property_val = OBJ_PROP(zobj, prop_offset);
+ if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_VAR & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_VAR & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_VAR & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_VAR == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_VAR & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
+fast_assign_obj:
+ value = zend_assign_to_variable(property_val, value, IS_VAR, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
zval_ptr_dtor_nogc(free_op_data);
exit_assign_obj:
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
- if (Z_ISREF_P(object)) {
+ if (Z_ISREF_P(object) && Z_TYPE_P(Z_REFVAL_P(object)) == IS_OBJECT) {
object = Z_REFVAL_P(object);
- if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
- goto assign_object;
- }
+ goto assign_object;
}
- if (UNEXPECTED(!make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC))) {
+ object = make_real_object(object, property OPLINE_CC EXECUTE_DATA_CC);
+ if (UNEXPECTED(!object)) {
goto exit_assign_obj;
}
assign_object:
if (IS_CV == IS_CONST &&
EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(opline->extended_value))) {
- uintptr_t prop_offset = (uintptr_t)CACHED_PTR(opline->extended_value + sizeof(void*));
+ void **cache_slot = CACHE_ADDR(opline->extended_value);
+ uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1);
zend_object *zobj = Z_OBJ_P(object);
zval *property_val;
if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) {
property_val = OBJ_PROP(zobj, prop_offset);
if (Z_TYPE_P(property_val) != IS_UNDEF) {
+ zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
+ zval tmp;
+
+ if (UNEXPECTED(prop_info != NULL)) {
+ zend_reference *ref = NULL;
+ if ((IS_CV & (IS_CV|IS_VAR)) && UNEXPECTED(Z_ISREF_P(value))) {
+ ref = Z_REF_P(value);
+ value = Z_REFVAL_P(value);
+ }
+ if (((IS_CV & (IS_CONST|IS_CV)) || (ref && GC_REFCOUNT(ref) > 1))) {
+ ZVAL_COPY(&tmp, value);
+ } else {
+ ZVAL_COPY_VALUE(&tmp, value);
+ }
+ if (UNEXPECTED(!i_zend_verify_property_type(prop_info, &tmp, EX_USES_STRICT_TYPES()))) {
+ zval_ptr_dtor(value);
+ if ((IS_CV & IS_VAR) && ref && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* will remain valid, thus no need to check prop_info in future here */
+ if (IS_CV == IS_CONST && Z_TYPE(tmp) == Z_TYPE_P(value)) {
+ CACHE_PTR_EX(cache_slot + 2, NULL);
+ }
+
+ value = &tmp;
+ if ((IS_CV & IS_VAR) && UNEXPECTED(ref) && GC_DELREF(ref) == 0) {
+ efree(ref);
+ }
+
+ value = zend_assign_to_variable(property_val, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
+ } else {
fast_assign_obj:
- value = zend_assign_to_variable(property_val, value, IS_CV);
+ value = zend_assign_to_variable(property_val, value, IS_CV, EX_USES_STRICT_TYPES());
+ }
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_DEREF(value);
}
- Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
+ property = Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
- ZVAL_COPY(EX_VAR(opline->result.var), value);
+ ZVAL_COPY(EX_VAR(opline->result.var), property);
}
exit_assign_obj:
{
USE_OPLINE
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = EX_VAR(opline->op1.var);
+ orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = RT_CONSTANT((opline+1), (opline+1)->op1);
- value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = EX_VAR(opline->op1.var);
+ orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
zval_ptr_dtor_nogc(free_op_data);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = EX_VAR(opline->op1.var);
+ orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
+ value = zend_assign_to_variable(variable_ptr, value, IS_VAR, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
zval_ptr_dtor_nogc(free_op_data);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+ zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
{
USE_OPLINE
- zval *object_ptr;
+ zval *object_ptr, *orig_object_ptr;
zend_free_op free_op_data;
zval *value;
zval *variable_ptr;
zval *dim;
SAVE_OPLINE();
- object_ptr = EX_VAR(opline->op1.var);
+ orig_object_ptr = object_ptr = EX_VAR(opline->op1.var);
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
try_assign_dim_array:
goto assign_dim_error;
}
value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
- value = zend_assign_to_variable(variable_ptr, value, IS_CV);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
}
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
+ zend_property_info *error_prop;
+ if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) {
+ zend_throw_auto_init_in_ref_error(error_prop, "array");
+
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
ZVAL_ARR(object_ptr, zend_new_array(8));
goto try_assign_dim_array;
} else {
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- value = zend_assign_to_variable(variable_ptr, value, IS_CV);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
if (UNEXPECTED(0)) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
ZVAL_NULL(EX_VAR(opline->result.var));
}
} else {
- value = zend_assign_to_variable(variable_ptr, value, IS_CV);
+ value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES());
if (UNEXPECTED(1)) {
ZVAL_COPY(EX_VAR(opline->result.var), value);
}
} else if (IS_CV == IS_VAR &&
UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
- zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+ zend_throw_error(NULL, "Cannot assign by reference to an array dimension of an object");
UNDEF_RESULT();
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op_data;
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = EX_VAR(opline->op1.var);
+
+ if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
+
+ cache_addr = (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_CV, property, IS_CV, cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_VAR == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, IS_CV OPLINE_CC EXECUTE_DATA_CC))) {
+
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if (IS_CV == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+
+ if (UNEXPECTED(free_op_data)) {zval_ptr_dtor_nogc(free_op_data);};
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *property;
+ zval *container;
+ zval variable, *variable_ptr = &variable;
+ zval *value_ptr;
+ void **cache_addr;
+
+ SAVE_OPLINE();
+
+ container = EX_VAR(opline->op1.var);
+
+ if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
+ ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ }
+
+ property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
+
+ cache_addr = (IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value & ~ZEND_RETURNS_FUNCTION) : NULL;
+
+ zend_fetch_property_address(variable_ptr, container, IS_CV, property, IS_CV, cache_addr, BP_VAR_W, 0, 0 OPLINE_CC);
+ if (Z_TYPE_P(variable_ptr) == IS_INDIRECT) {
+ variable_ptr = Z_INDIRECT_P(variable_ptr);
+ }
+
+ value_ptr = _get_zval_ptr_cv_BP_VAR_W((opline+1)->op1.var EXECUTE_DATA_CC);
+
+ if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
+ zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ } else if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
+ variable_ptr = &EG(uninitialized_zval);
+ } else if (IS_CV == IS_VAR &&
+ opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ UNEXPECTED(!Z_ISREF_P(value_ptr))) {
+
+ if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(
+ Z_INDIRECT_P(variable_ptr), value_ptr, IS_CV OPLINE_CC EXECUTE_DATA_CC))) {
+
+
+
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+ }
+
+ /* op_data freed by assign_to_variable */
+
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+ } else {
+ zend_property_info *prop_info = NULL;
+
+ if (IS_CV == IS_CONST) {
+ prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
+ } else {
+ prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
+ }
+
+ if (UNEXPECTED(prop_info)) {
+ if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
+
+
+
+ HANDLE_EXCEPTION();
+ }
+
+ if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
+ ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
+ if (prop_info) {
+ ZEND_REF_ADD_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
+ }
+ }
+
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
+ }
+
+
+
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_ADD_SPEC_CONST_CONST_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_ADD_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_ADD_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_ADD_SPEC_CONST_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_ADD_SPEC_TMP_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_ADD_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_ADD_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_ADD_SPEC_TMP_UNUSED_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CONST_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CV_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_UNUSED_CONST_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_OBJ_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CV_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SUB_SPEC_CONST_CONST_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SUB_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SUB_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SUB_SPEC_CONST_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SUB_SPEC_TMP_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SUB_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SUB_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SUB_SPEC_TMP_UNUSED_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CONST_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CV_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_UNUSED_CONST_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_UNUSED_CV_OBJ_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CV_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MUL_SPEC_CONST_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MUL_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MUL_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MUL_SPEC_CONST_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MUL_SPEC_TMP_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MUL_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MUL_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MUL_SPEC_TMP_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CONST_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CV_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_UNUSED_CONST_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_UNUSED_CV_OBJ_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CV_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_DIV_SPEC_CONST_CONST_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_DIV_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_DIV_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_DIV_SPEC_CONST_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_DIV_SPEC_TMP_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_DIV_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_DIV_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_DIV_SPEC_TMP_UNUSED_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CONST_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CV_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_UNUSED_CONST_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_UNUSED_CV_OBJ_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CV_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MOD_SPEC_CONST_CONST_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MOD_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MOD_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MOD_SPEC_CONST_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MOD_SPEC_TMP_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MOD_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MOD_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MOD_SPEC_TMP_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CONST_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CV_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_OBJ_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CV_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SL_SPEC_CONST_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SL_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SL_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SL_SPEC_CONST_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SL_SPEC_TMP_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SL_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SL_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SL_SPEC_TMP_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CONST_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CV_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_UNUSED_CONST_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_UNUSED_CV_OBJ_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SL_SPEC_CV_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SL_SPEC_CV_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CV_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SR_SPEC_CONST_CONST_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SR_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SR_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SR_SPEC_CONST_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SR_SPEC_TMP_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SR_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SR_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SR_SPEC_TMP_UNUSED_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CONST_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CV_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_UNUSED_CONST_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_UNUSED_CV_OBJ_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SR_SPEC_CV_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_SR_SPEC_CV_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CV_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_CONCAT_SPEC_CONST_CONST_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_CONCAT_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_CONCAT_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_CONCAT_SPEC_CONST_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_CONCAT_SPEC_TMP_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_CONCAT_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_CONCAT_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_CONCAT_SPEC_TMP_UNUSED_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CONST_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CV_OBJ_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CV_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_OR_SPEC_CONST_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_OR_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_OR_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_OR_SPEC_CONST_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_OR_SPEC_TMP_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_OR_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_OR_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_OR_SPEC_TMP_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CONST_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CV_OBJ_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CV_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_AND_SPEC_CONST_CONST_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_AND_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_AND_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_AND_SPEC_CONST_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_AND_SPEC_TMP_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_AND_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_AND_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_AND_SPEC_TMP_UNUSED_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CONST_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CV_OBJ_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CV_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CONST_CONST_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CONST_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_XOR_SPEC_TMP_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_XOR_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_XOR_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_XOR_SPEC_TMP_UNUSED_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CONST_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CV_OBJ_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_STATIC_PROP_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_DIM_LABEL,
(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED_LABEL,
(void*)&&ZEND_PRE_INC_SPEC_VAR_RETVAL_USED_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CONST_CONST_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CONST_TMPVAR_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CONST_UNUSED_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_TMP_CONST_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_TMP_TMPVAR_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_TMP_UNUSED_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CONST_DIM_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CONST_STATIC_PROP_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_STATIC_PROP_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CV_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CV_DIM_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CV_OBJ_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_OBJ_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_UNUSED_CV_OBJ_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CV_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CV_CONST_DIM_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CV_CONST_STATIC_PROP_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_STATIC_PROP_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CV_UNUSED_STATIC_PROP_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CV_CV_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CV_CV_DIM_LABEL,
+ (void*)&&ZEND_ASSIGN_POW_SPEC_CV_CV_OBJ_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_BIND_GLOBAL_SPEC_CV_CONST_LABEL,
+ (void*)&&ZEND_COALESCE_SPEC_CONST_LABEL,
+ (void*)&&ZEND_COALESCE_SPEC_TMPVAR_LABEL,
+ (void*)&&ZEND_COALESCE_SPEC_TMPVAR_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_COALESCE_SPEC_CV_LABEL,
+ (void*)&&ZEND_SPACESHIP_SPEC_CONST_CONST_LABEL,
+ (void*)&&ZEND_SPACESHIP_SPEC_CONST_TMPVAR_LABEL,
+ (void*)&&ZEND_SPACESHIP_SPEC_CONST_TMPVAR_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_SPACESHIP_SPEC_CONST_CV_LABEL,
+ (void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_LABEL,
+ (void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_CV_LABEL,
+ (void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_LABEL,
+ (void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_CV_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_SPACESHIP_SPEC_CV_CONST_LABEL,
+ (void*)&&ZEND_SPACESHIP_SPEC_CV_TMPVAR_LABEL,
+ (void*)&&ZEND_SPACESHIP_SPEC_CV_TMPVAR_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_SPACESHIP_SPEC_CV_CV_LABEL,
+ (void*)&&ZEND_DECLARE_ANON_CLASS_SPEC_LABEL,
+ (void*)&&ZEND_DECLARE_ANON_INHERITED_CLASS_SPEC_CONST_CONST_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CV_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CV_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CV_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CV_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_VAR_LABEL,
+ (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CONST_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR_LABEL,
+ (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CONST_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CV_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR_LABEL,
+ (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CV_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_VAR_LABEL,
+ (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_VAR_LABEL,
+ (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST_LABEL,
+ (void*)&&ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_BIND_LEXICAL_SPEC_TMP_CV_LABEL,
+ (void*)&&ZEND_BIND_STATIC_SPEC_CV_UNUSED_LABEL,
+ (void*)&&ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED_LABEL,
+ (void*)&&ZEND_SEND_FUNC_ARG_SPEC_VAR_LABEL,
+ (void*)&&ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED_LABEL,
+ (void*)&&ZEND_SWITCH_LONG_SPEC_CONST_CONST_LABEL,
+ (void*)&&ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_LABEL,
+ (void*)&&ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_LABEL,
+ (void*)&&ZEND_SWITCH_STRING_SPEC_CONST_CONST_LABEL,
+ (void*)&&ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_LABEL,
+ (void*)&&ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_LABEL,
+ (void*)&&ZEND_IN_ARRAY_SPEC_CONST_CONST_LABEL,
+ (void*)&&ZEND_IN_ARRAY_SPEC_TMP_CONST_LABEL,
+ (void*)&&ZEND_IN_ARRAY_SPEC_VAR_CONST_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_IN_ARRAY_SPEC_CV_CONST_LABEL,
+ (void*)&&ZEND_COUNT_SPEC_CONST_UNUSED_LABEL,
+ (void*)&&ZEND_COUNT_SPEC_TMP_UNUSED_LABEL,
+ (void*)&&ZEND_COUNT_SPEC_VAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_COUNT_SPEC_CV_UNUSED_LABEL,
+ (void*)&&ZEND_GET_CLASS_SPEC_CONST_UNUSED_LABEL,
+ (void*)&&ZEND_GET_CLASS_SPEC_TMP_UNUSED_LABEL,
+ (void*)&&ZEND_GET_CLASS_SPEC_VAR_UNUSED_LABEL,
+ (void*)&&ZEND_GET_CLASS_SPEC_UNUSED_UNUSED_LABEL,
+ (void*)&&ZEND_GET_CLASS_SPEC_CV_UNUSED_LABEL,
+ (void*)&&ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED_LABEL,
+ (void*)&&ZEND_GET_TYPE_SPEC_CONST_UNUSED_LABEL,
+ (void*)&&ZEND_GET_TYPE_SPEC_TMP_UNUSED_LABEL,
+ (void*)&&ZEND_GET_TYPE_SPEC_VAR_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_GET_TYPE_SPEC_CV_UNUSED_LABEL,
+ (void*)&&ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED_LABEL,
+ (void*)&&ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_UNSET_CV_SPEC_CV_UNUSED_LABEL,
+ (void*)&&ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_SET_LABEL,
+ (void*)&&ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_EMPTY_LABEL,
+ (void*)&&ZEND_FETCH_LIST_W_SPEC_VAR_CONST_LABEL,
+ (void*)&&ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR_LABEL,
+ (void*)&&ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_FETCH_LIST_W_SPEC_VAR_CV_LABEL,
+ (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CONST_LABEL,
+ (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_TMPVAR_LABEL,
+ (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_TMPVAR_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CV_LABEL,
+ (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR_LABEL,
+ (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CV_LABEL,
+ (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR_LABEL,
+ (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CV_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CONST_LABEL,
+ (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_CV_TMPVAR_LABEL,
+ (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_CV_TMPVAR_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CV_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_VAR_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_CV_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_VAR_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_CV_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_VAR_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_CV_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_VAR_LABEL,
+ (void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CONST_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CONST_DIM_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CV_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CV_DIM_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CV_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_OBJ_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_CV_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_TMP_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_UNUSED_CV_OBJ_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_CV_CONST_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_CV_CONST_DIM_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_TMP_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_CV_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_TMP_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_CV_CV_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_CV_CV_DIM_LABEL,
- (void*)&&ZEND_ASSIGN_POW_SPEC_CV_CV_OBJ_LABEL,
- (void*)&&ZEND_BIND_GLOBAL_SPEC_CV_CONST_LABEL,
- (void*)&&ZEND_COALESCE_SPEC_CONST_LABEL,
- (void*)&&ZEND_COALESCE_SPEC_TMPVAR_LABEL,
- (void*)&&ZEND_COALESCE_SPEC_TMPVAR_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_COALESCE_SPEC_CV_LABEL,
- (void*)&&ZEND_SPACESHIP_SPEC_CONST_CONST_LABEL,
- (void*)&&ZEND_SPACESHIP_SPEC_CONST_TMPVAR_LABEL,
- (void*)&&ZEND_SPACESHIP_SPEC_CONST_TMPVAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_SPACESHIP_SPEC_CONST_CV_LABEL,
- (void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_CONST_LABEL,
- (void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_LABEL,
- (void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_CV_LABEL,
- (void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_CONST_LABEL,
- (void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_LABEL,
- (void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_TMP_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_SPACESHIP_SPEC_CV_CONST_LABEL,
- (void*)&&ZEND_SPACESHIP_SPEC_CV_TMPVAR_LABEL,
- (void*)&&ZEND_SPACESHIP_SPEC_CV_TMPVAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_SPACESHIP_SPEC_CV_CV_LABEL,
- (void*)&&ZEND_DECLARE_ANON_CLASS_SPEC_LABEL,
- (void*)&&ZEND_DECLARE_ANON_INHERITED_CLASS_SPEC_CONST_CONST_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_UNUSED_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_TMP_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CV_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_TMP_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_TMP_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CV_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_UNUSED_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_TMP_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CV_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_TMP_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CV_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CV_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_TMP_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_TMP_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_UNUSED_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_CV_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_TMP_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_VAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_VAR_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_CONST_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_UNUSED_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_VAR_LABEL,
+ (void*)&&ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_VAR_LABEL,
+ (void*)&&ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_CONST_LABEL,
+ (void*)&&ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_VAR_LABEL,
- (void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_UNUSED_LABEL,
+ (void*)&&ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CONST_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR_LABEL,
- (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CONST_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
- (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
- (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_PRE_INC_STATIC_PROP_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_PRE_INC_STATIC_PROP_SPEC_CV_VAR_LABEL,
+ (void*)&&ZEND_PRE_INC_STATIC_PROP_SPEC_CV_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_VAR_LABEL,
+ (void*)&&ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CV_CONST_LABEL,
+ (void*)&&ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR_LABEL,
- (void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CV_UNUSED_LABEL,
+ (void*)&&ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_VAR_LABEL,
- (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
- (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
- (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
+ (void*)&&ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_VAR_LABEL,
+ (void*)&&ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_POST_INC_STATIC_PROP_SPEC_CONST_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_POST_INC_STATIC_PROP_SPEC_CONST_VAR_LABEL,
+ (void*)&&ZEND_POST_INC_STATIC_PROP_SPEC_CONST_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_CONST_LABEL,
+ (void*)&&ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_VAR_LABEL,
- (void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_UNUSED_LABEL,
+ (void*)&&ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST_LABEL,
- (void*)&&ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_BIND_LEXICAL_SPEC_TMP_CV_LABEL,
- (void*)&&ZEND_BIND_STATIC_SPEC_CV_UNUSED_LABEL,
- (void*)&&ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED_LABEL,
- (void*)&&ZEND_SEND_FUNC_ARG_SPEC_VAR_LABEL,
- (void*)&&ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED_LABEL,
- (void*)&&ZEND_SWITCH_LONG_SPEC_CONST_CONST_LABEL,
- (void*)&&ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_LABEL,
- (void*)&&ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST_LABEL,
- (void*)&&ZEND_SWITCH_STRING_SPEC_CONST_CONST_LABEL,
- (void*)&&ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_LABEL,
- (void*)&&ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST_LABEL,
- (void*)&&ZEND_IN_ARRAY_SPEC_CONST_CONST_LABEL,
- (void*)&&ZEND_IN_ARRAY_SPEC_TMP_CONST_LABEL,
- (void*)&&ZEND_IN_ARRAY_SPEC_VAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_IN_ARRAY_SPEC_CV_CONST_LABEL,
- (void*)&&ZEND_COUNT_SPEC_CONST_UNUSED_LABEL,
- (void*)&&ZEND_COUNT_SPEC_TMP_UNUSED_LABEL,
- (void*)&&ZEND_COUNT_SPEC_VAR_UNUSED_LABEL,
+ (void*)&&ZEND_POST_INC_STATIC_PROP_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_COUNT_SPEC_CV_UNUSED_LABEL,
- (void*)&&ZEND_GET_CLASS_SPEC_CONST_UNUSED_LABEL,
- (void*)&&ZEND_GET_CLASS_SPEC_TMP_UNUSED_LABEL,
- (void*)&&ZEND_GET_CLASS_SPEC_VAR_UNUSED_LABEL,
- (void*)&&ZEND_GET_CLASS_SPEC_UNUSED_UNUSED_LABEL,
- (void*)&&ZEND_GET_CLASS_SPEC_CV_UNUSED_LABEL,
- (void*)&&ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED_LABEL,
- (void*)&&ZEND_GET_TYPE_SPEC_CONST_UNUSED_LABEL,
- (void*)&&ZEND_GET_TYPE_SPEC_TMP_UNUSED_LABEL,
- (void*)&&ZEND_GET_TYPE_SPEC_VAR_UNUSED_LABEL,
+ (void*)&&ZEND_POST_INC_STATIC_PROP_SPEC_CV_VAR_LABEL,
+ (void*)&&ZEND_POST_INC_STATIC_PROP_SPEC_CV_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_GET_TYPE_SPEC_CV_UNUSED_LABEL,
- (void*)&&ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED_LABEL,
- (void*)&&ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED_LABEL,
+ (void*)&&ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_VAR_LABEL,
+ (void*)&&ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED_LABEL,
+ (void*)&&ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_UNSET_CV_SPEC_CV_UNUSED_LABEL,
- (void*)&&ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_SET_LABEL,
- (void*)&&ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_EMPTY_LABEL,
- (void*)&&ZEND_FETCH_LIST_W_SPEC_VAR_CONST_LABEL,
- (void*)&&ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR_LABEL,
- (void*)&&ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR_LABEL,
+ (void*)&&ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_FETCH_LIST_W_SPEC_VAR_CV_LABEL,
- (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CONST_LABEL,
- (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_TMPVAR_LABEL,
- (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_TMPVAR_LABEL,
+ (void*)&&ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CV_LABEL,
- (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CONST_LABEL,
- (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR_LABEL,
- (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR_LABEL,
+ (void*)&&ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
+ (void*)&&ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CV_LABEL,
- (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CONST_LABEL,
- (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR_LABEL,
- (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CV_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
+ (void*)&&ZEND_POST_DEC_STATIC_PROP_SPEC_CV_CONST_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CONST_LABEL,
- (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_CV_TMPVAR_LABEL,
- (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_CV_TMPVAR_LABEL,
+ (void*)&&ZEND_POST_DEC_STATIC_PROP_SPEC_CV_VAR_LABEL,
+ (void*)&&ZEND_POST_DEC_STATIC_PROP_SPEC_CV_UNUSED_LABEL,
(void*)&&ZEND_NULL_LABEL,
- (void*)&&ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CV_LABEL,
(void*)&&ZEND_JMP_FORWARD_SPEC_LABEL,
(void*)&&ZEND_NULL_LABEL,
(void*)&&ZEND_NULL_LABEL,
VM_TRACE(ZEND_BOOL_XOR_SPEC_CONST_CONST)
ZEND_BOOL_XOR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CONST_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CONST_CONST_STATIC_PROP)
+ ZEND_ASSIGN_ADD_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CONST_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CONST_CONST_STATIC_PROP)
+ ZEND_ASSIGN_SUB_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CONST_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CONST_CONST_STATIC_PROP)
+ ZEND_ASSIGN_MUL_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CONST_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CONST_CONST_STATIC_PROP)
+ ZEND_ASSIGN_DIV_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CONST_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CONST_CONST_STATIC_PROP)
+ ZEND_ASSIGN_MOD_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CONST_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SL_SPEC_CONST_CONST_STATIC_PROP)
+ ZEND_ASSIGN_SL_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CONST_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SR_SPEC_CONST_CONST_STATIC_PROP)
+ ZEND_ASSIGN_SR_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CONST_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CONST_CONST_STATIC_PROP)
+ ZEND_ASSIGN_CONCAT_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CONST_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CONST_CONST_STATIC_PROP)
+ ZEND_ASSIGN_BW_OR_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CONST_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CONST_CONST_STATIC_PROP)
+ ZEND_ASSIGN_BW_AND_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CONST_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CONST_CONST_STATIC_PROP)
+ ZEND_ASSIGN_BW_XOR_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CONST_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_POW_SPEC_CONST_CONST_STATIC_PROP)
+ ZEND_ASSIGN_POW_SPEC_CONST_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_CONST):
+ VM_TRACE(ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_CONST)
+ ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_CONST):
+ VM_TRACE(ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_CONST)
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_INC_STATIC_PROP_SPEC_CONST_CONST):
+ VM_TRACE(ZEND_POST_INC_STATIC_PROP_SPEC_CONST_CONST)
+ ZEND_POST_INC_STATIC_PROP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_CONST):
+ VM_TRACE(ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_CONST)
+ ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST):
VM_TRACE(ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST)
ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_FETCH_LIST_R_SPEC_CONST_CONST)
ZEND_FETCH_LIST_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_CONST):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_CONST)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_TMP):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_TMP)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_VAR)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_CV)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_CONST):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_CONST)
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_CONST_CONST):
VM_TRACE(ZEND_FAST_CONCAT_SPEC_CONST_CONST)
ZEND_FAST_CONCAT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_SPACESHIP_SPEC_CONST_TMPVAR)
ZEND_SPACESHIP_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CONST_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CONST_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_ADD_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CONST_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CONST_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_SUB_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CONST_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CONST_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_MUL_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CONST_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CONST_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_DIV_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CONST_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CONST_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_MOD_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CONST_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SL_SPEC_CONST_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_SL_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CONST_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SR_SPEC_CONST_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_SR_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CONST_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CONST_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_CONCAT_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CONST_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CONST_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_BW_OR_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CONST_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CONST_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_BW_AND_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CONST_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CONST_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_BW_XOR_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CONST_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_POW_SPEC_CONST_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_POW_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR):
VM_TRACE(ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR)
ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_YIELD_SPEC_CONST_TMP)
ZEND_YIELD_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_VAR):
+ VM_TRACE(ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_VAR)
+ ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_VAR):
+ VM_TRACE(ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_VAR)
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_INC_STATIC_PROP_SPEC_CONST_VAR):
+ VM_TRACE(ZEND_POST_INC_STATIC_PROP_SPEC_CONST_VAR)
+ ZEND_POST_INC_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_VAR):
+ VM_TRACE(ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_VAR)
+ ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR):
VM_TRACE(ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR)
ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_VAR)
ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_CONST):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_CONST)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_TMP):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_TMP)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_VAR)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_CV)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_VAR):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_VAR)
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR):
VM_TRACE(ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR)
ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_YIELD_SPEC_CONST_VAR)
ZEND_YIELD_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CONST_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CONST_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_ADD_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CONST_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CONST_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_SUB_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CONST_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CONST_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_MUL_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CONST_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CONST_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_DIV_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CONST_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CONST_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_MOD_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CONST_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SL_SPEC_CONST_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_SL_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CONST_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SR_SPEC_CONST_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_SR_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CONST_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CONST_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_CONCAT_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CONST_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CONST_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_BW_OR_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CONST_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CONST_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_BW_AND_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CONST_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CONST_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_BW_XOR_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CONST_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_POW_SPEC_CONST_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_POW_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_UNUSED):
+ VM_TRACE(ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_UNUSED)
+ ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_UNUSED):
+ VM_TRACE(ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_UNUSED)
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_INC_STATIC_PROP_SPEC_CONST_UNUSED):
+ VM_TRACE(ZEND_POST_INC_STATIC_PROP_SPEC_CONST_UNUSED)
+ ZEND_POST_INC_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_UNUSED):
+ VM_TRACE(ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_UNUSED)
+ ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FETCH_R_SPEC_CONST_UNUSED):
VM_TRACE(ZEND_FETCH_R_SPEC_CONST_UNUSED)
ZEND_FETCH_R_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED)
ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_CONST):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_CONST)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_TMP):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_TMP)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_VAR)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_CV)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_UNUSED):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_UNUSED)
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED):
VM_TRACE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED)
ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_BOOL_XOR_SPEC_TMPVAR_CONST)
ZEND_BOOL_XOR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_CONST):
+ VM_TRACE(ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_CONST)
+ ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_CONST):
+ VM_TRACE(ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_CONST)
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_CONST):
+ VM_TRACE(ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_CONST)
+ ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_CONST):
+ VM_TRACE(ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_CONST)
+ ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST):
VM_TRACE(ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST)
ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST)
ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CONST):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CONST)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_TMP):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_TMP)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_VAR)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CV)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_CONST):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_CONST)
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST):
VM_TRACE(ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST)
ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR)
ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_VAR):
+ VM_TRACE(ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_VAR)
+ ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_VAR):
+ VM_TRACE(ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_VAR)
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_VAR):
+ VM_TRACE(ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_VAR)
+ ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_VAR):
+ VM_TRACE(ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_VAR)
+ ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR):
VM_TRACE(ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR)
ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR)
ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CONST):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CONST)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_TMP):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_TMP)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_VAR)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CV)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_VAR):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_VAR)
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR):
VM_TRACE(ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR)
ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_INSTANCEOF_SPEC_TMPVAR_VAR)
ZEND_INSTANCEOF_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED):
+ VM_TRACE(ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED)
+ ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED):
+ VM_TRACE(ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED)
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED):
+ VM_TRACE(ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED)
+ ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED):
+ VM_TRACE(ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED)
+ ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FETCH_R_SPEC_TMPVAR_UNUSED):
VM_TRACE(ZEND_FETCH_R_SPEC_TMPVAR_UNUSED)
ZEND_FETCH_R_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED)
ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CONST):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CONST)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_TMP):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_TMP)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_VAR)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CV)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_UNUSED):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_UNUSED)
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED):
VM_TRACE(ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED)
ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST)
ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_TMP_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_ADD_SPEC_TMP_CONST_STATIC_PROP)
+ ZEND_ASSIGN_ADD_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_TMP_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SUB_SPEC_TMP_CONST_STATIC_PROP)
+ ZEND_ASSIGN_SUB_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_TMP_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MUL_SPEC_TMP_CONST_STATIC_PROP)
+ ZEND_ASSIGN_MUL_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_TMP_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_DIV_SPEC_TMP_CONST_STATIC_PROP)
+ ZEND_ASSIGN_DIV_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_TMP_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MOD_SPEC_TMP_CONST_STATIC_PROP)
+ ZEND_ASSIGN_MOD_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_TMP_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SL_SPEC_TMP_CONST_STATIC_PROP)
+ ZEND_ASSIGN_SL_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_TMP_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SR_SPEC_TMP_CONST_STATIC_PROP)
+ ZEND_ASSIGN_SR_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_TMP_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_TMP_CONST_STATIC_PROP)
+ ZEND_ASSIGN_CONCAT_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_TMP_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_TMP_CONST_STATIC_PROP)
+ ZEND_ASSIGN_BW_OR_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_TMP_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_TMP_CONST_STATIC_PROP)
+ ZEND_ASSIGN_BW_AND_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_TMP_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_TMP_CONST_STATIC_PROP)
+ ZEND_ASSIGN_BW_XOR_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_TMP_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_POW_SPEC_TMP_CONST_STATIC_PROP)
+ ZEND_ASSIGN_POW_SPEC_TMP_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST):
VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST)
ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_IN_ARRAY_SPEC_TMP_CONST)
ZEND_IN_ARRAY_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_TMP_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_ADD_SPEC_TMP_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_ADD_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_TMP_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SUB_SPEC_TMP_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_SUB_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_TMP_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MUL_SPEC_TMP_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_MUL_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_TMP_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_DIV_SPEC_TMP_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_DIV_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_TMP_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MOD_SPEC_TMP_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_MOD_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_TMP_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SL_SPEC_TMP_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_SL_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_TMP_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SR_SPEC_TMP_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_SR_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_TMP_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_TMP_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_CONCAT_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_TMP_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_TMP_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_BW_OR_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_TMP_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_TMP_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_BW_AND_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_TMP_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_TMP_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_BW_XOR_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_TMP_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_POW_SPEC_TMP_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_POW_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR):
VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR)
ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_YIELD_SPEC_TMP_VAR)
ZEND_YIELD_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_TMP_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_ADD_SPEC_TMP_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_ADD_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_TMP_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SUB_SPEC_TMP_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_SUB_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_TMP_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MUL_SPEC_TMP_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_MUL_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_TMP_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_DIV_SPEC_TMP_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_DIV_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_TMP_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MOD_SPEC_TMP_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_MOD_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_TMP_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SL_SPEC_TMP_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_SL_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_TMP_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SR_SPEC_TMP_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_SR_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_TMP_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_TMP_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_CONCAT_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_TMP_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_TMP_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_BW_OR_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_TMP_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_TMP_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_BW_AND_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_TMP_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_TMP_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_BW_XOR_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_TMP_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_POW_SPEC_TMP_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_POW_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED):
VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED)
ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_ADD_SPEC_VAR_CONST_OBJ)
ZEND_ASSIGN_ADD_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_ADD_SPEC_VAR_CONST_STATIC_PROP)
+ ZEND_ASSIGN_ADD_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_CONST):
VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_CONST)
ZEND_ASSIGN_SUB_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_CONST_OBJ)
ZEND_ASSIGN_SUB_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_CONST_STATIC_PROP)
+ ZEND_ASSIGN_SUB_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_CONST):
VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_CONST)
ZEND_ASSIGN_MUL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_CONST_OBJ)
ZEND_ASSIGN_MUL_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_CONST_STATIC_PROP)
+ ZEND_ASSIGN_MUL_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_CONST):
VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_CONST)
ZEND_ASSIGN_DIV_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_CONST_OBJ)
ZEND_ASSIGN_DIV_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_CONST_STATIC_PROP)
+ ZEND_ASSIGN_DIV_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_CONST):
VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_CONST)
ZEND_ASSIGN_MOD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_CONST_OBJ)
ZEND_ASSIGN_MOD_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_CONST_STATIC_PROP)
+ ZEND_ASSIGN_MOD_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_CONST):
VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_CONST)
ZEND_ASSIGN_SL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_CONST_OBJ)
ZEND_ASSIGN_SL_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_CONST_STATIC_PROP)
+ ZEND_ASSIGN_SL_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_CONST):
VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_CONST)
ZEND_ASSIGN_SR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_CONST_OBJ)
ZEND_ASSIGN_SR_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_CONST_STATIC_PROP)
+ ZEND_ASSIGN_SR_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST):
VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST)
ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_OBJ)
ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_STATIC_PROP)
+ ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST):
VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST)
ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_OBJ)
ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_STATIC_PROP)
+ ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST):
VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST)
ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_OBJ)
ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_STATIC_PROP)
+ ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST):
VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST)
ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_OBJ)
ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_STATIC_PROP)
+ ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_CONST):
VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_CONST)
ZEND_ASSIGN_POW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ)
ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_CONST_STATIC_PROP)
+ ZEND_ASSIGN_POW_SPEC_VAR_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_VAR_CONST):
VM_TRACE(ZEND_PRE_INC_OBJ_SPEC_VAR_CONST)
ZEND_PRE_INC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED)
ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_VAR)
+ ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_CV)
+ ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST):
VM_TRACE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST)
ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ)
ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR):
VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR)
ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ)
ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR):
VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR)
ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ)
ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR):
VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR)
ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ)
ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR):
VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR)
ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ)
ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR):
VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR)
ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ)
ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR):
VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR)
ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ)
ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR):
VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR)
ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ)
ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR):
VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR)
ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ)
ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR):
VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR)
ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ)
ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR):
VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR)
ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ)
ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR):
VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR)
ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ)
ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR):
VM_TRACE(ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR)
ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV)
ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_VAR)
+ ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_CV)
+ ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR):
VM_TRACE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR)
ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_DIM)
ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM)
ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM)
ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM)
ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM)
ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM)
ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM)
ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM)
ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM)
ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM)
ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM)
ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM)
ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED):
VM_TRACE(ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED)
ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_REF_SPEC_VAR_CV)
ZEND_ASSIGN_REF_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_VAR)
+ ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_CV)
+ ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV):
VM_TRACE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV)
ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV)
ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_VAR)
+ ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_CV)
+ ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ROPE_INIT_SPEC_UNUSED_CONST):
VM_TRACE(ZEND_ROPE_INIT_SPEC_UNUSED_CONST)
ZEND_ROPE_INIT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV)
ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_VAR)
+ ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_CV)
+ ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR):
VM_TRACE(ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR)
ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV)
ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_VAR)
+ ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_CV)
+ ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ROPE_INIT_SPEC_UNUSED_CV):
VM_TRACE(ZEND_ROPE_INIT_SPEC_UNUSED_CV)
ZEND_ROPE_INIT_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CV_CONST_OBJ)
ZEND_ASSIGN_ADD_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CV_CONST_STATIC_PROP)
+ ZEND_ASSIGN_ADD_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_CONST):
VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_CONST)
ZEND_ASSIGN_SUB_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_CONST_OBJ)
ZEND_ASSIGN_SUB_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_CONST_STATIC_PROP)
+ ZEND_ASSIGN_SUB_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_CONST):
VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_CONST)
ZEND_ASSIGN_MUL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_CONST_OBJ)
ZEND_ASSIGN_MUL_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_CONST_STATIC_PROP)
+ ZEND_ASSIGN_MUL_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_CONST):
VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_CONST)
ZEND_ASSIGN_DIV_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_CONST_OBJ)
ZEND_ASSIGN_DIV_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_CONST_STATIC_PROP)
+ ZEND_ASSIGN_DIV_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_CONST):
VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_CONST)
ZEND_ASSIGN_MOD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_CONST_OBJ)
ZEND_ASSIGN_MOD_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_CONST_STATIC_PROP)
+ ZEND_ASSIGN_MOD_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_CONST):
VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_CONST)
ZEND_ASSIGN_SL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_CONST_OBJ)
ZEND_ASSIGN_SL_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_CONST_STATIC_PROP)
+ ZEND_ASSIGN_SL_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_CONST):
VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_CONST)
ZEND_ASSIGN_SR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_CONST_OBJ)
ZEND_ASSIGN_SR_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_CONST_STATIC_PROP)
+ ZEND_ASSIGN_SR_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_CONST):
VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_CONST)
ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_OBJ)
ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_STATIC_PROP)
+ ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_CONST):
VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_CONST)
ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_OBJ)
ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_STATIC_PROP)
+ ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_CONST):
VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_CONST)
ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_OBJ)
ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_STATIC_PROP)
+ ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST):
VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST)
ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_OBJ)
ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_STATIC_PROP)
+ ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_CONST):
VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_CONST)
ZEND_ASSIGN_POW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ)
ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_CONST_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_CONST_STATIC_PROP)
+ ZEND_ASSIGN_POW_SPEC_CV_CONST_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_CV_CONST):
VM_TRACE(ZEND_PRE_INC_OBJ_SPEC_CV_CONST)
ZEND_PRE_INC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_POST_DEC_OBJ_SPEC_CV_CONST)
ZEND_POST_DEC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_INC_STATIC_PROP_SPEC_CV_CONST):
+ VM_TRACE(ZEND_PRE_INC_STATIC_PROP_SPEC_CV_CONST)
+ ZEND_PRE_INC_STATIC_PROP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_CONST):
+ VM_TRACE(ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_CONST)
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_INC_STATIC_PROP_SPEC_CV_CONST):
+ VM_TRACE(ZEND_POST_INC_STATIC_PROP_SPEC_CV_CONST)
+ ZEND_POST_INC_STATIC_PROP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_DEC_STATIC_PROP_SPEC_CV_CONST):
+ VM_TRACE(ZEND_POST_DEC_STATIC_PROP_SPEC_CV_CONST)
+ ZEND_POST_DEC_STATIC_PROP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST):
VM_TRACE(ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST)
ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV)
ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_CONST):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_CONST)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_TMP):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_TMP)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_VAR)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_CV)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST):
VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST)
ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED)
ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_VAR)
+ ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_CV)
+ ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_CONST):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_CONST)
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_CV_CONST):
VM_TRACE(ZEND_FAST_CONCAT_SPEC_CV_CONST)
ZEND_FAST_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ)
ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR):
VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR)
ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ)
ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR):
VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR)
ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ)
ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR):
VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR)
ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ)
ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR):
VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR)
ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ)
ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_TMPVAR):
VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_TMPVAR)
ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ)
ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_TMPVAR):
VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_TMPVAR)
ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ)
ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR):
VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR)
ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ)
ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR):
VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR)
ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ)
ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR):
VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR)
ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ)
ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR):
VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR)
ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ)
ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_TMPVAR):
VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_TMPVAR)
ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ)
ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_STATIC_PROP)
+ ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR):
VM_TRACE(ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR)
ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV)
ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_VAR)
+ ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_CV)
+ ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_CV_TMPVAR):
VM_TRACE(ZEND_FAST_CONCAT_SPEC_CV_TMPVAR)
ZEND_FAST_CONCAT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_IS_NOT_IDENTICAL_SPEC_CV_VAR)
ZEND_IS_NOT_IDENTICAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_INC_STATIC_PROP_SPEC_CV_VAR):
+ VM_TRACE(ZEND_PRE_INC_STATIC_PROP_SPEC_CV_VAR)
+ ZEND_PRE_INC_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_VAR):
+ VM_TRACE(ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_VAR)
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_INC_STATIC_PROP_SPEC_CV_VAR):
+ VM_TRACE(ZEND_POST_INC_STATIC_PROP_SPEC_CV_VAR)
+ ZEND_POST_INC_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_DEC_STATIC_PROP_SPEC_CV_VAR):
+ VM_TRACE(ZEND_POST_DEC_STATIC_PROP_SPEC_CV_VAR)
+ ZEND_POST_DEC_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR):
VM_TRACE(ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR)
ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_VAR)
ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_CONST):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_CONST)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_TMP):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_TMP)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_VAR)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_CV)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED):
VM_TRACE(ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED)
ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_REF_SPEC_CV_VAR)
ZEND_ASSIGN_REF_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_VAR):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_VAR)
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR):
VM_TRACE(ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR)
ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_DIM)
ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM)
ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM)
ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM)
ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM)
ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM)
ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SL_SPEC_CV_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_SL_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM)
ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_SR_SPEC_CV_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_SR_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM)
ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM)
ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM)
ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM)
ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM):
VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM)
ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_UNUSED_STATIC_PROP):
+ VM_TRACE(ZEND_ASSIGN_POW_SPEC_CV_UNUSED_STATIC_PROP)
+ ZEND_ASSIGN_POW_SPEC_CV_UNUSED_STATIC_PROP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_INC_STATIC_PROP_SPEC_CV_UNUSED):
+ VM_TRACE(ZEND_PRE_INC_STATIC_PROP_SPEC_CV_UNUSED)
+ ZEND_PRE_INC_STATIC_PROP_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_UNUSED):
+ VM_TRACE(ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_UNUSED)
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_INC_STATIC_PROP_SPEC_CV_UNUSED):
+ VM_TRACE(ZEND_POST_INC_STATIC_PROP_SPEC_CV_UNUSED)
+ ZEND_POST_INC_STATIC_PROP_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_POST_DEC_STATIC_PROP_SPEC_CV_UNUSED):
+ VM_TRACE(ZEND_POST_DEC_STATIC_PROP_SPEC_CV_UNUSED)
+ ZEND_POST_DEC_STATIC_PROP_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FETCH_R_SPEC_CV_UNUSED):
VM_TRACE(ZEND_FETCH_R_SPEC_CV_UNUSED)
ZEND_FETCH_R_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED)
ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_CONST):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_CONST)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_TMP):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_TMP)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_VAR)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_CV)
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST):
VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST)
ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV)
ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_UNUSED):
+ VM_TRACE(ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_UNUSED)
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED):
VM_TRACE(ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED)
ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
VM_TRACE(ZEND_ASSIGN_REF_SPEC_CV_CV)
ZEND_ASSIGN_REF_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_VAR):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_VAR)
+ ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
+ HYBRID_CASE(ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_CV):
+ VM_TRACE(ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_CV)
+ ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+ HYBRID_BREAK();
HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_CV_CV):
VM_TRACE(ZEND_FAST_CONCAT_SPEC_CV_CV)
ZEND_FAST_CONCAT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_ADD_SPEC_CONST_CONST_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_ADD_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_ADD_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_ADD_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_ADD_SPEC_TMP_CONST_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_ADD_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_ADD_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_ADD_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_ADD_SPEC_VAR_CONST_HANDLER,
ZEND_ASSIGN_ADD_SPEC_VAR_CONST_DIM_HANDLER,
ZEND_ASSIGN_ADD_SPEC_VAR_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_ADD_SPEC_VAR_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_ADD_SPEC_VAR_CV_HANDLER,
ZEND_ASSIGN_ADD_SPEC_VAR_CV_DIM_HANDLER,
ZEND_ASSIGN_ADD_SPEC_VAR_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_ADD_SPEC_UNUSED_CONST_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_OBJ_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_ADD_SPEC_CV_CONST_HANDLER,
ZEND_ASSIGN_ADD_SPEC_CV_CONST_DIM_HANDLER,
ZEND_ASSIGN_ADD_SPEC_CV_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_ADD_SPEC_CV_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_ADD_SPEC_CV_CV_HANDLER,
ZEND_ASSIGN_ADD_SPEC_CV_CV_DIM_HANDLER,
ZEND_ASSIGN_ADD_SPEC_CV_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SUB_SPEC_CONST_CONST_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SUB_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SUB_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SUB_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SUB_SPEC_TMP_CONST_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SUB_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SUB_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SUB_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_SUB_SPEC_VAR_CONST_HANDLER,
ZEND_ASSIGN_SUB_SPEC_VAR_CONST_DIM_HANDLER,
ZEND_ASSIGN_SUB_SPEC_VAR_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_SUB_SPEC_VAR_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SUB_SPEC_VAR_CV_HANDLER,
ZEND_ASSIGN_SUB_SPEC_VAR_CV_DIM_HANDLER,
ZEND_ASSIGN_SUB_SPEC_VAR_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_SUB_SPEC_UNUSED_CONST_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_SUB_SPEC_UNUSED_CV_OBJ_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_SUB_SPEC_CV_CONST_HANDLER,
ZEND_ASSIGN_SUB_SPEC_CV_CONST_DIM_HANDLER,
ZEND_ASSIGN_SUB_SPEC_CV_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_SUB_SPEC_CV_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SUB_SPEC_CV_CV_HANDLER,
ZEND_ASSIGN_SUB_SPEC_CV_CV_DIM_HANDLER,
ZEND_ASSIGN_SUB_SPEC_CV_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MUL_SPEC_CONST_CONST_STATIC_PROP_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MUL_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MUL_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MUL_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MUL_SPEC_TMP_CONST_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MUL_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MUL_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MUL_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_MUL_SPEC_VAR_CONST_HANDLER,
ZEND_ASSIGN_MUL_SPEC_VAR_CONST_DIM_HANDLER,
ZEND_ASSIGN_MUL_SPEC_VAR_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_MUL_SPEC_VAR_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_MUL_SPEC_VAR_CV_HANDLER,
ZEND_ASSIGN_MUL_SPEC_VAR_CV_DIM_HANDLER,
ZEND_ASSIGN_MUL_SPEC_VAR_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_MUL_SPEC_UNUSED_CONST_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_MUL_SPEC_UNUSED_CV_OBJ_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_MUL_SPEC_CV_CONST_HANDLER,
ZEND_ASSIGN_MUL_SPEC_CV_CONST_DIM_HANDLER,
ZEND_ASSIGN_MUL_SPEC_CV_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_MUL_SPEC_CV_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_MUL_SPEC_CV_CV_HANDLER,
ZEND_ASSIGN_MUL_SPEC_CV_CV_DIM_HANDLER,
ZEND_ASSIGN_MUL_SPEC_CV_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_DIV_SPEC_CONST_CONST_STATIC_PROP_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_DIV_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_DIV_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_DIV_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_DIV_SPEC_TMP_CONST_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_DIV_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_DIV_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_DIV_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_DIV_SPEC_VAR_CONST_HANDLER,
ZEND_ASSIGN_DIV_SPEC_VAR_CONST_DIM_HANDLER,
ZEND_ASSIGN_DIV_SPEC_VAR_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_DIV_SPEC_VAR_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_DIV_SPEC_VAR_CV_HANDLER,
ZEND_ASSIGN_DIV_SPEC_VAR_CV_DIM_HANDLER,
ZEND_ASSIGN_DIV_SPEC_VAR_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_DIV_SPEC_UNUSED_CONST_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_DIV_SPEC_UNUSED_CV_OBJ_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_DIV_SPEC_CV_CONST_HANDLER,
ZEND_ASSIGN_DIV_SPEC_CV_CONST_DIM_HANDLER,
ZEND_ASSIGN_DIV_SPEC_CV_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_DIV_SPEC_CV_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_DIV_SPEC_CV_CV_HANDLER,
ZEND_ASSIGN_DIV_SPEC_CV_CV_DIM_HANDLER,
ZEND_ASSIGN_DIV_SPEC_CV_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MOD_SPEC_CONST_CONST_STATIC_PROP_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MOD_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MOD_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MOD_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MOD_SPEC_TMP_CONST_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MOD_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MOD_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MOD_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_MOD_SPEC_VAR_CONST_HANDLER,
ZEND_ASSIGN_MOD_SPEC_VAR_CONST_DIM_HANDLER,
ZEND_ASSIGN_MOD_SPEC_VAR_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_MOD_SPEC_VAR_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_MOD_SPEC_VAR_CV_HANDLER,
ZEND_ASSIGN_MOD_SPEC_VAR_CV_DIM_HANDLER,
ZEND_ASSIGN_MOD_SPEC_VAR_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_OBJ_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_MOD_SPEC_CV_CONST_HANDLER,
ZEND_ASSIGN_MOD_SPEC_CV_CONST_DIM_HANDLER,
ZEND_ASSIGN_MOD_SPEC_CV_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_MOD_SPEC_CV_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_MOD_SPEC_CV_CV_HANDLER,
ZEND_ASSIGN_MOD_SPEC_CV_CV_DIM_HANDLER,
ZEND_ASSIGN_MOD_SPEC_CV_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SL_SPEC_CONST_CONST_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SL_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SL_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SL_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SL_SPEC_TMP_CONST_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SL_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SL_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SL_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_SL_SPEC_VAR_CONST_HANDLER,
ZEND_ASSIGN_SL_SPEC_VAR_CONST_DIM_HANDLER,
ZEND_ASSIGN_SL_SPEC_VAR_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_SL_SPEC_VAR_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SL_SPEC_VAR_CV_HANDLER,
ZEND_ASSIGN_SL_SPEC_VAR_CV_DIM_HANDLER,
ZEND_ASSIGN_SL_SPEC_VAR_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_SL_SPEC_UNUSED_CONST_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_SL_SPEC_UNUSED_CV_OBJ_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_SL_SPEC_CV_CONST_HANDLER,
ZEND_ASSIGN_SL_SPEC_CV_CONST_DIM_HANDLER,
ZEND_ASSIGN_SL_SPEC_CV_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_SL_SPEC_CV_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SL_SPEC_CV_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SL_SPEC_CV_CV_HANDLER,
ZEND_ASSIGN_SL_SPEC_CV_CV_DIM_HANDLER,
ZEND_ASSIGN_SL_SPEC_CV_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SR_SPEC_CONST_CONST_STATIC_PROP_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SR_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SR_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SR_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SR_SPEC_TMP_CONST_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SR_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SR_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SR_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_SR_SPEC_VAR_CONST_HANDLER,
ZEND_ASSIGN_SR_SPEC_VAR_CONST_DIM_HANDLER,
ZEND_ASSIGN_SR_SPEC_VAR_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_SR_SPEC_VAR_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SR_SPEC_VAR_CV_HANDLER,
ZEND_ASSIGN_SR_SPEC_VAR_CV_DIM_HANDLER,
ZEND_ASSIGN_SR_SPEC_VAR_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_SR_SPEC_UNUSED_CONST_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_SR_SPEC_UNUSED_CV_OBJ_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_SR_SPEC_CV_CONST_HANDLER,
ZEND_ASSIGN_SR_SPEC_CV_CONST_DIM_HANDLER,
ZEND_ASSIGN_SR_SPEC_CV_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_SR_SPEC_CV_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_SR_SPEC_CV_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_SR_SPEC_CV_CV_HANDLER,
ZEND_ASSIGN_SR_SPEC_CV_CV_DIM_HANDLER,
ZEND_ASSIGN_SR_SPEC_CV_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_CONCAT_SPEC_CONST_CONST_STATIC_PROP_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_CONCAT_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_CONCAT_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_CONCAT_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_CONCAT_SPEC_TMP_CONST_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_CONCAT_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_CONCAT_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_CONCAT_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_DIM_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_DIM_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CONST_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CV_OBJ_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_DIM_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_CV_CV_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_CV_CV_DIM_HANDLER,
ZEND_ASSIGN_CONCAT_SPEC_CV_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_OR_SPEC_CONST_CONST_STATIC_PROP_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_OR_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_OR_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_OR_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_OR_SPEC_TMP_CONST_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_OR_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_OR_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_OR_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_DIM_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_DIM_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CONST_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CV_OBJ_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_DIM_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_CV_CV_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_CV_CV_DIM_HANDLER,
ZEND_ASSIGN_BW_OR_SPEC_CV_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_AND_SPEC_CONST_CONST_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_AND_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_AND_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_AND_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_AND_SPEC_TMP_CONST_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_AND_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_AND_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_AND_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_DIM_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_DIM_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CONST_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CV_OBJ_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_DIM_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_CV_CV_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_CV_CV_DIM_HANDLER,
ZEND_ASSIGN_BW_AND_SPEC_CV_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_XOR_SPEC_CONST_CONST_STATIC_PROP_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_XOR_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_XOR_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_XOR_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_XOR_SPEC_TMP_CONST_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_XOR_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_XOR_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_XOR_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_DIM_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_DIM_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CONST_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CV_OBJ_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_DIM_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_DIM_HANDLER,
ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED_HANDLER,
ZEND_PRE_INC_SPEC_VAR_RETVAL_USED_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_POW_SPEC_CONST_CONST_STATIC_PROP_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_POW_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_POW_SPEC_CONST_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_POW_SPEC_CONST_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_POW_SPEC_TMP_CONST_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_POW_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_POW_SPEC_TMP_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_POW_SPEC_TMP_UNUSED_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_POW_SPEC_VAR_CONST_HANDLER,
ZEND_ASSIGN_POW_SPEC_VAR_CONST_DIM_HANDLER,
ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_POW_SPEC_VAR_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_HANDLER,
ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_POW_SPEC_VAR_CV_HANDLER,
ZEND_ASSIGN_POW_SPEC_VAR_CV_DIM_HANDLER,
ZEND_ASSIGN_POW_SPEC_VAR_CV_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_POW_SPEC_UNUSED_CV_OBJ_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_ASSIGN_POW_SPEC_CV_CONST_HANDLER,
ZEND_ASSIGN_POW_SPEC_CV_CONST_DIM_HANDLER,
ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ_HANDLER,
+ ZEND_ASSIGN_POW_SPEC_CV_CONST_STATIC_PROP_HANDLER,
ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_HANDLER,
ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_HANDLER,
ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_HANDLER,
+ ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_STATIC_PROP_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_POW_SPEC_CV_UNUSED_STATIC_PROP_HANDLER,
ZEND_ASSIGN_POW_SPEC_CV_CV_HANDLER,
ZEND_ASSIGN_POW_SPEC_CV_CV_DIM_HANDLER,
ZEND_ASSIGN_POW_SPEC_CV_CV_OBJ_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_BIND_GLOBAL_SPEC_CV_CONST_HANDLER,
ZEND_COALESCE_SPEC_CONST_HANDLER,
ZEND_COALESCE_SPEC_TMPVAR_HANDLER,
ZEND_ARRAY_KEY_EXISTS_SPEC_CV_TMPVAR_HANDLER,
ZEND_NULL_HANDLER,
ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CV_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_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_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_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_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_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_CV_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_CONST_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_TMP_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_CONST_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_TMP_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_CV_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_CONST_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_TMP_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CONST_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_TMP_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CONST_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_TMP_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CV_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CONST_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_TMP_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CONST_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_TMP_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CONST_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_TMP_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CV_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CONST_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_TMP_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CV_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_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_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_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_CONST_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_TMP_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_CONST_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_TMP_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_CV_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_CONST_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_TMP_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_VAR_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_CV_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_VAR_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_VAR_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_VAR_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_VAR_HANDLER,
+ ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_VAR_HANDLER,
+ ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER,
+ ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER,
+ ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_PRE_INC_STATIC_PROP_SPEC_CV_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_PRE_INC_STATIC_PROP_SPEC_CV_VAR_HANDLER,
+ ZEND_PRE_INC_STATIC_PROP_SPEC_CV_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_VAR_HANDLER,
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER,
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER,
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_VAR_HANDLER,
+ ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_POST_INC_STATIC_PROP_SPEC_CONST_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_POST_INC_STATIC_PROP_SPEC_CONST_VAR_HANDLER,
+ ZEND_POST_INC_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER,
+ ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER,
+ ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_POST_INC_STATIC_PROP_SPEC_CV_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_POST_INC_STATIC_PROP_SPEC_CV_VAR_HANDLER,
+ ZEND_POST_INC_STATIC_PROP_SPEC_CV_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_VAR_HANDLER,
+ ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER,
+ ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER,
+ ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_POST_DEC_STATIC_PROP_SPEC_CV_CONST_HANDLER,
+ ZEND_NULL_HANDLER,
+ ZEND_POST_DEC_STATIC_PROP_SPEC_CV_VAR_HANDLER,
+ ZEND_POST_DEC_STATIC_PROP_SPEC_CV_UNUSED_HANDLER,
+ ZEND_NULL_HANDLER,
ZEND_JMP_FORWARD_SPEC_HANDLER,
ZEND_NULL_HANDLER,
ZEND_NULL_HANDLER,
461 | SPEC_RULE_OP1,
466 | SPEC_RULE_OP1,
471 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
- 546 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
- 621 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
- 696 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
+ 571 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
+ 671 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
771 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
- 846 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
- 921 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
- 996 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
+ 871 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
+ 971 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
1071 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
- 1146 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
- 1221 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
- 1296 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL,
- 1306 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL,
- 1316 | SPEC_RULE_OP1,
- 1321 | SPEC_RULE_OP1,
- 1326 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_RETVAL,
- 1376 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 1401 | SPEC_RULE_OP1,
- 1406,
- 1407,
- 1408 | SPEC_RULE_OP1,
- 1413 | SPEC_RULE_OP1,
- 1418 | SPEC_RULE_OP1,
- 1423 | SPEC_RULE_OP1,
- 1428 | SPEC_RULE_OP1,
- 1433 | SPEC_RULE_OP2,
- 1438,
- 1439 | SPEC_RULE_QUICK_ARG,
- 1441 | SPEC_RULE_OP1,
- 1446 | SPEC_RULE_OP1,
- 1451 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 1476 | SPEC_RULE_OP2,
- 1481 | SPEC_RULE_OP2,
- 1486 | SPEC_RULE_OP2,
- 1491,
- 1492,
- 1493,
- 1494 | SPEC_RULE_RETVAL,
- 1496,
- 1497 | SPEC_RULE_OP1,
- 1502,
- 1503,
- 1504 | SPEC_RULE_OP1,
- 1509 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG,
- 1519 | SPEC_RULE_OP1,
- 1524 | SPEC_RULE_OP1,
- 1529,
- 1530,
- 1531 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 1556 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 1581 | SPEC_RULE_OP1,
- 1586 | SPEC_RULE_OP1,
- 1591 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 1616 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 1641 | SPEC_RULE_OP1,
- 1646,
- 1647 | SPEC_RULE_OP1,
- 1652 | SPEC_RULE_OP1,
- 1657 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 1682 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 1707 | SPEC_RULE_OP1,
- 1712 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 1737 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 1762 | SPEC_RULE_OP1,
- 1767 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 1792 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 1817 | SPEC_RULE_OP1,
- 1822 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 1847 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 1872 | SPEC_RULE_OP1,
- 1877 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 1902 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 1171 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
+ 1271 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
+ 1371 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
+ 1471 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
+ 1571 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL,
+ 1581 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL,
+ 1591 | SPEC_RULE_OP1,
+ 1596 | SPEC_RULE_OP1,
+ 1601 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_RETVAL,
+ 1651 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 1676 | SPEC_RULE_OP1,
+ 1681,
+ 1682,
+ 1683 | SPEC_RULE_OP1,
+ 1688 | SPEC_RULE_OP1,
+ 1693 | SPEC_RULE_OP1,
+ 1698 | SPEC_RULE_OP1,
+ 1703 | SPEC_RULE_OP1,
+ 1708 | SPEC_RULE_OP2,
+ 1713,
+ 1714 | SPEC_RULE_QUICK_ARG,
+ 1716 | SPEC_RULE_OP1,
+ 1721 | SPEC_RULE_OP1,
+ 1726 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 1751 | SPEC_RULE_OP2,
+ 1756 | SPEC_RULE_OP2,
+ 1761 | SPEC_RULE_OP2,
+ 1766,
+ 1767,
+ 1768,
+ 1769 | SPEC_RULE_RETVAL,
+ 1771,
+ 1772 | SPEC_RULE_OP1,
+ 1777,
+ 1778,
+ 1779 | SPEC_RULE_OP1,
+ 1784 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG,
+ 1794 | SPEC_RULE_OP1,
+ 1799 | SPEC_RULE_OP1,
+ 1804,
+ 1805,
+ 1806 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 1831 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 1856 | SPEC_RULE_OP1,
+ 1861 | SPEC_RULE_OP1,
+ 1866 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 1891 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 1916 | SPEC_RULE_OP1,
+ 1921,
+ 1922 | SPEC_RULE_OP1,
1927 | SPEC_RULE_OP1,
1932 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
1957 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 1982 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2007,
- 2008 | SPEC_RULE_QUICK_ARG,
- 2010,
- 2011,
- 2012,
- 2013,
- 2014,
- 2015,
- 2016,
- 2017 | SPEC_RULE_OP1,
- 2022 | SPEC_RULE_OP2,
- 2027 | SPEC_RULE_OP1,
- 2032 | SPEC_RULE_OP1,
- 2037 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2062 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2087 | SPEC_RULE_OP1,
- 2092 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2117 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG,
- 2127 | SPEC_RULE_OP1,
- 2132 | SPEC_RULE_OP2,
- 2137,
- 2138 | SPEC_RULE_OP1,
- 2143 | SPEC_RULE_OP1,
- 2148,
- 2149 | SPEC_RULE_OP1,
- 2154 | SPEC_RULE_OP1,
- 2159 | SPEC_RULE_OP1,
- 2164,
- 2165,
- 2166 | SPEC_RULE_OP2,
- 2171 | SPEC_RULE_RETVAL,
- 2173 | SPEC_RULE_RETVAL,
- 2175 | SPEC_RULE_RETVAL,
+ 1982 | SPEC_RULE_OP1,
+ 1987 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2012 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2037 | SPEC_RULE_OP1,
+ 2042 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2067 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2092 | SPEC_RULE_OP1,
+ 2097 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2122 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2147 | SPEC_RULE_OP1,
+ 2152 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
2177 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2202 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2227 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2252 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2277 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
- 2402,
- 2403 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2428,
- 2429,
- 2430,
- 2431 | SPEC_RULE_OP1,
- 2436,
- 3941,
- 2437,
- 3941,
- 2438 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
- 2563 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2588,
- 2589,
- 2590,
- 2591 | SPEC_RULE_OP1,
- 2596,
- 3941,
- 3941,
- 2597,
- 2598,
- 2599,
- 2600,
- 2601 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2626 | SPEC_RULE_OP1,
- 2631,
- 2632,
- 2633,
- 2634,
- 2635 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2660 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
- 2735,
- 2736 | SPEC_RULE_OP1,
- 2741 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2766,
- 2767,
- 2768 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2793 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2818 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2843 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2868 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2893 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2918 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2943 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 2968 | SPEC_RULE_OP1,
- 2973,
- 2974,
- 2975,
- 2976,
- 2977,
- 2978 | SPEC_RULE_OP1,
- 2983 | SPEC_RULE_OP1,
- 2988 | SPEC_RULE_OP1,
- 2993 | SPEC_RULE_OP1,
- 2998 | SPEC_RULE_OP1,
- 3003,
- 3004 | SPEC_RULE_OP1,
- 3009,
- 3010 | SPEC_RULE_OP1,
- 3015,
- 3016 | SPEC_RULE_ISSET,
- 3018 | SPEC_RULE_OP2,
- 3023 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
- 3941
+ 2202 | SPEC_RULE_OP1,
+ 2207 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2232 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2257 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2282,
+ 2283 | SPEC_RULE_QUICK_ARG,
+ 2285,
+ 2286,
+ 2287,
+ 2288,
+ 2289,
+ 2290,
+ 2291,
+ 2292 | SPEC_RULE_OP1,
+ 2297 | SPEC_RULE_OP2,
+ 2302 | SPEC_RULE_OP1,
+ 2307 | SPEC_RULE_OP1,
+ 2312 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2337 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2362 | SPEC_RULE_OP1,
+ 2367 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2392 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG,
+ 2402 | SPEC_RULE_OP1,
+ 2407 | SPEC_RULE_OP2,
+ 2412,
+ 2413 | SPEC_RULE_OP1,
+ 2418 | SPEC_RULE_OP1,
+ 2423,
+ 2424 | SPEC_RULE_OP1,
+ 2429 | SPEC_RULE_OP1,
+ 2434 | SPEC_RULE_OP1,
+ 2439,
+ 2440,
+ 2441 | SPEC_RULE_OP2,
+ 2446 | SPEC_RULE_RETVAL,
+ 2448 | SPEC_RULE_RETVAL,
+ 2450 | SPEC_RULE_RETVAL,
+ 2452 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2477 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2502 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2527 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2552 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
+ 2677,
+ 2678 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2703,
+ 2704,
+ 2705,
+ 2706 | SPEC_RULE_OP1,
+ 2711,
+ 4616,
+ 2712,
+ 4616,
+ 2713 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
+ 2838 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2863,
+ 2864,
+ 2865,
+ 2866 | SPEC_RULE_OP1,
+ 2871,
+ 4616,
+ 4616,
+ 2872,
+ 2873,
+ 2874,
+ 2875,
+ 2876 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2901 | SPEC_RULE_OP1,
+ 2906,
+ 2907,
+ 2908,
+ 2909,
+ 2910 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 2935 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
+ 3035,
+ 3036 | SPEC_RULE_OP1,
+ 3041 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 3066,
+ 3067,
+ 3068 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 3093 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 3118 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 3143 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 3168 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 3193 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 3218 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 3243 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 3268 | SPEC_RULE_OP1,
+ 3273,
+ 3274,
+ 3275,
+ 3276,
+ 3277,
+ 3278 | SPEC_RULE_OP1,
+ 3283 | SPEC_RULE_OP1,
+ 3288 | SPEC_RULE_OP1,
+ 3293 | SPEC_RULE_OP1,
+ 3298 | SPEC_RULE_OP1,
+ 3303,
+ 3304 | SPEC_RULE_OP1,
+ 3309,
+ 3310 | SPEC_RULE_OP1,
+ 3315,
+ 3316 | SPEC_RULE_ISSET,
+ 3318 | SPEC_RULE_OP2,
+ 3323 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 3348 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
+ 3473 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
+ 3598 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 3623 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 3648 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 3673 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 3698 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+ 4616
};
#if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
zend_opcode_handler_funcs = labels;
} else if (spec & SPEC_RULE_OP_DATA) {
offset = offset * 5 + zend_vm_decode[(op + 1)->op1_type];
} else if (spec & SPEC_RULE_DIM_OBJ) {
- offset = offset * 3;
+ offset = offset * 4;
if (op->extended_value == ZEND_ASSIGN_DIM) {
offset += 1;
} else if (op->extended_value == ZEND_ASSIGN_OBJ) {
offset += 2;
+ } else if (op->extended_value == ZEND_ASSIGN_STATIC_PROP) {
+ offset += 3;
}
} else if (spec & SPEC_RULE_ISSET) {
offset = offset * 2 + (op->extended_value & ZEND_ISEMPTY);
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3049 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
+ spec = 3724 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
if (op->op1_type < op->op2_type) {
zend_swap_operands(op);
}
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3074 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
+ spec = 3749 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
if (op->op1_type < op->op2_type) {
zend_swap_operands(op);
}
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3099 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
+ spec = 3774 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
if (op->op1_type < op->op2_type) {
zend_swap_operands(op);
}
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3124 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
+ spec = 3799 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3149 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
+ spec = 3824 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3174 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
+ spec = 3849 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
}
break;
case ZEND_MUL:
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3199 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
+ spec = 3874 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3224 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
+ spec = 3899 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3249 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
+ spec = 3924 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_COMMUTATIVE;
}
break;
case ZEND_IS_EQUAL:
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3274 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
+ spec = 3949 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3349 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
+ spec = 4024 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
}
break;
case ZEND_IS_NOT_EQUAL:
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3424 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
+ spec = 4099 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3499 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
+ spec = 4174 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH | SPEC_RULE_COMMUTATIVE;
}
break;
case ZEND_IS_SMALLER:
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3574 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
+ spec = 4249 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3649 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
+ spec = 4324 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
}
break;
case ZEND_IS_SMALLER_OR_EQUAL:
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3724 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
+ spec = 4399 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3799 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
+ spec = 4474 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
}
break;
case ZEND_QM_ASSIGN:
if (op1_info == MAY_BE_DOUBLE) {
- spec = 3892 | SPEC_RULE_OP1;
+ spec = 4567 | SPEC_RULE_OP1;
} else if ((op->op1_type == IS_CONST) ? !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1)) : (!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE))))) {
- spec = 3897 | SPEC_RULE_OP1;
+ spec = 4572 | SPEC_RULE_OP1;
}
break;
case ZEND_PRE_INC:
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
- spec = 3874 | SPEC_RULE_RETVAL;
+ spec = 4549 | SPEC_RULE_RETVAL;
} else if (op1_info == MAY_BE_LONG) {
- spec = 3876 | SPEC_RULE_RETVAL;
+ spec = 4551 | SPEC_RULE_RETVAL;
} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
- spec = 3878 | SPEC_RULE_RETVAL;
+ spec = 4553 | SPEC_RULE_RETVAL;
}
break;
case ZEND_PRE_DEC:
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
- spec = 3880 | SPEC_RULE_RETVAL;
+ spec = 4555 | SPEC_RULE_RETVAL;
} else if (op1_info == MAY_BE_LONG) {
- spec = 3882 | SPEC_RULE_RETVAL;
+ spec = 4557 | SPEC_RULE_RETVAL;
} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
- spec = 3884 | SPEC_RULE_RETVAL;
+ spec = 4559 | SPEC_RULE_RETVAL;
}
break;
case ZEND_POST_INC:
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
- spec = 3886;
+ spec = 4561;
} else if (op1_info == MAY_BE_LONG) {
- spec = 3887;
+ spec = 4562;
} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
- spec = 3888;
+ spec = 4563;
}
break;
case ZEND_POST_DEC:
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
- spec = 3889;
+ spec = 4564;
} else if (op1_info == MAY_BE_LONG) {
- spec = 3890;
+ spec = 4565;
} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
- spec = 3891;
+ spec = 4566;
}
break;
case ZEND_JMP:
if (OP_JMP_ADDR(op, op->op1) > op) {
- spec = 3048;
+ spec = 3723;
}
break;
case ZEND_SEND_VAL:
if (op->op1_type == IS_CONST && !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1))) {
- spec = 3937;
+ spec = 4612;
}
break;
case ZEND_SEND_VAR_EX:
if (op->op2.num <= MAX_ARG_FLAG_NUM && (op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
- spec = 3932 | SPEC_RULE_OP1;
+ spec = 4607 | SPEC_RULE_OP1;
}
break;
case ZEND_FE_FETCH_R:
if (op->op2_type == IS_CV && (op1_info & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF)) == MAY_BE_ARRAY) {
- spec = 3939 | SPEC_RULE_RETVAL;
+ spec = 4614 | SPEC_RULE_RETVAL;
}
break;
case ZEND_FETCH_DIM_R:
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
break;
}
- spec = 3902 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
+ spec = 4577 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
}
break;
case ZEND_SEND_VAL_EX:
if (op->op2.num <= MAX_ARG_FLAG_NUM && op->op1_type == IS_CONST && !Z_REFCOUNTED_P(RT_CONSTANT(op, op->op1))) {
- spec = 3938;
+ spec = 4613;
}
break;
case ZEND_SEND_VAR:
if ((op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
- spec = 3927 | SPEC_RULE_OP1;
+ spec = 4602 | SPEC_RULE_OP1;
}
break;
case ZEND_BW_OR:
_(467, ZEND_QM_ASSIGN_SPEC_TMP) \
_(468, ZEND_QM_ASSIGN_SPEC_VAR) \
_(470, ZEND_QM_ASSIGN_SPEC_CV) \
- _(501, ZEND_ASSIGN_ADD_SPEC_VAR_CONST) \
- _(502, ZEND_ASSIGN_ADD_SPEC_VAR_CONST_DIM) \
- _(503, ZEND_ASSIGN_ADD_SPEC_VAR_CONST_OBJ) \
- _(504, ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR) \
- _(505, ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM) \
- _(506, ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ) \
- _(507, ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR) \
- _(508, ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM) \
- _(509, ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ) \
- _(511, ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_DIM) \
- _(513, ZEND_ASSIGN_ADD_SPEC_VAR_CV) \
- _(514, ZEND_ASSIGN_ADD_SPEC_VAR_CV_DIM) \
- _(515, ZEND_ASSIGN_ADD_SPEC_VAR_CV_OBJ) \
- _(518, ZEND_ASSIGN_ADD_SPEC_UNUSED_CONST_OBJ) \
- _(521, ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ) \
- _(524, ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ) \
- _(530, ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_OBJ) \
- _(531, ZEND_ASSIGN_ADD_SPEC_CV_CONST) \
- _(532, ZEND_ASSIGN_ADD_SPEC_CV_CONST_DIM) \
- _(533, ZEND_ASSIGN_ADD_SPEC_CV_CONST_OBJ) \
- _(534, ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR) \
- _(535, ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM) \
- _(536, ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ) \
- _(537, ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR) \
- _(538, ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM) \
- _(539, ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ) \
- _(541, ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_DIM) \
- _(543, ZEND_ASSIGN_ADD_SPEC_CV_CV) \
- _(544, ZEND_ASSIGN_ADD_SPEC_CV_CV_DIM) \
- _(545, ZEND_ASSIGN_ADD_SPEC_CV_CV_OBJ) \
- _(576, ZEND_ASSIGN_SUB_SPEC_VAR_CONST) \
- _(577, ZEND_ASSIGN_SUB_SPEC_VAR_CONST_DIM) \
- _(578, ZEND_ASSIGN_SUB_SPEC_VAR_CONST_OBJ) \
- _(579, ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR) \
- _(580, ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM) \
- _(581, ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ) \
- _(582, ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR) \
- _(583, ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM) \
- _(584, ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ) \
- _(586, ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM) \
- _(588, ZEND_ASSIGN_SUB_SPEC_VAR_CV) \
- _(589, ZEND_ASSIGN_SUB_SPEC_VAR_CV_DIM) \
- _(590, ZEND_ASSIGN_SUB_SPEC_VAR_CV_OBJ) \
- _(593, ZEND_ASSIGN_SUB_SPEC_UNUSED_CONST_OBJ) \
- _(596, ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ) \
- _(599, ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ) \
- _(605, ZEND_ASSIGN_SUB_SPEC_UNUSED_CV_OBJ) \
- _(606, ZEND_ASSIGN_SUB_SPEC_CV_CONST) \
- _(607, ZEND_ASSIGN_SUB_SPEC_CV_CONST_DIM) \
- _(608, ZEND_ASSIGN_SUB_SPEC_CV_CONST_OBJ) \
- _(609, ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR) \
- _(610, ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM) \
- _(611, ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ) \
- _(612, ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR) \
- _(613, ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM) \
- _(614, ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ) \
- _(616, ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM) \
- _(618, ZEND_ASSIGN_SUB_SPEC_CV_CV) \
- _(619, ZEND_ASSIGN_SUB_SPEC_CV_CV_DIM) \
- _(620, ZEND_ASSIGN_SUB_SPEC_CV_CV_OBJ) \
- _(651, ZEND_ASSIGN_MUL_SPEC_VAR_CONST) \
- _(652, ZEND_ASSIGN_MUL_SPEC_VAR_CONST_DIM) \
- _(653, ZEND_ASSIGN_MUL_SPEC_VAR_CONST_OBJ) \
- _(654, ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR) \
- _(655, ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM) \
- _(656, ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ) \
- _(657, ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR) \
- _(658, ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM) \
- _(659, ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ) \
- _(661, ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM) \
- _(663, ZEND_ASSIGN_MUL_SPEC_VAR_CV) \
- _(664, ZEND_ASSIGN_MUL_SPEC_VAR_CV_DIM) \
- _(665, ZEND_ASSIGN_MUL_SPEC_VAR_CV_OBJ) \
- _(668, ZEND_ASSIGN_MUL_SPEC_UNUSED_CONST_OBJ) \
- _(671, ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ) \
- _(674, ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ) \
- _(680, ZEND_ASSIGN_MUL_SPEC_UNUSED_CV_OBJ) \
- _(681, ZEND_ASSIGN_MUL_SPEC_CV_CONST) \
- _(682, ZEND_ASSIGN_MUL_SPEC_CV_CONST_DIM) \
- _(683, ZEND_ASSIGN_MUL_SPEC_CV_CONST_OBJ) \
- _(684, ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR) \
- _(685, ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM) \
- _(686, ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ) \
- _(687, ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR) \
- _(688, ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM) \
- _(689, ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ) \
- _(691, ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM) \
- _(693, ZEND_ASSIGN_MUL_SPEC_CV_CV) \
- _(694, ZEND_ASSIGN_MUL_SPEC_CV_CV_DIM) \
- _(695, ZEND_ASSIGN_MUL_SPEC_CV_CV_OBJ) \
- _(726, ZEND_ASSIGN_DIV_SPEC_VAR_CONST) \
- _(727, ZEND_ASSIGN_DIV_SPEC_VAR_CONST_DIM) \
- _(728, ZEND_ASSIGN_DIV_SPEC_VAR_CONST_OBJ) \
- _(729, ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR) \
- _(730, ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM) \
- _(731, ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ) \
- _(732, ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR) \
- _(733, ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM) \
- _(734, ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ) \
- _(736, ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM) \
- _(738, ZEND_ASSIGN_DIV_SPEC_VAR_CV) \
- _(739, ZEND_ASSIGN_DIV_SPEC_VAR_CV_DIM) \
- _(740, ZEND_ASSIGN_DIV_SPEC_VAR_CV_OBJ) \
- _(743, ZEND_ASSIGN_DIV_SPEC_UNUSED_CONST_OBJ) \
- _(746, ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ) \
- _(749, ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ) \
- _(755, ZEND_ASSIGN_DIV_SPEC_UNUSED_CV_OBJ) \
- _(756, ZEND_ASSIGN_DIV_SPEC_CV_CONST) \
- _(757, ZEND_ASSIGN_DIV_SPEC_CV_CONST_DIM) \
- _(758, ZEND_ASSIGN_DIV_SPEC_CV_CONST_OBJ) \
- _(759, ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR) \
- _(760, ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM) \
- _(761, ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ) \
- _(762, ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR) \
- _(763, ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM) \
- _(764, ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ) \
- _(766, ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM) \
- _(768, ZEND_ASSIGN_DIV_SPEC_CV_CV) \
- _(769, ZEND_ASSIGN_DIV_SPEC_CV_CV_DIM) \
- _(770, ZEND_ASSIGN_DIV_SPEC_CV_CV_OBJ) \
- _(801, ZEND_ASSIGN_MOD_SPEC_VAR_CONST) \
- _(802, ZEND_ASSIGN_MOD_SPEC_VAR_CONST_DIM) \
- _(803, ZEND_ASSIGN_MOD_SPEC_VAR_CONST_OBJ) \
- _(804, ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR) \
- _(805, ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM) \
- _(806, ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ) \
- _(807, ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR) \
- _(808, ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM) \
- _(809, ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ) \
- _(811, ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM) \
- _(813, ZEND_ASSIGN_MOD_SPEC_VAR_CV) \
- _(814, ZEND_ASSIGN_MOD_SPEC_VAR_CV_DIM) \
- _(815, ZEND_ASSIGN_MOD_SPEC_VAR_CV_OBJ) \
- _(818, ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_OBJ) \
- _(821, ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ) \
- _(824, ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ) \
- _(830, ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_OBJ) \
- _(831, ZEND_ASSIGN_MOD_SPEC_CV_CONST) \
- _(832, ZEND_ASSIGN_MOD_SPEC_CV_CONST_DIM) \
- _(833, ZEND_ASSIGN_MOD_SPEC_CV_CONST_OBJ) \
- _(834, ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR) \
- _(835, ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM) \
- _(836, ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ) \
- _(837, ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR) \
- _(838, ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM) \
- _(839, ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ) \
- _(841, ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM) \
- _(843, ZEND_ASSIGN_MOD_SPEC_CV_CV) \
- _(844, ZEND_ASSIGN_MOD_SPEC_CV_CV_DIM) \
- _(845, ZEND_ASSIGN_MOD_SPEC_CV_CV_OBJ) \
- _(876, ZEND_ASSIGN_SL_SPEC_VAR_CONST) \
- _(877, ZEND_ASSIGN_SL_SPEC_VAR_CONST_DIM) \
- _(878, ZEND_ASSIGN_SL_SPEC_VAR_CONST_OBJ) \
- _(879, ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR) \
- _(880, ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM) \
- _(881, ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ) \
- _(882, ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR) \
- _(883, ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM) \
- _(884, ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ) \
- _(886, ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM) \
- _(888, ZEND_ASSIGN_SL_SPEC_VAR_CV) \
- _(889, ZEND_ASSIGN_SL_SPEC_VAR_CV_DIM) \
- _(890, ZEND_ASSIGN_SL_SPEC_VAR_CV_OBJ) \
- _(893, ZEND_ASSIGN_SL_SPEC_UNUSED_CONST_OBJ) \
- _(896, ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ) \
- _(899, ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ) \
- _(905, ZEND_ASSIGN_SL_SPEC_UNUSED_CV_OBJ) \
- _(906, ZEND_ASSIGN_SL_SPEC_CV_CONST) \
- _(907, ZEND_ASSIGN_SL_SPEC_CV_CONST_DIM) \
- _(908, ZEND_ASSIGN_SL_SPEC_CV_CONST_OBJ) \
- _(909, ZEND_ASSIGN_SL_SPEC_CV_TMPVAR) \
- _(910, ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM) \
- _(911, ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ) \
- _(912, ZEND_ASSIGN_SL_SPEC_CV_TMPVAR) \
- _(913, ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM) \
- _(914, ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ) \
- _(916, ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM) \
- _(918, ZEND_ASSIGN_SL_SPEC_CV_CV) \
- _(919, ZEND_ASSIGN_SL_SPEC_CV_CV_DIM) \
- _(920, ZEND_ASSIGN_SL_SPEC_CV_CV_OBJ) \
- _(951, ZEND_ASSIGN_SR_SPEC_VAR_CONST) \
- _(952, ZEND_ASSIGN_SR_SPEC_VAR_CONST_DIM) \
- _(953, ZEND_ASSIGN_SR_SPEC_VAR_CONST_OBJ) \
- _(954, ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR) \
- _(955, ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM) \
- _(956, ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ) \
- _(957, ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR) \
- _(958, ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM) \
- _(959, ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ) \
- _(961, ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM) \
- _(963, ZEND_ASSIGN_SR_SPEC_VAR_CV) \
- _(964, ZEND_ASSIGN_SR_SPEC_VAR_CV_DIM) \
- _(965, ZEND_ASSIGN_SR_SPEC_VAR_CV_OBJ) \
- _(968, ZEND_ASSIGN_SR_SPEC_UNUSED_CONST_OBJ) \
- _(971, ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ) \
- _(974, ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ) \
- _(980, ZEND_ASSIGN_SR_SPEC_UNUSED_CV_OBJ) \
- _(981, ZEND_ASSIGN_SR_SPEC_CV_CONST) \
- _(982, ZEND_ASSIGN_SR_SPEC_CV_CONST_DIM) \
- _(983, ZEND_ASSIGN_SR_SPEC_CV_CONST_OBJ) \
- _(984, ZEND_ASSIGN_SR_SPEC_CV_TMPVAR) \
- _(985, ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM) \
- _(986, ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ) \
- _(987, ZEND_ASSIGN_SR_SPEC_CV_TMPVAR) \
- _(988, ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM) \
- _(989, ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ) \
- _(991, ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM) \
- _(993, ZEND_ASSIGN_SR_SPEC_CV_CV) \
- _(994, ZEND_ASSIGN_SR_SPEC_CV_CV_DIM) \
- _(995, ZEND_ASSIGN_SR_SPEC_CV_CV_OBJ) \
- _(1026, ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST) \
- _(1027, ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_DIM) \
- _(1028, ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_OBJ) \
- _(1029, ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR) \
- _(1030, ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM) \
- _(1031, ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ) \
- _(1032, ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR) \
- _(1033, ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM) \
- _(1034, ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ) \
- _(1036, ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM) \
- _(1038, ZEND_ASSIGN_CONCAT_SPEC_VAR_CV) \
- _(1039, ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_DIM) \
- _(1040, ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_OBJ) \
- _(1043, ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CONST_OBJ) \
- _(1046, ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ) \
- _(1049, ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ) \
- _(1055, ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CV_OBJ) \
- _(1056, ZEND_ASSIGN_CONCAT_SPEC_CV_CONST) \
- _(1057, ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_DIM) \
- _(1058, ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_OBJ) \
- _(1059, ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR) \
- _(1060, ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM) \
- _(1061, ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ) \
- _(1062, ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR) \
- _(1063, ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM) \
- _(1064, ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ) \
- _(1066, ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM) \
- _(1068, ZEND_ASSIGN_CONCAT_SPEC_CV_CV) \
- _(1069, ZEND_ASSIGN_CONCAT_SPEC_CV_CV_DIM) \
- _(1070, ZEND_ASSIGN_CONCAT_SPEC_CV_CV_OBJ) \
- _(1101, ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST) \
- _(1102, ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_DIM) \
- _(1103, ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_OBJ) \
- _(1104, ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR) \
- _(1105, ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM) \
- _(1106, ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ) \
- _(1107, ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR) \
- _(1108, ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM) \
- _(1109, ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ) \
- _(1111, ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM) \
- _(1113, ZEND_ASSIGN_BW_OR_SPEC_VAR_CV) \
- _(1114, ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_DIM) \
- _(1115, ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_OBJ) \
- _(1118, ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CONST_OBJ) \
- _(1121, ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ) \
- _(1124, ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ) \
- _(1130, ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CV_OBJ) \
- _(1131, ZEND_ASSIGN_BW_OR_SPEC_CV_CONST) \
- _(1132, ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_DIM) \
- _(1133, ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_OBJ) \
- _(1134, ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR) \
- _(1135, ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM) \
- _(1136, ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ) \
- _(1137, ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR) \
- _(1138, ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM) \
- _(1139, ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ) \
- _(1141, ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM) \
- _(1143, ZEND_ASSIGN_BW_OR_SPEC_CV_CV) \
- _(1144, ZEND_ASSIGN_BW_OR_SPEC_CV_CV_DIM) \
- _(1145, ZEND_ASSIGN_BW_OR_SPEC_CV_CV_OBJ) \
- _(1176, ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST) \
- _(1177, ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_DIM) \
- _(1178, ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_OBJ) \
- _(1179, ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR) \
- _(1180, ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM) \
- _(1181, ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ) \
- _(1182, ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR) \
- _(1183, ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM) \
- _(1184, ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ) \
- _(1186, ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM) \
- _(1188, ZEND_ASSIGN_BW_AND_SPEC_VAR_CV) \
- _(1189, ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_DIM) \
- _(1190, ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_OBJ) \
- _(1193, ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CONST_OBJ) \
- _(1196, ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ) \
- _(1199, ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ) \
- _(1205, ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CV_OBJ) \
- _(1206, ZEND_ASSIGN_BW_AND_SPEC_CV_CONST) \
- _(1207, ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_DIM) \
- _(1208, ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_OBJ) \
- _(1209, ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR) \
- _(1210, ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM) \
- _(1211, ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ) \
- _(1212, ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR) \
- _(1213, ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM) \
- _(1214, ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ) \
- _(1216, ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM) \
- _(1218, ZEND_ASSIGN_BW_AND_SPEC_CV_CV) \
- _(1219, ZEND_ASSIGN_BW_AND_SPEC_CV_CV_DIM) \
- _(1220, ZEND_ASSIGN_BW_AND_SPEC_CV_CV_OBJ) \
- _(1251, ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST) \
- _(1252, ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_DIM) \
- _(1253, ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_OBJ) \
- _(1254, ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR) \
- _(1255, ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM) \
- _(1256, ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ) \
- _(1257, ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR) \
- _(1258, ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM) \
- _(1259, ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ) \
- _(1261, ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM) \
- _(1263, ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV) \
- _(1264, ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_DIM) \
- _(1265, ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_OBJ) \
- _(1268, ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CONST_OBJ) \
- _(1271, ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ) \
- _(1274, ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ) \
- _(1280, ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CV_OBJ) \
- _(1281, ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST) \
- _(1282, ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_DIM) \
- _(1283, ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_OBJ) \
- _(1284, ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR) \
- _(1285, ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM) \
- _(1286, ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ) \
- _(1287, ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR) \
- _(1288, ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM) \
- _(1289, ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ) \
- _(1291, ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM) \
- _(1293, ZEND_ASSIGN_BW_XOR_SPEC_CV_CV) \
- _(1294, ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_DIM) \
- _(1295, ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_OBJ) \
- _(1300, ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED) \
- _(1301, ZEND_PRE_INC_SPEC_VAR_RETVAL_USED) \
- _(1304, ZEND_PRE_INC_SPEC_CV_RETVAL_UNUSED) \
- _(1305, ZEND_PRE_INC_SPEC_CV_RETVAL_USED) \
- _(1310, ZEND_PRE_DEC_SPEC_VAR_RETVAL_UNUSED) \
- _(1311, ZEND_PRE_DEC_SPEC_VAR_RETVAL_USED) \
- _(1314, ZEND_PRE_DEC_SPEC_CV_RETVAL_UNUSED) \
- _(1315, ZEND_PRE_DEC_SPEC_CV_RETVAL_USED) \
- _(1318, ZEND_POST_INC_SPEC_VAR) \
- _(1320, ZEND_POST_INC_SPEC_CV) \
- _(1323, ZEND_POST_DEC_SPEC_VAR) \
- _(1325, ZEND_POST_DEC_SPEC_CV) \
- _(1346, ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_UNUSED) \
- _(1347, ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED) \
- _(1348, ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_UNUSED) \
- _(1349, ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_USED) \
- _(1350, ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_UNUSED) \
- _(1351, ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_USED) \
- _(1354, ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_UNUSED) \
- _(1355, ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_USED) \
- _(1366, ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_UNUSED) \
- _(1367, ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED) \
- _(1368, ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_UNUSED) \
- _(1369, ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_USED) \
- _(1370, ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED) \
- _(1371, ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_USED) \
- _(1374, ZEND_ASSIGN_SPEC_CV_CV_RETVAL_UNUSED) \
- _(1375, ZEND_ASSIGN_SPEC_CV_CV_RETVAL_USED) \
- _(1388, ZEND_ASSIGN_REF_SPEC_VAR_VAR) \
- _(1390, ZEND_ASSIGN_REF_SPEC_VAR_CV) \
- _(1398, ZEND_ASSIGN_REF_SPEC_CV_VAR) \
- _(1400, ZEND_ASSIGN_REF_SPEC_CV_CV) \
- _(1401, ZEND_ECHO_SPEC_CONST) \
- _(1402, ZEND_ECHO_SPEC_TMPVAR) \
- _(1403, ZEND_ECHO_SPEC_TMPVAR) \
- _(1405, ZEND_ECHO_SPEC_CV) \
- _(1406, ZEND_GENERATOR_CREATE_SPEC) \
- _(1407, ZEND_JMP_SPEC) \
- _(1408, ZEND_JMPZ_SPEC_CONST) \
- _(1409, ZEND_JMPZ_SPEC_TMPVAR) \
- _(1410, ZEND_JMPZ_SPEC_TMPVAR) \
- _(1412, ZEND_JMPZ_SPEC_CV) \
- _(1413, ZEND_JMPNZ_SPEC_CONST) \
- _(1414, ZEND_JMPNZ_SPEC_TMPVAR) \
- _(1415, ZEND_JMPNZ_SPEC_TMPVAR) \
- _(1417, ZEND_JMPNZ_SPEC_CV) \
- _(1418, ZEND_JMPZNZ_SPEC_CONST) \
- _(1419, ZEND_JMPZNZ_SPEC_TMPVAR) \
- _(1420, ZEND_JMPZNZ_SPEC_TMPVAR) \
- _(1422, ZEND_JMPZNZ_SPEC_CV) \
- _(1423, ZEND_JMPZ_EX_SPEC_CONST) \
- _(1424, ZEND_JMPZ_EX_SPEC_TMPVAR) \
- _(1425, ZEND_JMPZ_EX_SPEC_TMPVAR) \
- _(1427, ZEND_JMPZ_EX_SPEC_CV) \
- _(1428, ZEND_JMPNZ_EX_SPEC_CONST) \
- _(1429, ZEND_JMPNZ_EX_SPEC_TMPVAR) \
- _(1430, ZEND_JMPNZ_EX_SPEC_TMPVAR) \
- _(1432, ZEND_JMPNZ_EX_SPEC_CV) \
- _(1433, ZEND_CASE_SPEC_TMPVAR_CONST) \
- _(1434, ZEND_CASE_SPEC_TMPVAR_TMPVAR) \
- _(1435, ZEND_CASE_SPEC_TMPVAR_TMPVAR) \
- _(1437, ZEND_CASE_SPEC_TMPVAR_CV) \
- _(1438, ZEND_CHECK_VAR_SPEC_CV_UNUSED) \
- _(1439, ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR) \
- _(1440, ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_QUICK) \
- _(1443, ZEND_MAKE_REF_SPEC_VAR_UNUSED) \
- _(1445, ZEND_MAKE_REF_SPEC_CV_UNUSED) \
- _(1446, ZEND_BOOL_SPEC_CONST) \
- _(1447, ZEND_BOOL_SPEC_TMPVAR) \
- _(1448, ZEND_BOOL_SPEC_TMPVAR) \
- _(1450, ZEND_BOOL_SPEC_CV) \
- _(1451, ZEND_FAST_CONCAT_SPEC_CONST_CONST) \
- _(1452, ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR) \
- _(1453, ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR) \
- _(1455, ZEND_FAST_CONCAT_SPEC_CONST_CV) \
- _(1456, ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST) \
- _(1457, ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR) \
- _(1458, ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR) \
- _(1460, ZEND_FAST_CONCAT_SPEC_TMPVAR_CV) \
- _(1461, ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST) \
- _(1462, ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR) \
- _(1463, ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR) \
- _(1465, ZEND_FAST_CONCAT_SPEC_TMPVAR_CV) \
- _(1471, ZEND_FAST_CONCAT_SPEC_CV_CONST) \
- _(1472, ZEND_FAST_CONCAT_SPEC_CV_TMPVAR) \
- _(1473, ZEND_FAST_CONCAT_SPEC_CV_TMPVAR) \
- _(1475, ZEND_FAST_CONCAT_SPEC_CV_CV) \
- _(1476, ZEND_ROPE_INIT_SPEC_UNUSED_CONST) \
- _(1477, ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR) \
- _(1478, ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR) \
- _(1480, ZEND_ROPE_INIT_SPEC_UNUSED_CV) \
- _(1481, ZEND_ROPE_ADD_SPEC_TMP_CONST) \
- _(1482, ZEND_ROPE_ADD_SPEC_TMP_TMPVAR) \
- _(1483, ZEND_ROPE_ADD_SPEC_TMP_TMPVAR) \
- _(1485, ZEND_ROPE_ADD_SPEC_TMP_CV) \
- _(1486, ZEND_ROPE_END_SPEC_TMP_CONST) \
- _(1487, ZEND_ROPE_END_SPEC_TMP_TMPVAR) \
- _(1488, ZEND_ROPE_END_SPEC_TMP_TMPVAR) \
- _(1490, ZEND_ROPE_END_SPEC_TMP_CV) \
- _(1491, ZEND_BEGIN_SILENCE_SPEC) \
- _(1492, ZEND_END_SILENCE_SPEC_TMP) \
- _(1493, ZEND_INIT_FCALL_BY_NAME_SPEC_CONST) \
- _(1494, ZEND_DO_FCALL_SPEC_RETVAL_UNUSED) \
- _(1495, ZEND_DO_FCALL_SPEC_RETVAL_USED) \
- _(1496, ZEND_INIT_FCALL_SPEC_CONST) \
- _(1497, ZEND_RETURN_SPEC_CONST) \
- _(1498, ZEND_RETURN_SPEC_TMP) \
- _(1499, ZEND_RETURN_SPEC_VAR) \
- _(1501, ZEND_RETURN_SPEC_CV) \
- _(1502, ZEND_RECV_SPEC_UNUSED) \
- _(1503, ZEND_RECV_INIT_SPEC_CONST) \
- _(1504, ZEND_SEND_VAL_SPEC_CONST) \
- _(1505, ZEND_SEND_VAL_SPEC_TMPVAR) \
- _(1506, ZEND_SEND_VAL_SPEC_TMPVAR) \
- _(1513, ZEND_SEND_VAR_EX_SPEC_VAR) \
- _(1514, ZEND_SEND_VAR_EX_SPEC_VAR_QUICK) \
- _(1517, ZEND_SEND_VAR_EX_SPEC_CV) \
- _(1518, ZEND_SEND_VAR_EX_SPEC_CV_QUICK) \
- _(1521, ZEND_SEND_REF_SPEC_VAR) \
- _(1523, ZEND_SEND_REF_SPEC_CV) \
- _(1524, ZEND_NEW_SPEC_CONST_UNUSED) \
- _(1526, ZEND_NEW_SPEC_VAR_UNUSED) \
- _(1527, ZEND_NEW_SPEC_UNUSED_UNUSED) \
- _(1529, ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST) \
- _(1530, ZEND_FREE_SPEC_TMPVAR) \
- _(1531, ZEND_INIT_ARRAY_SPEC_CONST_CONST) \
- _(1532, ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR) \
- _(1533, ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR) \
- _(1534, ZEND_INIT_ARRAY_SPEC_CONST_UNUSED) \
- _(1535, ZEND_INIT_ARRAY_SPEC_CONST_CV) \
- _(1536, ZEND_INIT_ARRAY_SPEC_TMP_CONST) \
- _(1537, ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR) \
- _(1538, ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR) \
- _(1539, ZEND_INIT_ARRAY_SPEC_TMP_UNUSED) \
- _(1540, ZEND_INIT_ARRAY_SPEC_TMP_CV) \
- _(1541, ZEND_INIT_ARRAY_SPEC_VAR_CONST) \
- _(1542, ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR) \
- _(1543, ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR) \
- _(1544, ZEND_INIT_ARRAY_SPEC_VAR_UNUSED) \
- _(1545, ZEND_INIT_ARRAY_SPEC_VAR_CV) \
- _(1551, ZEND_INIT_ARRAY_SPEC_CV_CONST) \
- _(1552, ZEND_INIT_ARRAY_SPEC_CV_TMPVAR) \
- _(1553, ZEND_INIT_ARRAY_SPEC_CV_TMPVAR) \
- _(1554, ZEND_INIT_ARRAY_SPEC_CV_UNUSED) \
- _(1555, ZEND_INIT_ARRAY_SPEC_CV_CV) \
- _(1556, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST) \
- _(1557, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR) \
- _(1558, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR) \
- _(1559, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED) \
- _(1560, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV) \
- _(1561, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST) \
- _(1562, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR) \
- _(1563, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR) \
- _(1564, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED) \
- _(1565, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV) \
- _(1566, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST) \
- _(1567, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR) \
- _(1568, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR) \
- _(1569, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED) \
- _(1570, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV) \
- _(1576, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST) \
- _(1577, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR) \
- _(1578, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR) \
- _(1579, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED) \
- _(1580, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV) \
- _(1581, ZEND_INCLUDE_OR_EVAL_SPEC_CONST) \
- _(1582, ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR) \
- _(1583, ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR) \
- _(1585, ZEND_INCLUDE_OR_EVAL_SPEC_CV) \
- _(1586, ZEND_UNSET_VAR_SPEC_CONST_UNUSED) \
- _(1587, ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED) \
- _(1588, ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED) \
- _(1590, ZEND_UNSET_VAR_SPEC_CV_UNUSED) \
- _(1601, ZEND_UNSET_DIM_SPEC_VAR_CONST) \
- _(1602, ZEND_UNSET_DIM_SPEC_VAR_TMPVAR) \
- _(1603, ZEND_UNSET_DIM_SPEC_VAR_TMPVAR) \
- _(1605, ZEND_UNSET_DIM_SPEC_VAR_CV) \
- _(1611, ZEND_UNSET_DIM_SPEC_CV_CONST) \
- _(1612, ZEND_UNSET_DIM_SPEC_CV_TMPVAR) \
- _(1613, ZEND_UNSET_DIM_SPEC_CV_TMPVAR) \
- _(1615, ZEND_UNSET_DIM_SPEC_CV_CV) \
- _(1626, ZEND_UNSET_OBJ_SPEC_VAR_CONST) \
- _(1627, ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR) \
- _(1628, ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR) \
- _(1630, ZEND_UNSET_OBJ_SPEC_VAR_CV) \
- _(1631, ZEND_UNSET_OBJ_SPEC_UNUSED_CONST) \
- _(1632, ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR) \
- _(1633, ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR) \
- _(1635, ZEND_UNSET_OBJ_SPEC_UNUSED_CV) \
- _(1636, ZEND_UNSET_OBJ_SPEC_CV_CONST) \
- _(1637, ZEND_UNSET_OBJ_SPEC_CV_TMPVAR) \
- _(1638, ZEND_UNSET_OBJ_SPEC_CV_TMPVAR) \
- _(1640, ZEND_UNSET_OBJ_SPEC_CV_CV) \
- _(1641, ZEND_FE_RESET_R_SPEC_CONST) \
- _(1642, ZEND_FE_RESET_R_SPEC_TMP) \
- _(1643, ZEND_FE_RESET_R_SPEC_VAR) \
- _(1645, ZEND_FE_RESET_R_SPEC_CV) \
- _(1646, ZEND_FE_FETCH_R_SPEC_VAR) \
- _(1647, ZEND_EXIT_SPEC_CONST) \
- _(1648, ZEND_EXIT_SPEC_TMPVAR) \
- _(1649, ZEND_EXIT_SPEC_TMPVAR) \
- _(1650, ZEND_EXIT_SPEC_UNUSED) \
- _(1651, ZEND_EXIT_SPEC_CV) \
- _(1652, ZEND_FETCH_R_SPEC_CONST_UNUSED) \
- _(1653, ZEND_FETCH_R_SPEC_TMPVAR_UNUSED) \
- _(1654, ZEND_FETCH_R_SPEC_TMPVAR_UNUSED) \
- _(1656, ZEND_FETCH_R_SPEC_CV_UNUSED) \
- _(1657, ZEND_FETCH_DIM_R_SPEC_CONST_CONST) \
- _(1658, ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR) \
- _(1659, ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR) \
- _(1661, ZEND_FETCH_DIM_R_SPEC_CONST_CV) \
- _(1662, ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST) \
- _(1663, ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR) \
- _(1664, ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR) \
- _(1666, ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV) \
- _(1667, ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST) \
- _(1668, ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR) \
- _(1669, ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR) \
- _(1671, ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV) \
- _(1677, ZEND_FETCH_DIM_R_SPEC_CV_CONST) \
- _(1678, ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR) \
- _(1679, ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR) \
- _(1681, ZEND_FETCH_DIM_R_SPEC_CV_CV) \
- _(1682, ZEND_FETCH_OBJ_R_SPEC_CONST_CONST) \
- _(1683, ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR) \
- _(1684, ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR) \
- _(1686, ZEND_FETCH_OBJ_R_SPEC_CONST_CV) \
- _(1687, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST) \
- _(1688, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR) \
- _(1689, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR) \
- _(1691, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV) \
- _(1692, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST) \
- _(1693, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR) \
- _(1694, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR) \
- _(1696, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV) \
- _(1697, ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST) \
- _(1698, ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR) \
- _(1699, ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR) \
- _(1701, ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV) \
- _(1702, ZEND_FETCH_OBJ_R_SPEC_CV_CONST) \
- _(1703, ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR) \
- _(1704, ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR) \
- _(1706, ZEND_FETCH_OBJ_R_SPEC_CV_CV) \
- _(1707, ZEND_FETCH_W_SPEC_CONST_UNUSED) \
- _(1708, ZEND_FETCH_W_SPEC_TMPVAR_UNUSED) \
- _(1709, ZEND_FETCH_W_SPEC_TMPVAR_UNUSED) \
- _(1711, ZEND_FETCH_W_SPEC_CV_UNUSED) \
- _(1722, ZEND_FETCH_DIM_W_SPEC_VAR_CONST) \
- _(1723, ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR) \
- _(1724, ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR) \
- _(1725, ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED) \
- _(1726, ZEND_FETCH_DIM_W_SPEC_VAR_CV) \
- _(1732, ZEND_FETCH_DIM_W_SPEC_CV_CONST) \
- _(1733, ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR) \
- _(1734, ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR) \
- _(1735, ZEND_FETCH_DIM_W_SPEC_CV_UNUSED) \
- _(1736, ZEND_FETCH_DIM_W_SPEC_CV_CV) \
- _(1747, ZEND_FETCH_OBJ_W_SPEC_VAR_CONST) \
- _(1748, ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR) \
- _(1749, ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR) \
- _(1751, ZEND_FETCH_OBJ_W_SPEC_VAR_CV) \
- _(1752, ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST) \
- _(1753, ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR) \
- _(1754, ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR) \
- _(1756, ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV) \
- _(1757, ZEND_FETCH_OBJ_W_SPEC_CV_CONST) \
- _(1758, ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR) \
- _(1759, ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR) \
- _(1761, ZEND_FETCH_OBJ_W_SPEC_CV_CV) \
- _(1762, ZEND_FETCH_RW_SPEC_CONST_UNUSED) \
- _(1763, ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED) \
- _(1764, ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED) \
- _(1766, ZEND_FETCH_RW_SPEC_CV_UNUSED) \
- _(1777, ZEND_FETCH_DIM_RW_SPEC_VAR_CONST) \
- _(1778, ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR) \
- _(1779, ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR) \
- _(1780, ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED) \
- _(1781, ZEND_FETCH_DIM_RW_SPEC_VAR_CV) \
- _(1787, ZEND_FETCH_DIM_RW_SPEC_CV_CONST) \
- _(1788, ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR) \
- _(1789, ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR) \
- _(1790, ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED) \
- _(1791, ZEND_FETCH_DIM_RW_SPEC_CV_CV) \
- _(1802, ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST) \
- _(1803, ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR) \
- _(1804, ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR) \
- _(1806, ZEND_FETCH_OBJ_RW_SPEC_VAR_CV) \
- _(1807, ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST) \
- _(1808, ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR) \
- _(1809, ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR) \
- _(1811, ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV) \
- _(1812, ZEND_FETCH_OBJ_RW_SPEC_CV_CONST) \
- _(1813, ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR) \
- _(1814, ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR) \
- _(1816, ZEND_FETCH_OBJ_RW_SPEC_CV_CV) \
- _(1817, ZEND_FETCH_IS_SPEC_CONST_UNUSED) \
- _(1818, ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED) \
- _(1819, ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED) \
- _(1821, ZEND_FETCH_IS_SPEC_CV_UNUSED) \
- _(1822, ZEND_FETCH_DIM_IS_SPEC_CONST_CONST) \
- _(1823, ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR) \
- _(1824, ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR) \
- _(1826, ZEND_FETCH_DIM_IS_SPEC_CONST_CV) \
- _(1827, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST) \
- _(1828, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR) \
- _(1829, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR) \
- _(1831, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV) \
- _(1832, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST) \
- _(1833, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR) \
- _(1834, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR) \
- _(1836, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV) \
- _(1842, ZEND_FETCH_DIM_IS_SPEC_CV_CONST) \
- _(1843, ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR) \
- _(1844, ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR) \
- _(1846, ZEND_FETCH_DIM_IS_SPEC_CV_CV) \
- _(1847, ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST) \
- _(1848, ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR) \
- _(1849, ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR) \
- _(1851, ZEND_FETCH_OBJ_IS_SPEC_CONST_CV) \
- _(1852, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST) \
- _(1853, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR) \
- _(1854, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR) \
- _(1856, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV) \
- _(1857, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST) \
- _(1858, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR) \
- _(1859, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR) \
- _(1861, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV) \
- _(1862, ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST) \
- _(1863, ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR) \
- _(1864, ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR) \
- _(1866, ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV) \
- _(1867, ZEND_FETCH_OBJ_IS_SPEC_CV_CONST) \
- _(1868, ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR) \
- _(1869, ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR) \
- _(1871, ZEND_FETCH_OBJ_IS_SPEC_CV_CV) \
- _(1872, ZEND_FETCH_FUNC_ARG_SPEC_CONST_UNUSED) \
- _(1873, ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED) \
- _(1874, ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED) \
- _(1876, ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED) \
- _(1877, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST) \
- _(1878, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR) \
- _(1879, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR) \
- _(1880, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED) \
- _(1881, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV) \
- _(1882, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST) \
- _(1883, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR) \
- _(1884, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR) \
- _(1885, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED) \
- _(1886, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CV) \
- _(1887, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST) \
- _(1888, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR) \
- _(1889, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR) \
- _(1890, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED) \
- _(1891, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV) \
- _(1897, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST) \
- _(1898, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR) \
- _(1899, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR) \
- _(1900, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED) \
- _(1901, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV) \
- _(1902, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST) \
- _(1903, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR) \
- _(1904, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR) \
- _(1906, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV) \
- _(1907, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST) \
- _(1908, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR) \
- _(1909, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR) \
- _(1911, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV) \
- _(1912, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST) \
- _(1913, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR) \
- _(1914, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR) \
- _(1916, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV) \
- _(1917, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST) \
- _(1918, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR) \
- _(1919, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR) \
- _(1921, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV) \
- _(1922, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST) \
- _(1923, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR) \
- _(1924, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR) \
- _(1926, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV) \
- _(1927, ZEND_FETCH_UNSET_SPEC_CONST_UNUSED) \
- _(1928, ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED) \
- _(1929, ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED) \
- _(1931, ZEND_FETCH_UNSET_SPEC_CV_UNUSED) \
- _(1942, ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST) \
- _(1943, ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR) \
- _(1944, ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR) \
- _(1946, ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV) \
- _(1952, ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST) \
- _(1953, ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR) \
- _(1954, ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR) \
- _(1956, ZEND_FETCH_DIM_UNSET_SPEC_CV_CV) \
- _(1967, ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST) \
- _(1968, ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR) \
- _(1969, ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR) \
- _(1971, ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV) \
- _(1972, ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST) \
- _(1973, ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR) \
- _(1974, ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR) \
- _(1976, ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV) \
- _(1977, ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST) \
- _(1978, ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR) \
- _(1979, ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR) \
- _(1981, ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV) \
- _(1982, ZEND_FETCH_LIST_R_SPEC_CONST_CONST) \
- _(1983, ZEND_FETCH_LIST_R_SPEC_CONST_TMPVAR) \
- _(1984, ZEND_FETCH_LIST_R_SPEC_CONST_TMPVAR) \
- _(1986, ZEND_FETCH_LIST_R_SPEC_CONST_CV) \
- _(1987, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST) \
- _(1988, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
- _(1989, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
- _(1991, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV) \
- _(1992, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST) \
- _(1993, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
- _(1994, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
- _(1996, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV) \
- _(2002, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST) \
- _(2003, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
- _(2004, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
- _(2006, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV) \
- _(2007, ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST) \
- _(2008, ZEND_CHECK_FUNC_ARG_SPEC_UNUSED) \
- _(2009, ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_QUICK) \
- _(2010, ZEND_EXT_STMT_SPEC) \
- _(2011, ZEND_EXT_FCALL_BEGIN_SPEC) \
- _(2012, ZEND_EXT_FCALL_END_SPEC) \
- _(2013, ZEND_EXT_NOP_SPEC) \
- _(2014, ZEND_TICKS_SPEC) \
- _(2015, ZEND_SEND_VAR_NO_REF_SPEC_VAR) \
- _(2016, ZEND_CATCH_SPEC_CONST) \
- _(2017, ZEND_THROW_SPEC_CONST) \
- _(2018, ZEND_THROW_SPEC_TMP) \
- _(2019, ZEND_THROW_SPEC_VAR) \
- _(2021, ZEND_THROW_SPEC_CV) \
- _(2022, ZEND_FETCH_CLASS_SPEC_UNUSED_CONST) \
- _(2023, ZEND_FETCH_CLASS_SPEC_UNUSED_TMPVAR) \
- _(2024, ZEND_FETCH_CLASS_SPEC_UNUSED_TMPVAR) \
- _(2025, ZEND_FETCH_CLASS_SPEC_UNUSED_UNUSED) \
- _(2026, ZEND_FETCH_CLASS_SPEC_UNUSED_CV) \
- _(2027, ZEND_CLONE_SPEC_CONST) \
- _(2028, ZEND_CLONE_SPEC_TMPVAR) \
- _(2029, ZEND_CLONE_SPEC_TMPVAR) \
- _(2030, ZEND_CLONE_SPEC_UNUSED) \
- _(2031, ZEND_CLONE_SPEC_CV) \
- _(2032, ZEND_RETURN_BY_REF_SPEC_CONST) \
- _(2033, ZEND_RETURN_BY_REF_SPEC_TMP) \
- _(2034, ZEND_RETURN_BY_REF_SPEC_VAR) \
- _(2036, ZEND_RETURN_BY_REF_SPEC_CV) \
- _(2037, ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST) \
- _(2038, ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR) \
- _(2039, ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR) \
- _(2041, ZEND_INIT_METHOD_CALL_SPEC_CONST_CV) \
- _(2042, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST) \
- _(2043, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR) \
- _(2044, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR) \
- _(2046, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV) \
- _(2047, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST) \
- _(2048, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR) \
- _(2049, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR) \
- _(2051, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV) \
- _(2052, ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST) \
- _(2053, ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR) \
- _(2054, ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR) \
- _(2056, ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV) \
- _(2057, ZEND_INIT_METHOD_CALL_SPEC_CV_CONST) \
- _(2058, ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR) \
- _(2059, ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR) \
- _(2061, ZEND_INIT_METHOD_CALL_SPEC_CV_CV) \
- _(2062, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST) \
- _(2063, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR) \
- _(2064, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR) \
- _(2065, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED) \
- _(2066, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV) \
- _(2072, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST) \
- _(2073, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR) \
- _(2074, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR) \
- _(2075, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED) \
- _(2076, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV) \
- _(2077, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CONST) \
- _(2078, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR) \
- _(2079, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR) \
- _(2080, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED) \
- _(2081, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CV) \
- _(2087, ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED) \
- _(2088, ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED) \
- _(2089, ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED) \
- _(2091, ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED) \
- _(2092, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST) \
- _(2093, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR) \
- _(2094, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR) \
- _(2096, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV) \
- _(2097, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST) \
- _(2098, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR) \
- _(2099, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR) \
- _(2101, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV) \
- _(2102, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST) \
- _(2103, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR) \
- _(2104, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR) \
- _(2106, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV) \
- _(2112, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST) \
- _(2113, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR) \
- _(2114, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR) \
- _(2116, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV) \
- _(2117, ZEND_SEND_VAL_EX_SPEC_CONST) \
- _(2118, ZEND_SEND_VAL_EX_SPEC_CONST_QUICK) \
- _(2119, ZEND_SEND_VAL_EX_SPEC_TMP) \
- _(2120, ZEND_SEND_VAL_EX_SPEC_TMP_QUICK) \
- _(2129, ZEND_SEND_VAR_SPEC_VAR) \
- _(2131, ZEND_SEND_VAR_SPEC_CV) \
- _(2132, ZEND_INIT_USER_CALL_SPEC_CONST_CONST) \
- _(2133, ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR) \
- _(2134, ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR) \
- _(2136, ZEND_INIT_USER_CALL_SPEC_CONST_CV) \
- _(2137, ZEND_SEND_ARRAY_SPEC) \
- _(2138, ZEND_SEND_USER_SPEC_CONST) \
- _(2139, ZEND_SEND_USER_SPEC_TMP) \
- _(2140, ZEND_SEND_USER_SPEC_VAR) \
- _(2142, ZEND_SEND_USER_SPEC_CV) \
- _(2143, ZEND_STRLEN_SPEC_CONST) \
- _(2144, ZEND_STRLEN_SPEC_TMPVAR) \
- _(2145, ZEND_STRLEN_SPEC_TMPVAR) \
- _(2147, ZEND_STRLEN_SPEC_CV) \
- _(2148, ZEND_DEFINED_SPEC_CONST) \
- _(2149, ZEND_TYPE_CHECK_SPEC_CONST) \
- _(2150, ZEND_TYPE_CHECK_SPEC_TMPVAR) \
- _(2151, ZEND_TYPE_CHECK_SPEC_TMPVAR) \
- _(2153, ZEND_TYPE_CHECK_SPEC_CV) \
- _(2154, ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED) \
- _(2155, ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED) \
- _(2156, ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED) \
- _(2157, ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED) \
- _(2158, ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED) \
- _(2159, ZEND_FE_RESET_RW_SPEC_CONST) \
- _(2160, ZEND_FE_RESET_RW_SPEC_TMP) \
- _(2161, ZEND_FE_RESET_RW_SPEC_VAR) \
- _(2163, ZEND_FE_RESET_RW_SPEC_CV) \
- _(2164, ZEND_FE_FETCH_RW_SPEC_VAR) \
- _(2165, ZEND_FE_FREE_SPEC_TMPVAR) \
- _(2166, ZEND_INIT_DYNAMIC_CALL_SPEC_CONST) \
- _(2167, ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR) \
- _(2168, ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR) \
- _(2170, ZEND_INIT_DYNAMIC_CALL_SPEC_CV) \
- _(2171, ZEND_DO_ICALL_SPEC_RETVAL_UNUSED) \
- _(2172, ZEND_DO_ICALL_SPEC_RETVAL_USED) \
- _(2173, ZEND_DO_UCALL_SPEC_RETVAL_UNUSED) \
- _(2174, ZEND_DO_UCALL_SPEC_RETVAL_USED) \
- _(2175, ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_UNUSED) \
- _(2176, ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED) \
- _(2187, ZEND_PRE_INC_OBJ_SPEC_VAR_CONST) \
- _(2188, ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR) \
- _(2189, ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR) \
- _(2191, ZEND_PRE_INC_OBJ_SPEC_VAR_CV) \
- _(2192, ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST) \
- _(2193, ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR) \
- _(2194, ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR) \
- _(2196, ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV) \
- _(2197, ZEND_PRE_INC_OBJ_SPEC_CV_CONST) \
- _(2198, ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR) \
- _(2199, ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR) \
- _(2201, ZEND_PRE_INC_OBJ_SPEC_CV_CV) \
- _(2212, ZEND_PRE_DEC_OBJ_SPEC_VAR_CONST) \
- _(2213, ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR) \
- _(2214, ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR) \
- _(2216, ZEND_PRE_DEC_OBJ_SPEC_VAR_CV) \
- _(2217, ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CONST) \
- _(2218, ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR) \
- _(2219, ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR) \
- _(2221, ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CV) \
- _(2222, ZEND_PRE_DEC_OBJ_SPEC_CV_CONST) \
- _(2223, ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR) \
- _(2224, ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR) \
- _(2226, ZEND_PRE_DEC_OBJ_SPEC_CV_CV) \
- _(2237, ZEND_POST_INC_OBJ_SPEC_VAR_CONST) \
- _(2238, ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR) \
- _(2239, ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR) \
- _(2241, ZEND_POST_INC_OBJ_SPEC_VAR_CV) \
- _(2242, ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST) \
- _(2243, ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR) \
- _(2244, ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR) \
- _(2246, ZEND_POST_INC_OBJ_SPEC_UNUSED_CV) \
- _(2247, ZEND_POST_INC_OBJ_SPEC_CV_CONST) \
- _(2248, ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR) \
- _(2249, ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR) \
- _(2251, ZEND_POST_INC_OBJ_SPEC_CV_CV) \
- _(2262, ZEND_POST_DEC_OBJ_SPEC_VAR_CONST) \
- _(2263, ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR) \
- _(2264, ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR) \
- _(2266, ZEND_POST_DEC_OBJ_SPEC_VAR_CV) \
- _(2267, ZEND_POST_DEC_OBJ_SPEC_UNUSED_CONST) \
- _(2268, ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR) \
- _(2269, ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR) \
- _(2271, ZEND_POST_DEC_OBJ_SPEC_UNUSED_CV) \
- _(2272, ZEND_POST_DEC_OBJ_SPEC_CV_CONST) \
- _(2273, ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR) \
- _(2274, ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR) \
- _(2276, ZEND_POST_DEC_OBJ_SPEC_CV_CV) \
- _(2327, ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CONST) \
- _(2328, ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_TMP) \
- _(2329, ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_VAR) \
- _(2331, ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CV) \
- _(2332, ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST) \
- _(2333, ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP) \
- _(2334, ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR) \
- _(2336, ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV) \
- _(2337, ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST) \
- _(2338, ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP) \
- _(2339, ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR) \
- _(2341, ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV) \
- _(2347, ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CONST) \
- _(2348, ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_TMP) \
- _(2349, ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_VAR) \
- _(2351, ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CV) \
- _(2352, ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CONST) \
- _(2353, ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_TMP) \
- _(2354, ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_VAR) \
- _(2356, ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV) \
- _(2357, ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST) \
- _(2358, ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP) \
- _(2359, ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR) \
- _(2361, ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV) \
- _(2362, ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST) \
- _(2363, ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP) \
- _(2364, ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR) \
- _(2366, ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV) \
- _(2372, ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CONST) \
- _(2373, ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_TMP) \
- _(2374, ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_VAR) \
- _(2376, ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV) \
- _(2377, ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CONST) \
- _(2378, ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_TMP) \
- _(2379, ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_VAR) \
- _(2381, ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV) \
- _(2382, ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST) \
- _(2383, ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP) \
- _(2384, ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR) \
- _(2386, ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV) \
- _(2387, ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST) \
- _(2388, ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP) \
- _(2389, ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR) \
- _(2391, ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV) \
- _(2397, ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CONST) \
- _(2398, ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_TMP) \
- _(2399, ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_VAR) \
- _(2401, ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CV) \
- _(2408, ZEND_INSTANCEOF_SPEC_TMPVAR_CONST) \
- _(2410, ZEND_INSTANCEOF_SPEC_TMPVAR_VAR) \
- _(2411, ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED) \
- _(2413, ZEND_INSTANCEOF_SPEC_TMPVAR_CONST) \
- _(2415, ZEND_INSTANCEOF_SPEC_TMPVAR_VAR) \
- _(2416, ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED) \
- _(2423, ZEND_INSTANCEOF_SPEC_CV_CONST) \
- _(2425, ZEND_INSTANCEOF_SPEC_CV_VAR) \
- _(2426, ZEND_INSTANCEOF_SPEC_CV_UNUSED) \
- _(2428, ZEND_DECLARE_CLASS_SPEC_CONST) \
- _(2429, ZEND_DECLARE_INHERITED_CLASS_SPEC_CONST_CONST) \
- _(2430, ZEND_DECLARE_FUNCTION_SPEC) \
- _(2431, ZEND_YIELD_FROM_SPEC_CONST) \
- _(2432, ZEND_YIELD_FROM_SPEC_TMP) \
- _(2433, ZEND_YIELD_FROM_SPEC_VAR) \
- _(2435, ZEND_YIELD_FROM_SPEC_CV) \
- _(2436, ZEND_DECLARE_CONST_SPEC_CONST_CONST) \
- _(2437, ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_CONST_CONST) \
- _(2488, ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CONST) \
- _(2489, ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_TMP) \
- _(2490, ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_VAR) \
- _(2492, ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CV) \
- _(2493, ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST) \
- _(2494, ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP) \
- _(2495, ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR) \
- _(2497, ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV) \
- _(2498, ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST) \
- _(2499, ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP) \
- _(2500, ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR) \
- _(2502, ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV) \
- _(2503, ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CONST) \
- _(2504, ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_TMP) \
- _(2505, ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_VAR) \
- _(2507, ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CV) \
- _(2508, ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CONST) \
- _(2509, ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_TMP) \
- _(2510, ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_VAR) \
- _(2512, ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CV) \
- _(2538, ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST) \
- _(2539, ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_TMP) \
- _(2540, ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_VAR) \
- _(2542, ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CV) \
- _(2543, ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST) \
- _(2544, ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP) \
- _(2545, ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR) \
- _(2547, ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV) \
- _(2548, ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST) \
- _(2549, ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP) \
- _(2550, ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR) \
- _(2552, ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV) \
- _(2553, ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST) \
- _(2554, ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_TMP) \
- _(2555, ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_VAR) \
- _(2557, ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV) \
- _(2558, ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CONST) \
- _(2559, ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_TMP) \
- _(2560, ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_VAR) \
- _(2562, ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CV) \
- _(2563, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST) \
- _(2564, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR) \
- _(2565, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR) \
- _(2567, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV) \
- _(2568, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST) \
- _(2569, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR) \
- _(2570, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR) \
- _(2572, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV) \
- _(2573, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST) \
- _(2574, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR) \
- _(2575, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR) \
- _(2577, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV) \
- _(2578, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST) \
- _(2579, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR) \
- _(2580, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR) \
- _(2582, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV) \
- _(2583, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST) \
- _(2584, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR) \
- _(2585, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR) \
- _(2587, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV) \
- _(2588, ZEND_HANDLE_EXCEPTION_SPEC) \
- _(2589, ZEND_USER_OPCODE_SPEC) \
- _(2590, ZEND_ASSERT_CHECK_SPEC) \
- _(2591, ZEND_JMP_SET_SPEC_CONST) \
- _(2592, ZEND_JMP_SET_SPEC_TMP) \
- _(2593, ZEND_JMP_SET_SPEC_VAR) \
- _(2595, ZEND_JMP_SET_SPEC_CV) \
- _(2596, ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED) \
- _(2597, ZEND_SEPARATE_SPEC_VAR_UNUSED) \
- _(2598, ZEND_FETCH_CLASS_NAME_SPEC_UNUSED) \
- _(2599, ZEND_CALL_TRAMPOLINE_SPEC) \
- _(2600, ZEND_DISCARD_EXCEPTION_SPEC) \
- _(2601, ZEND_YIELD_SPEC_CONST_CONST) \
- _(2602, ZEND_YIELD_SPEC_CONST_TMP) \
- _(2603, ZEND_YIELD_SPEC_CONST_VAR) \
- _(2604, ZEND_YIELD_SPEC_CONST_UNUSED) \
- _(2605, ZEND_YIELD_SPEC_CONST_CV) \
- _(2606, ZEND_YIELD_SPEC_TMP_CONST) \
- _(2607, ZEND_YIELD_SPEC_TMP_TMP) \
- _(2608, ZEND_YIELD_SPEC_TMP_VAR) \
- _(2609, ZEND_YIELD_SPEC_TMP_UNUSED) \
- _(2610, ZEND_YIELD_SPEC_TMP_CV) \
- _(2611, ZEND_YIELD_SPEC_VAR_CONST) \
- _(2612, ZEND_YIELD_SPEC_VAR_TMP) \
- _(2613, ZEND_YIELD_SPEC_VAR_VAR) \
- _(2614, ZEND_YIELD_SPEC_VAR_UNUSED) \
- _(2615, ZEND_YIELD_SPEC_VAR_CV) \
- _(2616, ZEND_YIELD_SPEC_UNUSED_CONST) \
- _(2617, ZEND_YIELD_SPEC_UNUSED_TMP) \
- _(2618, ZEND_YIELD_SPEC_UNUSED_VAR) \
- _(2619, ZEND_YIELD_SPEC_UNUSED_UNUSED) \
- _(2620, ZEND_YIELD_SPEC_UNUSED_CV) \
- _(2621, ZEND_YIELD_SPEC_CV_CONST) \
- _(2622, ZEND_YIELD_SPEC_CV_TMP) \
- _(2623, ZEND_YIELD_SPEC_CV_VAR) \
- _(2624, ZEND_YIELD_SPEC_CV_UNUSED) \
- _(2625, ZEND_YIELD_SPEC_CV_CV) \
- _(2626, ZEND_GENERATOR_RETURN_SPEC_CONST) \
- _(2627, ZEND_GENERATOR_RETURN_SPEC_TMP) \
- _(2628, ZEND_GENERATOR_RETURN_SPEC_VAR) \
- _(2630, ZEND_GENERATOR_RETURN_SPEC_CV) \
- _(2631, ZEND_FAST_CALL_SPEC) \
- _(2632, ZEND_FAST_RET_SPEC) \
- _(2633, ZEND_RECV_VARIADIC_SPEC_UNUSED) \
- _(2634, ZEND_SEND_UNPACK_SPEC) \
- _(2635, ZEND_POW_SPEC_CONST_CONST) \
- _(2636, ZEND_POW_SPEC_CONST_TMPVAR) \
- _(2637, ZEND_POW_SPEC_CONST_TMPVAR) \
- _(2639, ZEND_POW_SPEC_CONST_CV) \
- _(2640, ZEND_POW_SPEC_TMPVAR_CONST) \
- _(2641, ZEND_POW_SPEC_TMPVAR_TMPVAR) \
- _(2642, ZEND_POW_SPEC_TMPVAR_TMPVAR) \
- _(2644, ZEND_POW_SPEC_TMPVAR_CV) \
- _(2645, ZEND_POW_SPEC_TMPVAR_CONST) \
- _(2646, ZEND_POW_SPEC_TMPVAR_TMPVAR) \
- _(2647, ZEND_POW_SPEC_TMPVAR_TMPVAR) \
- _(2649, ZEND_POW_SPEC_TMPVAR_CV) \
- _(2655, ZEND_POW_SPEC_CV_CONST) \
- _(2656, ZEND_POW_SPEC_CV_TMPVAR) \
- _(2657, ZEND_POW_SPEC_CV_TMPVAR) \
- _(2659, ZEND_POW_SPEC_CV_CV) \
- _(2690, ZEND_ASSIGN_POW_SPEC_VAR_CONST) \
- _(2691, ZEND_ASSIGN_POW_SPEC_VAR_CONST_DIM) \
- _(2692, ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ) \
- _(2693, ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR) \
- _(2694, ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM) \
- _(2695, ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ) \
- _(2696, ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR) \
- _(2697, ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM) \
- _(2698, ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ) \
- _(2700, ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM) \
- _(2702, ZEND_ASSIGN_POW_SPEC_VAR_CV) \
- _(2703, ZEND_ASSIGN_POW_SPEC_VAR_CV_DIM) \
- _(2704, ZEND_ASSIGN_POW_SPEC_VAR_CV_OBJ) \
- _(2707, ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_OBJ) \
- _(2710, ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ) \
- _(2713, ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ) \
- _(2719, ZEND_ASSIGN_POW_SPEC_UNUSED_CV_OBJ) \
- _(2720, ZEND_ASSIGN_POW_SPEC_CV_CONST) \
- _(2721, ZEND_ASSIGN_POW_SPEC_CV_CONST_DIM) \
- _(2722, ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ) \
- _(2723, ZEND_ASSIGN_POW_SPEC_CV_TMPVAR) \
- _(2724, ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM) \
- _(2725, ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ) \
- _(2726, ZEND_ASSIGN_POW_SPEC_CV_TMPVAR) \
- _(2727, ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM) \
- _(2728, ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ) \
- _(2730, ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM) \
- _(2732, ZEND_ASSIGN_POW_SPEC_CV_CV) \
- _(2733, ZEND_ASSIGN_POW_SPEC_CV_CV_DIM) \
- _(2734, ZEND_ASSIGN_POW_SPEC_CV_CV_OBJ) \
- _(2735, ZEND_BIND_GLOBAL_SPEC_CV_CONST) \
- _(2736, ZEND_COALESCE_SPEC_CONST) \
- _(2737, ZEND_COALESCE_SPEC_TMPVAR) \
- _(2738, ZEND_COALESCE_SPEC_TMPVAR) \
- _(2740, ZEND_COALESCE_SPEC_CV) \
- _(2741, ZEND_SPACESHIP_SPEC_CONST_CONST) \
- _(2742, ZEND_SPACESHIP_SPEC_CONST_TMPVAR) \
- _(2743, ZEND_SPACESHIP_SPEC_CONST_TMPVAR) \
- _(2745, ZEND_SPACESHIP_SPEC_CONST_CV) \
- _(2746, ZEND_SPACESHIP_SPEC_TMPVAR_CONST) \
- _(2747, ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR) \
- _(2748, ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR) \
- _(2750, ZEND_SPACESHIP_SPEC_TMPVAR_CV) \
- _(2751, ZEND_SPACESHIP_SPEC_TMPVAR_CONST) \
- _(2752, ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR) \
- _(2753, ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR) \
- _(2755, ZEND_SPACESHIP_SPEC_TMPVAR_CV) \
- _(2761, ZEND_SPACESHIP_SPEC_CV_CONST) \
- _(2762, ZEND_SPACESHIP_SPEC_CV_TMPVAR) \
- _(2763, ZEND_SPACESHIP_SPEC_CV_TMPVAR) \
- _(2765, ZEND_SPACESHIP_SPEC_CV_CV) \
- _(2766, ZEND_DECLARE_ANON_CLASS_SPEC) \
- _(2767, ZEND_DECLARE_ANON_INHERITED_CLASS_SPEC_CONST_CONST) \
- _(2768, ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST) \
- _(2770, ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR) \
- _(2771, ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_UNUSED) \
- _(2773, ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST) \
- _(2775, ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR) \
- _(2776, ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED) \
- _(2778, ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST) \
- _(2780, ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR) \
- _(2781, ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED) \
- _(2788, ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST) \
- _(2790, ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR) \
- _(2791, ZEND_FETCH_STATIC_PROP_R_SPEC_CV_UNUSED) \
- _(2793, ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_CONST) \
- _(2795, ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_VAR) \
- _(2796, ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_UNUSED) \
- _(2798, ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST) \
- _(2800, ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR) \
- _(2801, ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED) \
- _(2803, ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST) \
- _(2805, ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR) \
- _(2806, ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED) \
- _(2813, ZEND_FETCH_STATIC_PROP_W_SPEC_CV_CONST) \
- _(2815, ZEND_FETCH_STATIC_PROP_W_SPEC_CV_VAR) \
- _(2816, ZEND_FETCH_STATIC_PROP_W_SPEC_CV_UNUSED) \
- _(2818, ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_CONST) \
- _(2820, ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_VAR) \
- _(2821, ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_UNUSED) \
- _(2823, ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST) \
- _(2825, ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR) \
- _(2826, ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED) \
- _(2828, ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST) \
- _(2830, ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR) \
- _(2831, ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED) \
- _(2838, ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_CONST) \
- _(2840, ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_VAR) \
- _(2841, ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_UNUSED) \
- _(2843, ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_CONST) \
- _(2845, ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_VAR) \
- _(2846, ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_UNUSED) \
- _(2848, ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST) \
- _(2850, ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR) \
- _(2851, ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED) \
- _(2853, ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST) \
- _(2855, ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR) \
- _(2856, ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED) \
- _(2863, ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_CONST) \
- _(2865, ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_VAR) \
- _(2866, ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_UNUSED) \
- _(2868, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_CONST) \
- _(2870, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_VAR) \
- _(2871, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_UNUSED) \
- _(2873, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST) \
- _(2875, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR) \
- _(2876, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED) \
- _(2878, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST) \
- _(2880, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR) \
- _(2881, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED) \
- _(2888, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_CONST) \
- _(2890, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_VAR) \
- _(2891, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_UNUSED) \
- _(2893, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_CONST) \
- _(2895, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_VAR) \
- _(2896, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_UNUSED) \
- _(2898, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST) \
- _(2900, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR) \
- _(2901, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED) \
- _(2903, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST) \
- _(2905, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR) \
- _(2906, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED) \
- _(2913, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_CONST) \
- _(2915, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_VAR) \
- _(2916, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_UNUSED) \
- _(2918, ZEND_UNSET_STATIC_PROP_SPEC_CONST_CONST) \
- _(2920, ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR) \
- _(2921, ZEND_UNSET_STATIC_PROP_SPEC_CONST_UNUSED) \
- _(2923, ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST) \
- _(2925, ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR) \
- _(2926, ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED) \
- _(2928, ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST) \
- _(2930, ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR) \
- _(2931, ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED) \
- _(2938, ZEND_UNSET_STATIC_PROP_SPEC_CV_CONST) \
- _(2940, ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR) \
- _(2941, ZEND_UNSET_STATIC_PROP_SPEC_CV_UNUSED) \
- _(2943, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_CONST) \
- _(2945, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_VAR) \
- _(2946, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_UNUSED) \
- _(2948, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST) \
- _(2950, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR) \
- _(2951, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED) \
- _(2953, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST) \
- _(2955, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR) \
- _(2956, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED) \
- _(2963, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_CONST) \
- _(2965, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_VAR) \
- _(2966, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_UNUSED) \
- _(2968, ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST) \
- _(2970, ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST) \
- _(2971, ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST) \
- _(2973, ZEND_BIND_LEXICAL_SPEC_TMP_CV) \
- _(2974, ZEND_BIND_STATIC_SPEC_CV_UNUSED) \
- _(2975, ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED) \
- _(2976, ZEND_SEND_FUNC_ARG_SPEC_VAR) \
- _(2977, ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED) \
- _(2978, ZEND_SWITCH_LONG_SPEC_CONST_CONST) \
- _(2979, ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST) \
- _(2980, ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST) \
- _(2982, ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST) \
- _(2983, ZEND_SWITCH_STRING_SPEC_CONST_CONST) \
- _(2984, ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST) \
- _(2985, ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST) \
- _(2987, ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST) \
- _(2988, ZEND_IN_ARRAY_SPEC_CONST_CONST) \
- _(2989, ZEND_IN_ARRAY_SPEC_TMP_CONST) \
- _(2990, ZEND_IN_ARRAY_SPEC_VAR_CONST) \
- _(2992, ZEND_IN_ARRAY_SPEC_CV_CONST) \
- _(2993, ZEND_COUNT_SPEC_CONST_UNUSED) \
- _(2994, ZEND_COUNT_SPEC_TMP_UNUSED) \
- _(2995, ZEND_COUNT_SPEC_VAR_UNUSED) \
- _(2997, ZEND_COUNT_SPEC_CV_UNUSED) \
- _(2998, ZEND_GET_CLASS_SPEC_CONST_UNUSED) \
- _(2999, ZEND_GET_CLASS_SPEC_TMP_UNUSED) \
- _(3000, ZEND_GET_CLASS_SPEC_VAR_UNUSED) \
- _(3001, ZEND_GET_CLASS_SPEC_UNUSED_UNUSED) \
- _(3002, ZEND_GET_CLASS_SPEC_CV_UNUSED) \
- _(3003, ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED) \
- _(3004, ZEND_GET_TYPE_SPEC_CONST_UNUSED) \
- _(3005, ZEND_GET_TYPE_SPEC_TMP_UNUSED) \
- _(3006, ZEND_GET_TYPE_SPEC_VAR_UNUSED) \
- _(3008, ZEND_GET_TYPE_SPEC_CV_UNUSED) \
- _(3009, ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED) \
- _(3010, ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED) \
- _(3013, ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED) \
- _(3015, ZEND_UNSET_CV_SPEC_CV_UNUSED) \
- _(3016, ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_SET) \
- _(3017, ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_EMPTY) \
- _(3018, ZEND_FETCH_LIST_W_SPEC_VAR_CONST) \
- _(3019, ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR) \
- _(3020, ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR) \
- _(3022, ZEND_FETCH_LIST_W_SPEC_VAR_CV) \
- _(3023, ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CONST) \
- _(3024, ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_TMPVAR) \
- _(3025, ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_TMPVAR) \
- _(3027, ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CV) \
- _(3028, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CONST) \
- _(3029, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR) \
- _(3030, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR) \
- _(3032, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CV) \
- _(3033, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CONST) \
- _(3034, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR) \
- _(3035, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR) \
- _(3037, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CV) \
- _(3043, ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CONST) \
- _(3044, ZEND_ARRAY_KEY_EXISTS_SPEC_CV_TMPVAR) \
- _(3045, ZEND_ARRAY_KEY_EXISTS_SPEC_CV_TMPVAR) \
- _(3047, ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CV) \
- _(3048, ZEND_JMP_FORWARD_SPEC) \
- _(3054, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
- _(3055, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3056, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3058, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3059, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
- _(3060, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3061, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3063, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3069, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
- _(3070, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3071, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3073, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3079, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
- _(3080, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3081, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3083, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3084, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
- _(3085, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3086, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3088, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3094, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
- _(3095, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3096, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3098, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3104, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3105, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3106, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3108, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3109, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3110, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3111, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3113, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3119, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3120, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3121, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3123, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3125, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
- _(3126, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
- _(3128, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
- _(3129, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
- _(3130, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3131, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3133, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3134, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
- _(3135, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3136, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3138, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3144, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
- _(3145, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3146, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3148, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3150, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
- _(3151, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
- _(3153, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
- _(3154, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
- _(3155, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3156, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3158, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3159, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
- _(3160, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3161, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3163, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3169, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
- _(3170, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3171, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3173, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3175, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
- _(3176, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
- _(3178, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
- _(3179, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3180, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3181, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3183, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3184, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3185, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3186, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3188, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3194, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3195, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3196, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3198, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3204, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
- _(3205, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3206, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3208, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3209, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
- _(3210, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3211, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3213, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3219, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
- _(3220, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3221, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3223, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
- _(3229, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
- _(3230, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3231, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3233, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3234, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
- _(3235, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3236, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3238, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3244, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
- _(3245, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3246, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3248, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3254, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3255, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3256, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3258, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3259, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3260, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3261, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3263, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3269, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3270, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3271, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3273, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3289, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
- _(3290, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3291, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3292, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3293, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3294, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3295, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3296, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3297, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3301, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3302, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3303, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3304, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
- _(3305, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3306, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3307, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3308, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3309, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3310, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3311, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3312, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3316, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3317, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3318, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3334, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
- _(3335, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3336, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3337, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3338, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3339, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3340, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3341, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3342, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3346, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3347, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3348, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3364, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3365, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3366, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3367, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3368, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3369, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3370, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3371, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3372, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3376, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3377, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3378, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3379, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3380, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3381, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3382, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3383, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3384, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3385, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3386, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3387, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3391, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3392, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3393, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3409, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3410, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3411, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3412, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3413, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3414, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3415, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3416, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3417, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3421, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3422, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3423, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3439, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
- _(3440, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3441, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3442, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3443, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3444, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3445, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3446, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3447, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3451, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3452, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3453, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3454, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
- _(3455, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3456, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3457, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3458, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3459, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3460, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3461, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3462, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3466, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3467, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3468, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3484, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
- _(3485, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3486, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3487, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3488, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3489, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3490, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3491, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3492, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3496, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3497, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3498, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3514, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3515, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3516, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3517, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3518, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3519, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3520, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3521, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3522, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3526, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3527, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3528, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3529, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3530, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3531, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3532, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3533, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3534, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3535, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3536, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3537, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3541, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3542, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3543, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3559, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3560, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3561, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3562, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3563, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3564, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3565, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3566, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3567, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3571, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3572, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3573, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3577, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
- _(3578, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
- _(3579, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
- _(3580, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
- _(3581, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
- _(3582, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
- _(3586, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
- _(3587, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
- _(3588, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
- _(3589, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
- _(3590, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3591, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3592, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3593, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3594, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3595, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3596, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3597, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3601, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3602, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3603, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3604, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
- _(3605, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3606, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3607, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3608, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3609, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3610, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3611, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3612, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3616, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3617, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3618, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3634, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
- _(3635, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3636, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3637, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3638, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3639, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3640, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3641, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3642, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3646, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3647, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3648, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3652, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
- _(3653, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
- _(3654, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
- _(3655, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
- _(3656, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
- _(3657, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
- _(3661, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
- _(3662, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
- _(3663, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
- _(3664, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3665, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3666, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3667, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3668, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3669, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3670, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3671, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3672, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3676, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3677, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3678, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3679, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3680, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3681, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3682, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3683, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3684, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3685, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3686, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3687, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3691, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3692, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3693, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3709, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3710, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3711, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3712, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3713, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3714, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3715, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3716, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3717, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3721, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3722, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3723, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3727, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
- _(3728, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
- _(3729, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
- _(3730, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
- _(3731, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
- _(3732, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
- _(3736, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
- _(3737, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
- _(3738, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
- _(3739, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
- _(3740, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3741, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3742, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3743, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3744, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3745, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3746, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3747, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3751, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3752, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3753, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3754, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
- _(3755, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3756, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3757, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3758, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3759, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3760, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3761, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3762, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3766, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3767, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3768, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3784, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
- _(3785, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3786, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3787, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3788, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3789, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3790, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3791, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3792, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3796, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
- _(3797, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3798, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3802, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
- _(3803, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
- _(3804, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
- _(3805, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
- _(3806, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
- _(3807, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
- _(3811, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
- _(3812, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
- _(3813, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
- _(3814, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3815, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3816, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3817, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3818, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3819, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3820, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3821, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3822, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3826, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3827, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3828, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3829, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3830, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3831, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3832, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3833, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3834, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3835, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3836, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3837, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3841, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3842, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3843, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3859, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
- _(3860, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
- _(3861, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
- _(3862, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3863, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3864, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3865, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3866, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3867, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3871, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
- _(3872, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
- _(3873, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
- _(3874, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_TMPVARCV_RETVAL_UNUSED) \
- _(3875, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_TMPVARCV_RETVAL_USED) \
- _(3876, ZEND_PRE_INC_LONG_SPEC_TMPVARCV_RETVAL_UNUSED) \
- _(3877, ZEND_PRE_INC_LONG_SPEC_TMPVARCV_RETVAL_USED) \
- _(3878, ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_TMPVARCV_RETVAL_UNUSED) \
- _(3879, ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_TMPVARCV_RETVAL_USED) \
- _(3880, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_TMPVARCV_RETVAL_UNUSED) \
- _(3881, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_TMPVARCV_RETVAL_USED) \
- _(3882, ZEND_PRE_DEC_LONG_SPEC_TMPVARCV_RETVAL_UNUSED) \
- _(3883, ZEND_PRE_DEC_LONG_SPEC_TMPVARCV_RETVAL_USED) \
- _(3884, ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_TMPVARCV_RETVAL_UNUSED) \
- _(3885, ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_TMPVARCV_RETVAL_USED) \
- _(3886, ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_TMPVARCV) \
- _(3887, ZEND_POST_INC_LONG_SPEC_TMPVARCV) \
- _(3888, ZEND_POST_INC_LONG_OR_DOUBLE_SPEC_TMPVARCV) \
- _(3889, ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_TMPVARCV) \
- _(3890, ZEND_POST_DEC_LONG_SPEC_TMPVARCV) \
- _(3891, ZEND_POST_DEC_LONG_OR_DOUBLE_SPEC_TMPVARCV) \
- _(3892, ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST) \
- _(3893, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
- _(3894, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
- _(3896, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
- _(3897, ZEND_QM_ASSIGN_NOREF_SPEC_CONST) \
- _(3898, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
- _(3899, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
- _(3901, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
- _(3903, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
- _(3904, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
- _(3906, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
- _(3907, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \
- _(3908, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
- _(3909, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
- _(3911, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
- _(3912, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \
- _(3913, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
- _(3914, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
- _(3916, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
- _(3922, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST) \
- _(3923, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
- _(3924, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
- _(3926, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
- _(3929, ZEND_SEND_VAR_SIMPLE_SPEC_VAR) \
- _(3931, ZEND_SEND_VAR_SIMPLE_SPEC_CV) \
- _(3934, ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR) \
- _(3936, ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV) \
- _(3937, ZEND_SEND_VAL_SIMPLE_SPEC_CONST) \
- _(3938, ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST) \
- _(3939, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED) \
- _(3940, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED) \
- _(3940+1, ZEND_NULL)
+ _(474, ZEND_ASSIGN_ADD_SPEC_CONST_CONST_STATIC_PROP) \
+ _(478, ZEND_ASSIGN_ADD_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(482, ZEND_ASSIGN_ADD_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(486, ZEND_ASSIGN_ADD_SPEC_CONST_UNUSED_STATIC_PROP) \
+ _(494, ZEND_ASSIGN_ADD_SPEC_TMP_CONST_STATIC_PROP) \
+ _(498, ZEND_ASSIGN_ADD_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(502, ZEND_ASSIGN_ADD_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(506, ZEND_ASSIGN_ADD_SPEC_TMP_UNUSED_STATIC_PROP) \
+ _(511, ZEND_ASSIGN_ADD_SPEC_VAR_CONST) \
+ _(512, ZEND_ASSIGN_ADD_SPEC_VAR_CONST_DIM) \
+ _(513, ZEND_ASSIGN_ADD_SPEC_VAR_CONST_OBJ) \
+ _(514, ZEND_ASSIGN_ADD_SPEC_VAR_CONST_STATIC_PROP) \
+ _(515, ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR) \
+ _(516, ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM) \
+ _(517, ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ) \
+ _(518, ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(519, ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR) \
+ _(520, ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM) \
+ _(521, ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ) \
+ _(522, ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(524, ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_DIM) \
+ _(526, ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_STATIC_PROP) \
+ _(527, ZEND_ASSIGN_ADD_SPEC_VAR_CV) \
+ _(528, ZEND_ASSIGN_ADD_SPEC_VAR_CV_DIM) \
+ _(529, ZEND_ASSIGN_ADD_SPEC_VAR_CV_OBJ) \
+ _(533, ZEND_ASSIGN_ADD_SPEC_UNUSED_CONST_OBJ) \
+ _(537, ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(541, ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(549, ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_OBJ) \
+ _(551, ZEND_ASSIGN_ADD_SPEC_CV_CONST) \
+ _(552, ZEND_ASSIGN_ADD_SPEC_CV_CONST_DIM) \
+ _(553, ZEND_ASSIGN_ADD_SPEC_CV_CONST_OBJ) \
+ _(554, ZEND_ASSIGN_ADD_SPEC_CV_CONST_STATIC_PROP) \
+ _(555, ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR) \
+ _(556, ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM) \
+ _(557, ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ) \
+ _(558, ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(559, ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR) \
+ _(560, ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM) \
+ _(561, ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ) \
+ _(562, ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(564, ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_DIM) \
+ _(566, ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_STATIC_PROP) \
+ _(567, ZEND_ASSIGN_ADD_SPEC_CV_CV) \
+ _(568, ZEND_ASSIGN_ADD_SPEC_CV_CV_DIM) \
+ _(569, ZEND_ASSIGN_ADD_SPEC_CV_CV_OBJ) \
+ _(574, ZEND_ASSIGN_SUB_SPEC_CONST_CONST_STATIC_PROP) \
+ _(578, ZEND_ASSIGN_SUB_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(582, ZEND_ASSIGN_SUB_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(586, ZEND_ASSIGN_SUB_SPEC_CONST_UNUSED_STATIC_PROP) \
+ _(594, ZEND_ASSIGN_SUB_SPEC_TMP_CONST_STATIC_PROP) \
+ _(598, ZEND_ASSIGN_SUB_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(602, ZEND_ASSIGN_SUB_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(606, ZEND_ASSIGN_SUB_SPEC_TMP_UNUSED_STATIC_PROP) \
+ _(611, ZEND_ASSIGN_SUB_SPEC_VAR_CONST) \
+ _(612, ZEND_ASSIGN_SUB_SPEC_VAR_CONST_DIM) \
+ _(613, ZEND_ASSIGN_SUB_SPEC_VAR_CONST_OBJ) \
+ _(614, ZEND_ASSIGN_SUB_SPEC_VAR_CONST_STATIC_PROP) \
+ _(615, ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR) \
+ _(616, ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM) \
+ _(617, ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ) \
+ _(618, ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(619, ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR) \
+ _(620, ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM) \
+ _(621, ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ) \
+ _(622, ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(624, ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM) \
+ _(626, ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_STATIC_PROP) \
+ _(627, ZEND_ASSIGN_SUB_SPEC_VAR_CV) \
+ _(628, ZEND_ASSIGN_SUB_SPEC_VAR_CV_DIM) \
+ _(629, ZEND_ASSIGN_SUB_SPEC_VAR_CV_OBJ) \
+ _(633, ZEND_ASSIGN_SUB_SPEC_UNUSED_CONST_OBJ) \
+ _(637, ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(641, ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(649, ZEND_ASSIGN_SUB_SPEC_UNUSED_CV_OBJ) \
+ _(651, ZEND_ASSIGN_SUB_SPEC_CV_CONST) \
+ _(652, ZEND_ASSIGN_SUB_SPEC_CV_CONST_DIM) \
+ _(653, ZEND_ASSIGN_SUB_SPEC_CV_CONST_OBJ) \
+ _(654, ZEND_ASSIGN_SUB_SPEC_CV_CONST_STATIC_PROP) \
+ _(655, ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR) \
+ _(656, ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM) \
+ _(657, ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ) \
+ _(658, ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(659, ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR) \
+ _(660, ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM) \
+ _(661, ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ) \
+ _(662, ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(664, ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM) \
+ _(666, ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_STATIC_PROP) \
+ _(667, ZEND_ASSIGN_SUB_SPEC_CV_CV) \
+ _(668, ZEND_ASSIGN_SUB_SPEC_CV_CV_DIM) \
+ _(669, ZEND_ASSIGN_SUB_SPEC_CV_CV_OBJ) \
+ _(674, ZEND_ASSIGN_MUL_SPEC_CONST_CONST_STATIC_PROP) \
+ _(678, ZEND_ASSIGN_MUL_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(682, ZEND_ASSIGN_MUL_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(686, ZEND_ASSIGN_MUL_SPEC_CONST_UNUSED_STATIC_PROP) \
+ _(694, ZEND_ASSIGN_MUL_SPEC_TMP_CONST_STATIC_PROP) \
+ _(698, ZEND_ASSIGN_MUL_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(702, ZEND_ASSIGN_MUL_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(706, ZEND_ASSIGN_MUL_SPEC_TMP_UNUSED_STATIC_PROP) \
+ _(711, ZEND_ASSIGN_MUL_SPEC_VAR_CONST) \
+ _(712, ZEND_ASSIGN_MUL_SPEC_VAR_CONST_DIM) \
+ _(713, ZEND_ASSIGN_MUL_SPEC_VAR_CONST_OBJ) \
+ _(714, ZEND_ASSIGN_MUL_SPEC_VAR_CONST_STATIC_PROP) \
+ _(715, ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR) \
+ _(716, ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM) \
+ _(717, ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ) \
+ _(718, ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(719, ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR) \
+ _(720, ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM) \
+ _(721, ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ) \
+ _(722, ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(724, ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM) \
+ _(726, ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_STATIC_PROP) \
+ _(727, ZEND_ASSIGN_MUL_SPEC_VAR_CV) \
+ _(728, ZEND_ASSIGN_MUL_SPEC_VAR_CV_DIM) \
+ _(729, ZEND_ASSIGN_MUL_SPEC_VAR_CV_OBJ) \
+ _(733, ZEND_ASSIGN_MUL_SPEC_UNUSED_CONST_OBJ) \
+ _(737, ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(741, ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(749, ZEND_ASSIGN_MUL_SPEC_UNUSED_CV_OBJ) \
+ _(751, ZEND_ASSIGN_MUL_SPEC_CV_CONST) \
+ _(752, ZEND_ASSIGN_MUL_SPEC_CV_CONST_DIM) \
+ _(753, ZEND_ASSIGN_MUL_SPEC_CV_CONST_OBJ) \
+ _(754, ZEND_ASSIGN_MUL_SPEC_CV_CONST_STATIC_PROP) \
+ _(755, ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR) \
+ _(756, ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM) \
+ _(757, ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ) \
+ _(758, ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(759, ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR) \
+ _(760, ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM) \
+ _(761, ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ) \
+ _(762, ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(764, ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM) \
+ _(766, ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_STATIC_PROP) \
+ _(767, ZEND_ASSIGN_MUL_SPEC_CV_CV) \
+ _(768, ZEND_ASSIGN_MUL_SPEC_CV_CV_DIM) \
+ _(769, ZEND_ASSIGN_MUL_SPEC_CV_CV_OBJ) \
+ _(774, ZEND_ASSIGN_DIV_SPEC_CONST_CONST_STATIC_PROP) \
+ _(778, ZEND_ASSIGN_DIV_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(782, ZEND_ASSIGN_DIV_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(786, ZEND_ASSIGN_DIV_SPEC_CONST_UNUSED_STATIC_PROP) \
+ _(794, ZEND_ASSIGN_DIV_SPEC_TMP_CONST_STATIC_PROP) \
+ _(798, ZEND_ASSIGN_DIV_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(802, ZEND_ASSIGN_DIV_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(806, ZEND_ASSIGN_DIV_SPEC_TMP_UNUSED_STATIC_PROP) \
+ _(811, ZEND_ASSIGN_DIV_SPEC_VAR_CONST) \
+ _(812, ZEND_ASSIGN_DIV_SPEC_VAR_CONST_DIM) \
+ _(813, ZEND_ASSIGN_DIV_SPEC_VAR_CONST_OBJ) \
+ _(814, ZEND_ASSIGN_DIV_SPEC_VAR_CONST_STATIC_PROP) \
+ _(815, ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR) \
+ _(816, ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM) \
+ _(817, ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ) \
+ _(818, ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(819, ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR) \
+ _(820, ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM) \
+ _(821, ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ) \
+ _(822, ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(824, ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM) \
+ _(826, ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_STATIC_PROP) \
+ _(827, ZEND_ASSIGN_DIV_SPEC_VAR_CV) \
+ _(828, ZEND_ASSIGN_DIV_SPEC_VAR_CV_DIM) \
+ _(829, ZEND_ASSIGN_DIV_SPEC_VAR_CV_OBJ) \
+ _(833, ZEND_ASSIGN_DIV_SPEC_UNUSED_CONST_OBJ) \
+ _(837, ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(841, ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(849, ZEND_ASSIGN_DIV_SPEC_UNUSED_CV_OBJ) \
+ _(851, ZEND_ASSIGN_DIV_SPEC_CV_CONST) \
+ _(852, ZEND_ASSIGN_DIV_SPEC_CV_CONST_DIM) \
+ _(853, ZEND_ASSIGN_DIV_SPEC_CV_CONST_OBJ) \
+ _(854, ZEND_ASSIGN_DIV_SPEC_CV_CONST_STATIC_PROP) \
+ _(855, ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR) \
+ _(856, ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM) \
+ _(857, ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ) \
+ _(858, ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(859, ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR) \
+ _(860, ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM) \
+ _(861, ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ) \
+ _(862, ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(864, ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM) \
+ _(866, ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_STATIC_PROP) \
+ _(867, ZEND_ASSIGN_DIV_SPEC_CV_CV) \
+ _(868, ZEND_ASSIGN_DIV_SPEC_CV_CV_DIM) \
+ _(869, ZEND_ASSIGN_DIV_SPEC_CV_CV_OBJ) \
+ _(874, ZEND_ASSIGN_MOD_SPEC_CONST_CONST_STATIC_PROP) \
+ _(878, ZEND_ASSIGN_MOD_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(882, ZEND_ASSIGN_MOD_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(886, ZEND_ASSIGN_MOD_SPEC_CONST_UNUSED_STATIC_PROP) \
+ _(894, ZEND_ASSIGN_MOD_SPEC_TMP_CONST_STATIC_PROP) \
+ _(898, ZEND_ASSIGN_MOD_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(902, ZEND_ASSIGN_MOD_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(906, ZEND_ASSIGN_MOD_SPEC_TMP_UNUSED_STATIC_PROP) \
+ _(911, ZEND_ASSIGN_MOD_SPEC_VAR_CONST) \
+ _(912, ZEND_ASSIGN_MOD_SPEC_VAR_CONST_DIM) \
+ _(913, ZEND_ASSIGN_MOD_SPEC_VAR_CONST_OBJ) \
+ _(914, ZEND_ASSIGN_MOD_SPEC_VAR_CONST_STATIC_PROP) \
+ _(915, ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR) \
+ _(916, ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM) \
+ _(917, ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ) \
+ _(918, ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(919, ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR) \
+ _(920, ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM) \
+ _(921, ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ) \
+ _(922, ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(924, ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM) \
+ _(926, ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_STATIC_PROP) \
+ _(927, ZEND_ASSIGN_MOD_SPEC_VAR_CV) \
+ _(928, ZEND_ASSIGN_MOD_SPEC_VAR_CV_DIM) \
+ _(929, ZEND_ASSIGN_MOD_SPEC_VAR_CV_OBJ) \
+ _(933, ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_OBJ) \
+ _(937, ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(941, ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(949, ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_OBJ) \
+ _(951, ZEND_ASSIGN_MOD_SPEC_CV_CONST) \
+ _(952, ZEND_ASSIGN_MOD_SPEC_CV_CONST_DIM) \
+ _(953, ZEND_ASSIGN_MOD_SPEC_CV_CONST_OBJ) \
+ _(954, ZEND_ASSIGN_MOD_SPEC_CV_CONST_STATIC_PROP) \
+ _(955, ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR) \
+ _(956, ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM) \
+ _(957, ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ) \
+ _(958, ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(959, ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR) \
+ _(960, ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM) \
+ _(961, ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ) \
+ _(962, ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(964, ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM) \
+ _(966, ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_STATIC_PROP) \
+ _(967, ZEND_ASSIGN_MOD_SPEC_CV_CV) \
+ _(968, ZEND_ASSIGN_MOD_SPEC_CV_CV_DIM) \
+ _(969, ZEND_ASSIGN_MOD_SPEC_CV_CV_OBJ) \
+ _(974, ZEND_ASSIGN_SL_SPEC_CONST_CONST_STATIC_PROP) \
+ _(978, ZEND_ASSIGN_SL_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(982, ZEND_ASSIGN_SL_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(986, ZEND_ASSIGN_SL_SPEC_CONST_UNUSED_STATIC_PROP) \
+ _(994, ZEND_ASSIGN_SL_SPEC_TMP_CONST_STATIC_PROP) \
+ _(998, ZEND_ASSIGN_SL_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(1002, ZEND_ASSIGN_SL_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(1006, ZEND_ASSIGN_SL_SPEC_TMP_UNUSED_STATIC_PROP) \
+ _(1011, ZEND_ASSIGN_SL_SPEC_VAR_CONST) \
+ _(1012, ZEND_ASSIGN_SL_SPEC_VAR_CONST_DIM) \
+ _(1013, ZEND_ASSIGN_SL_SPEC_VAR_CONST_OBJ) \
+ _(1014, ZEND_ASSIGN_SL_SPEC_VAR_CONST_STATIC_PROP) \
+ _(1015, ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR) \
+ _(1016, ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM) \
+ _(1017, ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ) \
+ _(1018, ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(1019, ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR) \
+ _(1020, ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM) \
+ _(1021, ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ) \
+ _(1022, ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(1024, ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM) \
+ _(1026, ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_STATIC_PROP) \
+ _(1027, ZEND_ASSIGN_SL_SPEC_VAR_CV) \
+ _(1028, ZEND_ASSIGN_SL_SPEC_VAR_CV_DIM) \
+ _(1029, ZEND_ASSIGN_SL_SPEC_VAR_CV_OBJ) \
+ _(1033, ZEND_ASSIGN_SL_SPEC_UNUSED_CONST_OBJ) \
+ _(1037, ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(1041, ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(1049, ZEND_ASSIGN_SL_SPEC_UNUSED_CV_OBJ) \
+ _(1051, ZEND_ASSIGN_SL_SPEC_CV_CONST) \
+ _(1052, ZEND_ASSIGN_SL_SPEC_CV_CONST_DIM) \
+ _(1053, ZEND_ASSIGN_SL_SPEC_CV_CONST_OBJ) \
+ _(1054, ZEND_ASSIGN_SL_SPEC_CV_CONST_STATIC_PROP) \
+ _(1055, ZEND_ASSIGN_SL_SPEC_CV_TMPVAR) \
+ _(1056, ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM) \
+ _(1057, ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ) \
+ _(1058, ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(1059, ZEND_ASSIGN_SL_SPEC_CV_TMPVAR) \
+ _(1060, ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM) \
+ _(1061, ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ) \
+ _(1062, ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(1064, ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM) \
+ _(1066, ZEND_ASSIGN_SL_SPEC_CV_UNUSED_STATIC_PROP) \
+ _(1067, ZEND_ASSIGN_SL_SPEC_CV_CV) \
+ _(1068, ZEND_ASSIGN_SL_SPEC_CV_CV_DIM) \
+ _(1069, ZEND_ASSIGN_SL_SPEC_CV_CV_OBJ) \
+ _(1074, ZEND_ASSIGN_SR_SPEC_CONST_CONST_STATIC_PROP) \
+ _(1078, ZEND_ASSIGN_SR_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(1082, ZEND_ASSIGN_SR_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(1086, ZEND_ASSIGN_SR_SPEC_CONST_UNUSED_STATIC_PROP) \
+ _(1094, ZEND_ASSIGN_SR_SPEC_TMP_CONST_STATIC_PROP) \
+ _(1098, ZEND_ASSIGN_SR_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(1102, ZEND_ASSIGN_SR_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(1106, ZEND_ASSIGN_SR_SPEC_TMP_UNUSED_STATIC_PROP) \
+ _(1111, ZEND_ASSIGN_SR_SPEC_VAR_CONST) \
+ _(1112, ZEND_ASSIGN_SR_SPEC_VAR_CONST_DIM) \
+ _(1113, ZEND_ASSIGN_SR_SPEC_VAR_CONST_OBJ) \
+ _(1114, ZEND_ASSIGN_SR_SPEC_VAR_CONST_STATIC_PROP) \
+ _(1115, ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR) \
+ _(1116, ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM) \
+ _(1117, ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ) \
+ _(1118, ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(1119, ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR) \
+ _(1120, ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM) \
+ _(1121, ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ) \
+ _(1122, ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(1124, ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM) \
+ _(1126, ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_STATIC_PROP) \
+ _(1127, ZEND_ASSIGN_SR_SPEC_VAR_CV) \
+ _(1128, ZEND_ASSIGN_SR_SPEC_VAR_CV_DIM) \
+ _(1129, ZEND_ASSIGN_SR_SPEC_VAR_CV_OBJ) \
+ _(1133, ZEND_ASSIGN_SR_SPEC_UNUSED_CONST_OBJ) \
+ _(1137, ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(1141, ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(1149, ZEND_ASSIGN_SR_SPEC_UNUSED_CV_OBJ) \
+ _(1151, ZEND_ASSIGN_SR_SPEC_CV_CONST) \
+ _(1152, ZEND_ASSIGN_SR_SPEC_CV_CONST_DIM) \
+ _(1153, ZEND_ASSIGN_SR_SPEC_CV_CONST_OBJ) \
+ _(1154, ZEND_ASSIGN_SR_SPEC_CV_CONST_STATIC_PROP) \
+ _(1155, ZEND_ASSIGN_SR_SPEC_CV_TMPVAR) \
+ _(1156, ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM) \
+ _(1157, ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ) \
+ _(1158, ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(1159, ZEND_ASSIGN_SR_SPEC_CV_TMPVAR) \
+ _(1160, ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM) \
+ _(1161, ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ) \
+ _(1162, ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(1164, ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM) \
+ _(1166, ZEND_ASSIGN_SR_SPEC_CV_UNUSED_STATIC_PROP) \
+ _(1167, ZEND_ASSIGN_SR_SPEC_CV_CV) \
+ _(1168, ZEND_ASSIGN_SR_SPEC_CV_CV_DIM) \
+ _(1169, ZEND_ASSIGN_SR_SPEC_CV_CV_OBJ) \
+ _(1174, ZEND_ASSIGN_CONCAT_SPEC_CONST_CONST_STATIC_PROP) \
+ _(1178, ZEND_ASSIGN_CONCAT_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(1182, ZEND_ASSIGN_CONCAT_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(1186, ZEND_ASSIGN_CONCAT_SPEC_CONST_UNUSED_STATIC_PROP) \
+ _(1194, ZEND_ASSIGN_CONCAT_SPEC_TMP_CONST_STATIC_PROP) \
+ _(1198, ZEND_ASSIGN_CONCAT_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(1202, ZEND_ASSIGN_CONCAT_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(1206, ZEND_ASSIGN_CONCAT_SPEC_TMP_UNUSED_STATIC_PROP) \
+ _(1211, ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST) \
+ _(1212, ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_DIM) \
+ _(1213, ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_OBJ) \
+ _(1214, ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_STATIC_PROP) \
+ _(1215, ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR) \
+ _(1216, ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM) \
+ _(1217, ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ) \
+ _(1218, ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(1219, ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR) \
+ _(1220, ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM) \
+ _(1221, ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ) \
+ _(1222, ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(1224, ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM) \
+ _(1226, ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_STATIC_PROP) \
+ _(1227, ZEND_ASSIGN_CONCAT_SPEC_VAR_CV) \
+ _(1228, ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_DIM) \
+ _(1229, ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_OBJ) \
+ _(1233, ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CONST_OBJ) \
+ _(1237, ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(1241, ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(1249, ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CV_OBJ) \
+ _(1251, ZEND_ASSIGN_CONCAT_SPEC_CV_CONST) \
+ _(1252, ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_DIM) \
+ _(1253, ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_OBJ) \
+ _(1254, ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_STATIC_PROP) \
+ _(1255, ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR) \
+ _(1256, ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM) \
+ _(1257, ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ) \
+ _(1258, ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(1259, ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR) \
+ _(1260, ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM) \
+ _(1261, ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ) \
+ _(1262, ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(1264, ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM) \
+ _(1266, ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_STATIC_PROP) \
+ _(1267, ZEND_ASSIGN_CONCAT_SPEC_CV_CV) \
+ _(1268, ZEND_ASSIGN_CONCAT_SPEC_CV_CV_DIM) \
+ _(1269, ZEND_ASSIGN_CONCAT_SPEC_CV_CV_OBJ) \
+ _(1274, ZEND_ASSIGN_BW_OR_SPEC_CONST_CONST_STATIC_PROP) \
+ _(1278, ZEND_ASSIGN_BW_OR_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(1282, ZEND_ASSIGN_BW_OR_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(1286, ZEND_ASSIGN_BW_OR_SPEC_CONST_UNUSED_STATIC_PROP) \
+ _(1294, ZEND_ASSIGN_BW_OR_SPEC_TMP_CONST_STATIC_PROP) \
+ _(1298, ZEND_ASSIGN_BW_OR_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(1302, ZEND_ASSIGN_BW_OR_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(1306, ZEND_ASSIGN_BW_OR_SPEC_TMP_UNUSED_STATIC_PROP) \
+ _(1311, ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST) \
+ _(1312, ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_DIM) \
+ _(1313, ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_OBJ) \
+ _(1314, ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_STATIC_PROP) \
+ _(1315, ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR) \
+ _(1316, ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM) \
+ _(1317, ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ) \
+ _(1318, ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(1319, ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR) \
+ _(1320, ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM) \
+ _(1321, ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ) \
+ _(1322, ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(1324, ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM) \
+ _(1326, ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_STATIC_PROP) \
+ _(1327, ZEND_ASSIGN_BW_OR_SPEC_VAR_CV) \
+ _(1328, ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_DIM) \
+ _(1329, ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_OBJ) \
+ _(1333, ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CONST_OBJ) \
+ _(1337, ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(1341, ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(1349, ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CV_OBJ) \
+ _(1351, ZEND_ASSIGN_BW_OR_SPEC_CV_CONST) \
+ _(1352, ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_DIM) \
+ _(1353, ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_OBJ) \
+ _(1354, ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_STATIC_PROP) \
+ _(1355, ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR) \
+ _(1356, ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM) \
+ _(1357, ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ) \
+ _(1358, ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(1359, ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR) \
+ _(1360, ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM) \
+ _(1361, ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ) \
+ _(1362, ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(1364, ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM) \
+ _(1366, ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_STATIC_PROP) \
+ _(1367, ZEND_ASSIGN_BW_OR_SPEC_CV_CV) \
+ _(1368, ZEND_ASSIGN_BW_OR_SPEC_CV_CV_DIM) \
+ _(1369, ZEND_ASSIGN_BW_OR_SPEC_CV_CV_OBJ) \
+ _(1374, ZEND_ASSIGN_BW_AND_SPEC_CONST_CONST_STATIC_PROP) \
+ _(1378, ZEND_ASSIGN_BW_AND_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(1382, ZEND_ASSIGN_BW_AND_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(1386, ZEND_ASSIGN_BW_AND_SPEC_CONST_UNUSED_STATIC_PROP) \
+ _(1394, ZEND_ASSIGN_BW_AND_SPEC_TMP_CONST_STATIC_PROP) \
+ _(1398, ZEND_ASSIGN_BW_AND_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(1402, ZEND_ASSIGN_BW_AND_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(1406, ZEND_ASSIGN_BW_AND_SPEC_TMP_UNUSED_STATIC_PROP) \
+ _(1411, ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST) \
+ _(1412, ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_DIM) \
+ _(1413, ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_OBJ) \
+ _(1414, ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_STATIC_PROP) \
+ _(1415, ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR) \
+ _(1416, ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM) \
+ _(1417, ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ) \
+ _(1418, ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(1419, ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR) \
+ _(1420, ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM) \
+ _(1421, ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ) \
+ _(1422, ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(1424, ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM) \
+ _(1426, ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_STATIC_PROP) \
+ _(1427, ZEND_ASSIGN_BW_AND_SPEC_VAR_CV) \
+ _(1428, ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_DIM) \
+ _(1429, ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_OBJ) \
+ _(1433, ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CONST_OBJ) \
+ _(1437, ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(1441, ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(1449, ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CV_OBJ) \
+ _(1451, ZEND_ASSIGN_BW_AND_SPEC_CV_CONST) \
+ _(1452, ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_DIM) \
+ _(1453, ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_OBJ) \
+ _(1454, ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_STATIC_PROP) \
+ _(1455, ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR) \
+ _(1456, ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM) \
+ _(1457, ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ) \
+ _(1458, ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(1459, ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR) \
+ _(1460, ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM) \
+ _(1461, ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ) \
+ _(1462, ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(1464, ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM) \
+ _(1466, ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_STATIC_PROP) \
+ _(1467, ZEND_ASSIGN_BW_AND_SPEC_CV_CV) \
+ _(1468, ZEND_ASSIGN_BW_AND_SPEC_CV_CV_DIM) \
+ _(1469, ZEND_ASSIGN_BW_AND_SPEC_CV_CV_OBJ) \
+ _(1474, ZEND_ASSIGN_BW_XOR_SPEC_CONST_CONST_STATIC_PROP) \
+ _(1478, ZEND_ASSIGN_BW_XOR_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(1482, ZEND_ASSIGN_BW_XOR_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(1486, ZEND_ASSIGN_BW_XOR_SPEC_CONST_UNUSED_STATIC_PROP) \
+ _(1494, ZEND_ASSIGN_BW_XOR_SPEC_TMP_CONST_STATIC_PROP) \
+ _(1498, ZEND_ASSIGN_BW_XOR_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(1502, ZEND_ASSIGN_BW_XOR_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(1506, ZEND_ASSIGN_BW_XOR_SPEC_TMP_UNUSED_STATIC_PROP) \
+ _(1511, ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST) \
+ _(1512, ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_DIM) \
+ _(1513, ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_OBJ) \
+ _(1514, ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_STATIC_PROP) \
+ _(1515, ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR) \
+ _(1516, ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM) \
+ _(1517, ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ) \
+ _(1518, ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(1519, ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR) \
+ _(1520, ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM) \
+ _(1521, ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ) \
+ _(1522, ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(1524, ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM) \
+ _(1526, ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_STATIC_PROP) \
+ _(1527, ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV) \
+ _(1528, ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_DIM) \
+ _(1529, ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_OBJ) \
+ _(1533, ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CONST_OBJ) \
+ _(1537, ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(1541, ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(1549, ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CV_OBJ) \
+ _(1551, ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST) \
+ _(1552, ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_DIM) \
+ _(1553, ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_OBJ) \
+ _(1554, ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_STATIC_PROP) \
+ _(1555, ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR) \
+ _(1556, ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM) \
+ _(1557, ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ) \
+ _(1558, ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(1559, ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR) \
+ _(1560, ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM) \
+ _(1561, ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ) \
+ _(1562, ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(1564, ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM) \
+ _(1566, ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_STATIC_PROP) \
+ _(1567, ZEND_ASSIGN_BW_XOR_SPEC_CV_CV) \
+ _(1568, ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_DIM) \
+ _(1569, ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_OBJ) \
+ _(1575, ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED) \
+ _(1576, ZEND_PRE_INC_SPEC_VAR_RETVAL_USED) \
+ _(1579, ZEND_PRE_INC_SPEC_CV_RETVAL_UNUSED) \
+ _(1580, ZEND_PRE_INC_SPEC_CV_RETVAL_USED) \
+ _(1585, ZEND_PRE_DEC_SPEC_VAR_RETVAL_UNUSED) \
+ _(1586, ZEND_PRE_DEC_SPEC_VAR_RETVAL_USED) \
+ _(1589, ZEND_PRE_DEC_SPEC_CV_RETVAL_UNUSED) \
+ _(1590, ZEND_PRE_DEC_SPEC_CV_RETVAL_USED) \
+ _(1593, ZEND_POST_INC_SPEC_VAR) \
+ _(1595, ZEND_POST_INC_SPEC_CV) \
+ _(1598, ZEND_POST_DEC_SPEC_VAR) \
+ _(1600, ZEND_POST_DEC_SPEC_CV) \
+ _(1621, ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_UNUSED) \
+ _(1622, ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED) \
+ _(1623, ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_UNUSED) \
+ _(1624, ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_USED) \
+ _(1625, ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_UNUSED) \
+ _(1626, ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_USED) \
+ _(1629, ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_UNUSED) \
+ _(1630, ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_USED) \
+ _(1641, ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_UNUSED) \
+ _(1642, ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED) \
+ _(1643, ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_UNUSED) \
+ _(1644, ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_USED) \
+ _(1645, ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED) \
+ _(1646, ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_USED) \
+ _(1649, ZEND_ASSIGN_SPEC_CV_CV_RETVAL_UNUSED) \
+ _(1650, ZEND_ASSIGN_SPEC_CV_CV_RETVAL_USED) \
+ _(1663, ZEND_ASSIGN_REF_SPEC_VAR_VAR) \
+ _(1665, ZEND_ASSIGN_REF_SPEC_VAR_CV) \
+ _(1673, ZEND_ASSIGN_REF_SPEC_CV_VAR) \
+ _(1675, ZEND_ASSIGN_REF_SPEC_CV_CV) \
+ _(1676, ZEND_ECHO_SPEC_CONST) \
+ _(1677, ZEND_ECHO_SPEC_TMPVAR) \
+ _(1678, ZEND_ECHO_SPEC_TMPVAR) \
+ _(1680, ZEND_ECHO_SPEC_CV) \
+ _(1681, ZEND_GENERATOR_CREATE_SPEC) \
+ _(1682, ZEND_JMP_SPEC) \
+ _(1683, ZEND_JMPZ_SPEC_CONST) \
+ _(1684, ZEND_JMPZ_SPEC_TMPVAR) \
+ _(1685, ZEND_JMPZ_SPEC_TMPVAR) \
+ _(1687, ZEND_JMPZ_SPEC_CV) \
+ _(1688, ZEND_JMPNZ_SPEC_CONST) \
+ _(1689, ZEND_JMPNZ_SPEC_TMPVAR) \
+ _(1690, ZEND_JMPNZ_SPEC_TMPVAR) \
+ _(1692, ZEND_JMPNZ_SPEC_CV) \
+ _(1693, ZEND_JMPZNZ_SPEC_CONST) \
+ _(1694, ZEND_JMPZNZ_SPEC_TMPVAR) \
+ _(1695, ZEND_JMPZNZ_SPEC_TMPVAR) \
+ _(1697, ZEND_JMPZNZ_SPEC_CV) \
+ _(1698, ZEND_JMPZ_EX_SPEC_CONST) \
+ _(1699, ZEND_JMPZ_EX_SPEC_TMPVAR) \
+ _(1700, ZEND_JMPZ_EX_SPEC_TMPVAR) \
+ _(1702, ZEND_JMPZ_EX_SPEC_CV) \
+ _(1703, ZEND_JMPNZ_EX_SPEC_CONST) \
+ _(1704, ZEND_JMPNZ_EX_SPEC_TMPVAR) \
+ _(1705, ZEND_JMPNZ_EX_SPEC_TMPVAR) \
+ _(1707, ZEND_JMPNZ_EX_SPEC_CV) \
+ _(1708, ZEND_CASE_SPEC_TMPVAR_CONST) \
+ _(1709, ZEND_CASE_SPEC_TMPVAR_TMPVAR) \
+ _(1710, ZEND_CASE_SPEC_TMPVAR_TMPVAR) \
+ _(1712, ZEND_CASE_SPEC_TMPVAR_CV) \
+ _(1713, ZEND_CHECK_VAR_SPEC_CV_UNUSED) \
+ _(1714, ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR) \
+ _(1715, ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_QUICK) \
+ _(1718, ZEND_MAKE_REF_SPEC_VAR_UNUSED) \
+ _(1720, ZEND_MAKE_REF_SPEC_CV_UNUSED) \
+ _(1721, ZEND_BOOL_SPEC_CONST) \
+ _(1722, ZEND_BOOL_SPEC_TMPVAR) \
+ _(1723, ZEND_BOOL_SPEC_TMPVAR) \
+ _(1725, ZEND_BOOL_SPEC_CV) \
+ _(1726, ZEND_FAST_CONCAT_SPEC_CONST_CONST) \
+ _(1727, ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR) \
+ _(1728, ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR) \
+ _(1730, ZEND_FAST_CONCAT_SPEC_CONST_CV) \
+ _(1731, ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST) \
+ _(1732, ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR) \
+ _(1733, ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR) \
+ _(1735, ZEND_FAST_CONCAT_SPEC_TMPVAR_CV) \
+ _(1736, ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST) \
+ _(1737, ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR) \
+ _(1738, ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR) \
+ _(1740, ZEND_FAST_CONCAT_SPEC_TMPVAR_CV) \
+ _(1746, ZEND_FAST_CONCAT_SPEC_CV_CONST) \
+ _(1747, ZEND_FAST_CONCAT_SPEC_CV_TMPVAR) \
+ _(1748, ZEND_FAST_CONCAT_SPEC_CV_TMPVAR) \
+ _(1750, ZEND_FAST_CONCAT_SPEC_CV_CV) \
+ _(1751, ZEND_ROPE_INIT_SPEC_UNUSED_CONST) \
+ _(1752, ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR) \
+ _(1753, ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR) \
+ _(1755, ZEND_ROPE_INIT_SPEC_UNUSED_CV) \
+ _(1756, ZEND_ROPE_ADD_SPEC_TMP_CONST) \
+ _(1757, ZEND_ROPE_ADD_SPEC_TMP_TMPVAR) \
+ _(1758, ZEND_ROPE_ADD_SPEC_TMP_TMPVAR) \
+ _(1760, ZEND_ROPE_ADD_SPEC_TMP_CV) \
+ _(1761, ZEND_ROPE_END_SPEC_TMP_CONST) \
+ _(1762, ZEND_ROPE_END_SPEC_TMP_TMPVAR) \
+ _(1763, ZEND_ROPE_END_SPEC_TMP_TMPVAR) \
+ _(1765, ZEND_ROPE_END_SPEC_TMP_CV) \
+ _(1766, ZEND_BEGIN_SILENCE_SPEC) \
+ _(1767, ZEND_END_SILENCE_SPEC_TMP) \
+ _(1768, ZEND_INIT_FCALL_BY_NAME_SPEC_CONST) \
+ _(1769, ZEND_DO_FCALL_SPEC_RETVAL_UNUSED) \
+ _(1770, ZEND_DO_FCALL_SPEC_RETVAL_USED) \
+ _(1771, ZEND_INIT_FCALL_SPEC_CONST) \
+ _(1772, ZEND_RETURN_SPEC_CONST) \
+ _(1773, ZEND_RETURN_SPEC_TMP) \
+ _(1774, ZEND_RETURN_SPEC_VAR) \
+ _(1776, ZEND_RETURN_SPEC_CV) \
+ _(1777, ZEND_RECV_SPEC_UNUSED) \
+ _(1778, ZEND_RECV_INIT_SPEC_CONST) \
+ _(1779, ZEND_SEND_VAL_SPEC_CONST) \
+ _(1780, ZEND_SEND_VAL_SPEC_TMPVAR) \
+ _(1781, ZEND_SEND_VAL_SPEC_TMPVAR) \
+ _(1788, ZEND_SEND_VAR_EX_SPEC_VAR) \
+ _(1789, ZEND_SEND_VAR_EX_SPEC_VAR_QUICK) \
+ _(1792, ZEND_SEND_VAR_EX_SPEC_CV) \
+ _(1793, ZEND_SEND_VAR_EX_SPEC_CV_QUICK) \
+ _(1796, ZEND_SEND_REF_SPEC_VAR) \
+ _(1798, ZEND_SEND_REF_SPEC_CV) \
+ _(1799, ZEND_NEW_SPEC_CONST_UNUSED) \
+ _(1801, ZEND_NEW_SPEC_VAR_UNUSED) \
+ _(1802, ZEND_NEW_SPEC_UNUSED_UNUSED) \
+ _(1804, ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST) \
+ _(1805, ZEND_FREE_SPEC_TMPVAR) \
+ _(1806, ZEND_INIT_ARRAY_SPEC_CONST_CONST) \
+ _(1807, ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR) \
+ _(1808, ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR) \
+ _(1809, ZEND_INIT_ARRAY_SPEC_CONST_UNUSED) \
+ _(1810, ZEND_INIT_ARRAY_SPEC_CONST_CV) \
+ _(1811, ZEND_INIT_ARRAY_SPEC_TMP_CONST) \
+ _(1812, ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR) \
+ _(1813, ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR) \
+ _(1814, ZEND_INIT_ARRAY_SPEC_TMP_UNUSED) \
+ _(1815, ZEND_INIT_ARRAY_SPEC_TMP_CV) \
+ _(1816, ZEND_INIT_ARRAY_SPEC_VAR_CONST) \
+ _(1817, ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR) \
+ _(1818, ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR) \
+ _(1819, ZEND_INIT_ARRAY_SPEC_VAR_UNUSED) \
+ _(1820, ZEND_INIT_ARRAY_SPEC_VAR_CV) \
+ _(1826, ZEND_INIT_ARRAY_SPEC_CV_CONST) \
+ _(1827, ZEND_INIT_ARRAY_SPEC_CV_TMPVAR) \
+ _(1828, ZEND_INIT_ARRAY_SPEC_CV_TMPVAR) \
+ _(1829, ZEND_INIT_ARRAY_SPEC_CV_UNUSED) \
+ _(1830, ZEND_INIT_ARRAY_SPEC_CV_CV) \
+ _(1831, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST) \
+ _(1832, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR) \
+ _(1833, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR) \
+ _(1834, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED) \
+ _(1835, ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV) \
+ _(1836, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST) \
+ _(1837, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR) \
+ _(1838, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR) \
+ _(1839, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED) \
+ _(1840, ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV) \
+ _(1841, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST) \
+ _(1842, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR) \
+ _(1843, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR) \
+ _(1844, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED) \
+ _(1845, ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV) \
+ _(1851, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST) \
+ _(1852, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR) \
+ _(1853, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR) \
+ _(1854, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED) \
+ _(1855, ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV) \
+ _(1856, ZEND_INCLUDE_OR_EVAL_SPEC_CONST) \
+ _(1857, ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR) \
+ _(1858, ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR) \
+ _(1860, ZEND_INCLUDE_OR_EVAL_SPEC_CV) \
+ _(1861, ZEND_UNSET_VAR_SPEC_CONST_UNUSED) \
+ _(1862, ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED) \
+ _(1863, ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED) \
+ _(1865, ZEND_UNSET_VAR_SPEC_CV_UNUSED) \
+ _(1876, ZEND_UNSET_DIM_SPEC_VAR_CONST) \
+ _(1877, ZEND_UNSET_DIM_SPEC_VAR_TMPVAR) \
+ _(1878, ZEND_UNSET_DIM_SPEC_VAR_TMPVAR) \
+ _(1880, ZEND_UNSET_DIM_SPEC_VAR_CV) \
+ _(1886, ZEND_UNSET_DIM_SPEC_CV_CONST) \
+ _(1887, ZEND_UNSET_DIM_SPEC_CV_TMPVAR) \
+ _(1888, ZEND_UNSET_DIM_SPEC_CV_TMPVAR) \
+ _(1890, ZEND_UNSET_DIM_SPEC_CV_CV) \
+ _(1901, ZEND_UNSET_OBJ_SPEC_VAR_CONST) \
+ _(1902, ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR) \
+ _(1903, ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR) \
+ _(1905, ZEND_UNSET_OBJ_SPEC_VAR_CV) \
+ _(1906, ZEND_UNSET_OBJ_SPEC_UNUSED_CONST) \
+ _(1907, ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR) \
+ _(1908, ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR) \
+ _(1910, ZEND_UNSET_OBJ_SPEC_UNUSED_CV) \
+ _(1911, ZEND_UNSET_OBJ_SPEC_CV_CONST) \
+ _(1912, ZEND_UNSET_OBJ_SPEC_CV_TMPVAR) \
+ _(1913, ZEND_UNSET_OBJ_SPEC_CV_TMPVAR) \
+ _(1915, ZEND_UNSET_OBJ_SPEC_CV_CV) \
+ _(1916, ZEND_FE_RESET_R_SPEC_CONST) \
+ _(1917, ZEND_FE_RESET_R_SPEC_TMP) \
+ _(1918, ZEND_FE_RESET_R_SPEC_VAR) \
+ _(1920, ZEND_FE_RESET_R_SPEC_CV) \
+ _(1921, ZEND_FE_FETCH_R_SPEC_VAR) \
+ _(1922, ZEND_EXIT_SPEC_CONST) \
+ _(1923, ZEND_EXIT_SPEC_TMPVAR) \
+ _(1924, ZEND_EXIT_SPEC_TMPVAR) \
+ _(1925, ZEND_EXIT_SPEC_UNUSED) \
+ _(1926, ZEND_EXIT_SPEC_CV) \
+ _(1927, ZEND_FETCH_R_SPEC_CONST_UNUSED) \
+ _(1928, ZEND_FETCH_R_SPEC_TMPVAR_UNUSED) \
+ _(1929, ZEND_FETCH_R_SPEC_TMPVAR_UNUSED) \
+ _(1931, ZEND_FETCH_R_SPEC_CV_UNUSED) \
+ _(1932, ZEND_FETCH_DIM_R_SPEC_CONST_CONST) \
+ _(1933, ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR) \
+ _(1934, ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR) \
+ _(1936, ZEND_FETCH_DIM_R_SPEC_CONST_CV) \
+ _(1937, ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST) \
+ _(1938, ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR) \
+ _(1939, ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR) \
+ _(1941, ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV) \
+ _(1942, ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST) \
+ _(1943, ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR) \
+ _(1944, ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR) \
+ _(1946, ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV) \
+ _(1952, ZEND_FETCH_DIM_R_SPEC_CV_CONST) \
+ _(1953, ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR) \
+ _(1954, ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR) \
+ _(1956, ZEND_FETCH_DIM_R_SPEC_CV_CV) \
+ _(1957, ZEND_FETCH_OBJ_R_SPEC_CONST_CONST) \
+ _(1958, ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR) \
+ _(1959, ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR) \
+ _(1961, ZEND_FETCH_OBJ_R_SPEC_CONST_CV) \
+ _(1962, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST) \
+ _(1963, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR) \
+ _(1964, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR) \
+ _(1966, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV) \
+ _(1967, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST) \
+ _(1968, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR) \
+ _(1969, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR) \
+ _(1971, ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV) \
+ _(1972, ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST) \
+ _(1973, ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR) \
+ _(1974, ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR) \
+ _(1976, ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV) \
+ _(1977, ZEND_FETCH_OBJ_R_SPEC_CV_CONST) \
+ _(1978, ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR) \
+ _(1979, ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR) \
+ _(1981, ZEND_FETCH_OBJ_R_SPEC_CV_CV) \
+ _(1982, ZEND_FETCH_W_SPEC_CONST_UNUSED) \
+ _(1983, ZEND_FETCH_W_SPEC_TMPVAR_UNUSED) \
+ _(1984, ZEND_FETCH_W_SPEC_TMPVAR_UNUSED) \
+ _(1986, ZEND_FETCH_W_SPEC_CV_UNUSED) \
+ _(1997, ZEND_FETCH_DIM_W_SPEC_VAR_CONST) \
+ _(1998, ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR) \
+ _(1999, ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR) \
+ _(2000, ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED) \
+ _(2001, ZEND_FETCH_DIM_W_SPEC_VAR_CV) \
+ _(2007, ZEND_FETCH_DIM_W_SPEC_CV_CONST) \
+ _(2008, ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR) \
+ _(2009, ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR) \
+ _(2010, ZEND_FETCH_DIM_W_SPEC_CV_UNUSED) \
+ _(2011, ZEND_FETCH_DIM_W_SPEC_CV_CV) \
+ _(2022, ZEND_FETCH_OBJ_W_SPEC_VAR_CONST) \
+ _(2023, ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR) \
+ _(2024, ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR) \
+ _(2026, ZEND_FETCH_OBJ_W_SPEC_VAR_CV) \
+ _(2027, ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST) \
+ _(2028, ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR) \
+ _(2029, ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR) \
+ _(2031, ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV) \
+ _(2032, ZEND_FETCH_OBJ_W_SPEC_CV_CONST) \
+ _(2033, ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR) \
+ _(2034, ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR) \
+ _(2036, ZEND_FETCH_OBJ_W_SPEC_CV_CV) \
+ _(2037, ZEND_FETCH_RW_SPEC_CONST_UNUSED) \
+ _(2038, ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED) \
+ _(2039, ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED) \
+ _(2041, ZEND_FETCH_RW_SPEC_CV_UNUSED) \
+ _(2052, ZEND_FETCH_DIM_RW_SPEC_VAR_CONST) \
+ _(2053, ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR) \
+ _(2054, ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR) \
+ _(2055, ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED) \
+ _(2056, ZEND_FETCH_DIM_RW_SPEC_VAR_CV) \
+ _(2062, ZEND_FETCH_DIM_RW_SPEC_CV_CONST) \
+ _(2063, ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR) \
+ _(2064, ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR) \
+ _(2065, ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED) \
+ _(2066, ZEND_FETCH_DIM_RW_SPEC_CV_CV) \
+ _(2077, ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST) \
+ _(2078, ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR) \
+ _(2079, ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR) \
+ _(2081, ZEND_FETCH_OBJ_RW_SPEC_VAR_CV) \
+ _(2082, ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST) \
+ _(2083, ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR) \
+ _(2084, ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR) \
+ _(2086, ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV) \
+ _(2087, ZEND_FETCH_OBJ_RW_SPEC_CV_CONST) \
+ _(2088, ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR) \
+ _(2089, ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR) \
+ _(2091, ZEND_FETCH_OBJ_RW_SPEC_CV_CV) \
+ _(2092, ZEND_FETCH_IS_SPEC_CONST_UNUSED) \
+ _(2093, ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED) \
+ _(2094, ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED) \
+ _(2096, ZEND_FETCH_IS_SPEC_CV_UNUSED) \
+ _(2097, ZEND_FETCH_DIM_IS_SPEC_CONST_CONST) \
+ _(2098, ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR) \
+ _(2099, ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR) \
+ _(2101, ZEND_FETCH_DIM_IS_SPEC_CONST_CV) \
+ _(2102, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST) \
+ _(2103, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR) \
+ _(2104, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR) \
+ _(2106, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV) \
+ _(2107, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST) \
+ _(2108, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR) \
+ _(2109, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR) \
+ _(2111, ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV) \
+ _(2117, ZEND_FETCH_DIM_IS_SPEC_CV_CONST) \
+ _(2118, ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR) \
+ _(2119, ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR) \
+ _(2121, ZEND_FETCH_DIM_IS_SPEC_CV_CV) \
+ _(2122, ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST) \
+ _(2123, ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR) \
+ _(2124, ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR) \
+ _(2126, ZEND_FETCH_OBJ_IS_SPEC_CONST_CV) \
+ _(2127, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST) \
+ _(2128, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR) \
+ _(2129, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR) \
+ _(2131, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV) \
+ _(2132, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST) \
+ _(2133, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR) \
+ _(2134, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR) \
+ _(2136, ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV) \
+ _(2137, ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST) \
+ _(2138, ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR) \
+ _(2139, ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR) \
+ _(2141, ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV) \
+ _(2142, ZEND_FETCH_OBJ_IS_SPEC_CV_CONST) \
+ _(2143, ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR) \
+ _(2144, ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR) \
+ _(2146, ZEND_FETCH_OBJ_IS_SPEC_CV_CV) \
+ _(2147, ZEND_FETCH_FUNC_ARG_SPEC_CONST_UNUSED) \
+ _(2148, ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED) \
+ _(2149, ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED) \
+ _(2151, ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED) \
+ _(2152, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST) \
+ _(2153, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR) \
+ _(2154, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR) \
+ _(2155, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED) \
+ _(2156, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV) \
+ _(2157, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST) \
+ _(2158, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR) \
+ _(2159, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR) \
+ _(2160, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED) \
+ _(2161, ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CV) \
+ _(2162, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST) \
+ _(2163, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR) \
+ _(2164, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR) \
+ _(2165, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED) \
+ _(2166, ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV) \
+ _(2172, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST) \
+ _(2173, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR) \
+ _(2174, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR) \
+ _(2175, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED) \
+ _(2176, ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV) \
+ _(2177, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST) \
+ _(2178, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR) \
+ _(2179, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR) \
+ _(2181, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV) \
+ _(2182, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST) \
+ _(2183, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR) \
+ _(2184, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR) \
+ _(2186, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV) \
+ _(2187, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST) \
+ _(2188, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR) \
+ _(2189, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR) \
+ _(2191, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV) \
+ _(2192, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST) \
+ _(2193, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR) \
+ _(2194, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR) \
+ _(2196, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV) \
+ _(2197, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST) \
+ _(2198, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR) \
+ _(2199, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR) \
+ _(2201, ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV) \
+ _(2202, ZEND_FETCH_UNSET_SPEC_CONST_UNUSED) \
+ _(2203, ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED) \
+ _(2204, ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED) \
+ _(2206, ZEND_FETCH_UNSET_SPEC_CV_UNUSED) \
+ _(2217, ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST) \
+ _(2218, ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR) \
+ _(2219, ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR) \
+ _(2221, ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV) \
+ _(2227, ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST) \
+ _(2228, ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR) \
+ _(2229, ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR) \
+ _(2231, ZEND_FETCH_DIM_UNSET_SPEC_CV_CV) \
+ _(2242, ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST) \
+ _(2243, ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR) \
+ _(2244, ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR) \
+ _(2246, ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV) \
+ _(2247, ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST) \
+ _(2248, ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR) \
+ _(2249, ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR) \
+ _(2251, ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV) \
+ _(2252, ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST) \
+ _(2253, ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR) \
+ _(2254, ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR) \
+ _(2256, ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV) \
+ _(2257, ZEND_FETCH_LIST_R_SPEC_CONST_CONST) \
+ _(2258, ZEND_FETCH_LIST_R_SPEC_CONST_TMPVAR) \
+ _(2259, ZEND_FETCH_LIST_R_SPEC_CONST_TMPVAR) \
+ _(2261, ZEND_FETCH_LIST_R_SPEC_CONST_CV) \
+ _(2262, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST) \
+ _(2263, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
+ _(2264, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
+ _(2266, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV) \
+ _(2267, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST) \
+ _(2268, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
+ _(2269, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
+ _(2271, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV) \
+ _(2277, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CONST) \
+ _(2278, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
+ _(2279, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_TMPVAR) \
+ _(2281, ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV) \
+ _(2282, ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST) \
+ _(2283, ZEND_CHECK_FUNC_ARG_SPEC_UNUSED) \
+ _(2284, ZEND_CHECK_FUNC_ARG_SPEC_UNUSED_QUICK) \
+ _(2285, ZEND_EXT_STMT_SPEC) \
+ _(2286, ZEND_EXT_FCALL_BEGIN_SPEC) \
+ _(2287, ZEND_EXT_FCALL_END_SPEC) \
+ _(2288, ZEND_EXT_NOP_SPEC) \
+ _(2289, ZEND_TICKS_SPEC) \
+ _(2290, ZEND_SEND_VAR_NO_REF_SPEC_VAR) \
+ _(2291, ZEND_CATCH_SPEC_CONST) \
+ _(2292, ZEND_THROW_SPEC_CONST) \
+ _(2293, ZEND_THROW_SPEC_TMP) \
+ _(2294, ZEND_THROW_SPEC_VAR) \
+ _(2296, ZEND_THROW_SPEC_CV) \
+ _(2297, ZEND_FETCH_CLASS_SPEC_UNUSED_CONST) \
+ _(2298, ZEND_FETCH_CLASS_SPEC_UNUSED_TMPVAR) \
+ _(2299, ZEND_FETCH_CLASS_SPEC_UNUSED_TMPVAR) \
+ _(2300, ZEND_FETCH_CLASS_SPEC_UNUSED_UNUSED) \
+ _(2301, ZEND_FETCH_CLASS_SPEC_UNUSED_CV) \
+ _(2302, ZEND_CLONE_SPEC_CONST) \
+ _(2303, ZEND_CLONE_SPEC_TMPVAR) \
+ _(2304, ZEND_CLONE_SPEC_TMPVAR) \
+ _(2305, ZEND_CLONE_SPEC_UNUSED) \
+ _(2306, ZEND_CLONE_SPEC_CV) \
+ _(2307, ZEND_RETURN_BY_REF_SPEC_CONST) \
+ _(2308, ZEND_RETURN_BY_REF_SPEC_TMP) \
+ _(2309, ZEND_RETURN_BY_REF_SPEC_VAR) \
+ _(2311, ZEND_RETURN_BY_REF_SPEC_CV) \
+ _(2312, ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST) \
+ _(2313, ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR) \
+ _(2314, ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR) \
+ _(2316, ZEND_INIT_METHOD_CALL_SPEC_CONST_CV) \
+ _(2317, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST) \
+ _(2318, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR) \
+ _(2319, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR) \
+ _(2321, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV) \
+ _(2322, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST) \
+ _(2323, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR) \
+ _(2324, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR) \
+ _(2326, ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV) \
+ _(2327, ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST) \
+ _(2328, ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR) \
+ _(2329, ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR) \
+ _(2331, ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV) \
+ _(2332, ZEND_INIT_METHOD_CALL_SPEC_CV_CONST) \
+ _(2333, ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR) \
+ _(2334, ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR) \
+ _(2336, ZEND_INIT_METHOD_CALL_SPEC_CV_CV) \
+ _(2337, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST) \
+ _(2338, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR) \
+ _(2339, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR) \
+ _(2340, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED) \
+ _(2341, ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV) \
+ _(2347, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST) \
+ _(2348, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR) \
+ _(2349, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR) \
+ _(2350, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED) \
+ _(2351, ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV) \
+ _(2352, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CONST) \
+ _(2353, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR) \
+ _(2354, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR) \
+ _(2355, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED) \
+ _(2356, ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CV) \
+ _(2362, ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED) \
+ _(2363, ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED) \
+ _(2364, ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED) \
+ _(2366, ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED) \
+ _(2367, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST) \
+ _(2368, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR) \
+ _(2369, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR) \
+ _(2371, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV) \
+ _(2372, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST) \
+ _(2373, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR) \
+ _(2374, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR) \
+ _(2376, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV) \
+ _(2377, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST) \
+ _(2378, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR) \
+ _(2379, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR) \
+ _(2381, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV) \
+ _(2387, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST) \
+ _(2388, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR) \
+ _(2389, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR) \
+ _(2391, ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV) \
+ _(2392, ZEND_SEND_VAL_EX_SPEC_CONST) \
+ _(2393, ZEND_SEND_VAL_EX_SPEC_CONST_QUICK) \
+ _(2394, ZEND_SEND_VAL_EX_SPEC_TMP) \
+ _(2395, ZEND_SEND_VAL_EX_SPEC_TMP_QUICK) \
+ _(2404, ZEND_SEND_VAR_SPEC_VAR) \
+ _(2406, ZEND_SEND_VAR_SPEC_CV) \
+ _(2407, ZEND_INIT_USER_CALL_SPEC_CONST_CONST) \
+ _(2408, ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR) \
+ _(2409, ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR) \
+ _(2411, ZEND_INIT_USER_CALL_SPEC_CONST_CV) \
+ _(2412, ZEND_SEND_ARRAY_SPEC) \
+ _(2413, ZEND_SEND_USER_SPEC_CONST) \
+ _(2414, ZEND_SEND_USER_SPEC_TMP) \
+ _(2415, ZEND_SEND_USER_SPEC_VAR) \
+ _(2417, ZEND_SEND_USER_SPEC_CV) \
+ _(2418, ZEND_STRLEN_SPEC_CONST) \
+ _(2419, ZEND_STRLEN_SPEC_TMPVAR) \
+ _(2420, ZEND_STRLEN_SPEC_TMPVAR) \
+ _(2422, ZEND_STRLEN_SPEC_CV) \
+ _(2423, ZEND_DEFINED_SPEC_CONST) \
+ _(2424, ZEND_TYPE_CHECK_SPEC_CONST) \
+ _(2425, ZEND_TYPE_CHECK_SPEC_TMPVAR) \
+ _(2426, ZEND_TYPE_CHECK_SPEC_TMPVAR) \
+ _(2428, ZEND_TYPE_CHECK_SPEC_CV) \
+ _(2429, ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED) \
+ _(2430, ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED) \
+ _(2431, ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED) \
+ _(2432, ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED) \
+ _(2433, ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED) \
+ _(2434, ZEND_FE_RESET_RW_SPEC_CONST) \
+ _(2435, ZEND_FE_RESET_RW_SPEC_TMP) \
+ _(2436, ZEND_FE_RESET_RW_SPEC_VAR) \
+ _(2438, ZEND_FE_RESET_RW_SPEC_CV) \
+ _(2439, ZEND_FE_FETCH_RW_SPEC_VAR) \
+ _(2440, ZEND_FE_FREE_SPEC_TMPVAR) \
+ _(2441, ZEND_INIT_DYNAMIC_CALL_SPEC_CONST) \
+ _(2442, ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR) \
+ _(2443, ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR) \
+ _(2445, ZEND_INIT_DYNAMIC_CALL_SPEC_CV) \
+ _(2446, ZEND_DO_ICALL_SPEC_RETVAL_UNUSED) \
+ _(2447, ZEND_DO_ICALL_SPEC_RETVAL_USED) \
+ _(2448, ZEND_DO_UCALL_SPEC_RETVAL_UNUSED) \
+ _(2449, ZEND_DO_UCALL_SPEC_RETVAL_USED) \
+ _(2450, ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_UNUSED) \
+ _(2451, ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED) \
+ _(2462, ZEND_PRE_INC_OBJ_SPEC_VAR_CONST) \
+ _(2463, ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR) \
+ _(2464, ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR) \
+ _(2466, ZEND_PRE_INC_OBJ_SPEC_VAR_CV) \
+ _(2467, ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST) \
+ _(2468, ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR) \
+ _(2469, ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR) \
+ _(2471, ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV) \
+ _(2472, ZEND_PRE_INC_OBJ_SPEC_CV_CONST) \
+ _(2473, ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR) \
+ _(2474, ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR) \
+ _(2476, ZEND_PRE_INC_OBJ_SPEC_CV_CV) \
+ _(2487, ZEND_PRE_DEC_OBJ_SPEC_VAR_CONST) \
+ _(2488, ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR) \
+ _(2489, ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR) \
+ _(2491, ZEND_PRE_DEC_OBJ_SPEC_VAR_CV) \
+ _(2492, ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CONST) \
+ _(2493, ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR) \
+ _(2494, ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR) \
+ _(2496, ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CV) \
+ _(2497, ZEND_PRE_DEC_OBJ_SPEC_CV_CONST) \
+ _(2498, ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR) \
+ _(2499, ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR) \
+ _(2501, ZEND_PRE_DEC_OBJ_SPEC_CV_CV) \
+ _(2512, ZEND_POST_INC_OBJ_SPEC_VAR_CONST) \
+ _(2513, ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR) \
+ _(2514, ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR) \
+ _(2516, ZEND_POST_INC_OBJ_SPEC_VAR_CV) \
+ _(2517, ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST) \
+ _(2518, ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR) \
+ _(2519, ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR) \
+ _(2521, ZEND_POST_INC_OBJ_SPEC_UNUSED_CV) \
+ _(2522, ZEND_POST_INC_OBJ_SPEC_CV_CONST) \
+ _(2523, ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR) \
+ _(2524, ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR) \
+ _(2526, ZEND_POST_INC_OBJ_SPEC_CV_CV) \
+ _(2537, ZEND_POST_DEC_OBJ_SPEC_VAR_CONST) \
+ _(2538, ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR) \
+ _(2539, ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR) \
+ _(2541, ZEND_POST_DEC_OBJ_SPEC_VAR_CV) \
+ _(2542, ZEND_POST_DEC_OBJ_SPEC_UNUSED_CONST) \
+ _(2543, ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR) \
+ _(2544, ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR) \
+ _(2546, ZEND_POST_DEC_OBJ_SPEC_UNUSED_CV) \
+ _(2547, ZEND_POST_DEC_OBJ_SPEC_CV_CONST) \
+ _(2548, ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR) \
+ _(2549, ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR) \
+ _(2551, ZEND_POST_DEC_OBJ_SPEC_CV_CV) \
+ _(2602, ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CONST) \
+ _(2603, ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_TMP) \
+ _(2604, ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_VAR) \
+ _(2606, ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CV) \
+ _(2607, ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST) \
+ _(2608, ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP) \
+ _(2609, ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR) \
+ _(2611, ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV) \
+ _(2612, ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST) \
+ _(2613, ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP) \
+ _(2614, ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR) \
+ _(2616, ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV) \
+ _(2622, ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CONST) \
+ _(2623, ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_TMP) \
+ _(2624, ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_VAR) \
+ _(2626, ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CV) \
+ _(2627, ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CONST) \
+ _(2628, ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_TMP) \
+ _(2629, ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_VAR) \
+ _(2631, ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV) \
+ _(2632, ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST) \
+ _(2633, ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP) \
+ _(2634, ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR) \
+ _(2636, ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV) \
+ _(2637, ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST) \
+ _(2638, ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP) \
+ _(2639, ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR) \
+ _(2641, ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV) \
+ _(2647, ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CONST) \
+ _(2648, ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_TMP) \
+ _(2649, ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_VAR) \
+ _(2651, ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV) \
+ _(2652, ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CONST) \
+ _(2653, ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_TMP) \
+ _(2654, ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_VAR) \
+ _(2656, ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV) \
+ _(2657, ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST) \
+ _(2658, ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP) \
+ _(2659, ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR) \
+ _(2661, ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV) \
+ _(2662, ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST) \
+ _(2663, ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP) \
+ _(2664, ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR) \
+ _(2666, ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV) \
+ _(2672, ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CONST) \
+ _(2673, ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_TMP) \
+ _(2674, ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_VAR) \
+ _(2676, ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CV) \
+ _(2683, ZEND_INSTANCEOF_SPEC_TMPVAR_CONST) \
+ _(2685, ZEND_INSTANCEOF_SPEC_TMPVAR_VAR) \
+ _(2686, ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED) \
+ _(2688, ZEND_INSTANCEOF_SPEC_TMPVAR_CONST) \
+ _(2690, ZEND_INSTANCEOF_SPEC_TMPVAR_VAR) \
+ _(2691, ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED) \
+ _(2698, ZEND_INSTANCEOF_SPEC_CV_CONST) \
+ _(2700, ZEND_INSTANCEOF_SPEC_CV_VAR) \
+ _(2701, ZEND_INSTANCEOF_SPEC_CV_UNUSED) \
+ _(2703, ZEND_DECLARE_CLASS_SPEC_CONST) \
+ _(2704, ZEND_DECLARE_INHERITED_CLASS_SPEC_CONST_CONST) \
+ _(2705, ZEND_DECLARE_FUNCTION_SPEC) \
+ _(2706, ZEND_YIELD_FROM_SPEC_CONST) \
+ _(2707, ZEND_YIELD_FROM_SPEC_TMP) \
+ _(2708, ZEND_YIELD_FROM_SPEC_VAR) \
+ _(2710, ZEND_YIELD_FROM_SPEC_CV) \
+ _(2711, ZEND_DECLARE_CONST_SPEC_CONST_CONST) \
+ _(2712, ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_CONST_CONST) \
+ _(2763, ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CONST) \
+ _(2764, ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_TMP) \
+ _(2765, ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_VAR) \
+ _(2767, ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CV) \
+ _(2768, ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST) \
+ _(2769, ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP) \
+ _(2770, ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR) \
+ _(2772, ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV) \
+ _(2773, ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST) \
+ _(2774, ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP) \
+ _(2775, ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR) \
+ _(2777, ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV) \
+ _(2778, ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CONST) \
+ _(2779, ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_TMP) \
+ _(2780, ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_VAR) \
+ _(2782, ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CV) \
+ _(2783, ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CONST) \
+ _(2784, ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_TMP) \
+ _(2785, ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_VAR) \
+ _(2787, ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CV) \
+ _(2813, ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST) \
+ _(2814, ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_TMP) \
+ _(2815, ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_VAR) \
+ _(2817, ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CV) \
+ _(2818, ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST) \
+ _(2819, ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP) \
+ _(2820, ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR) \
+ _(2822, ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV) \
+ _(2823, ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST) \
+ _(2824, ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP) \
+ _(2825, ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR) \
+ _(2827, ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV) \
+ _(2828, ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST) \
+ _(2829, ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_TMP) \
+ _(2830, ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_VAR) \
+ _(2832, ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV) \
+ _(2833, ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CONST) \
+ _(2834, ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_TMP) \
+ _(2835, ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_VAR) \
+ _(2837, ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CV) \
+ _(2838, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST) \
+ _(2839, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR) \
+ _(2840, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR) \
+ _(2842, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV) \
+ _(2843, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST) \
+ _(2844, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR) \
+ _(2845, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR) \
+ _(2847, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV) \
+ _(2848, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST) \
+ _(2849, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR) \
+ _(2850, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR) \
+ _(2852, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV) \
+ _(2853, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST) \
+ _(2854, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR) \
+ _(2855, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR) \
+ _(2857, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV) \
+ _(2858, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST) \
+ _(2859, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR) \
+ _(2860, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR) \
+ _(2862, ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV) \
+ _(2863, ZEND_HANDLE_EXCEPTION_SPEC) \
+ _(2864, ZEND_USER_OPCODE_SPEC) \
+ _(2865, ZEND_ASSERT_CHECK_SPEC) \
+ _(2866, ZEND_JMP_SET_SPEC_CONST) \
+ _(2867, ZEND_JMP_SET_SPEC_TMP) \
+ _(2868, ZEND_JMP_SET_SPEC_VAR) \
+ _(2870, ZEND_JMP_SET_SPEC_CV) \
+ _(2871, ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED) \
+ _(2872, ZEND_SEPARATE_SPEC_VAR_UNUSED) \
+ _(2873, ZEND_FETCH_CLASS_NAME_SPEC_UNUSED) \
+ _(2874, ZEND_CALL_TRAMPOLINE_SPEC) \
+ _(2875, ZEND_DISCARD_EXCEPTION_SPEC) \
+ _(2876, ZEND_YIELD_SPEC_CONST_CONST) \
+ _(2877, ZEND_YIELD_SPEC_CONST_TMP) \
+ _(2878, ZEND_YIELD_SPEC_CONST_VAR) \
+ _(2879, ZEND_YIELD_SPEC_CONST_UNUSED) \
+ _(2880, ZEND_YIELD_SPEC_CONST_CV) \
+ _(2881, ZEND_YIELD_SPEC_TMP_CONST) \
+ _(2882, ZEND_YIELD_SPEC_TMP_TMP) \
+ _(2883, ZEND_YIELD_SPEC_TMP_VAR) \
+ _(2884, ZEND_YIELD_SPEC_TMP_UNUSED) \
+ _(2885, ZEND_YIELD_SPEC_TMP_CV) \
+ _(2886, ZEND_YIELD_SPEC_VAR_CONST) \
+ _(2887, ZEND_YIELD_SPEC_VAR_TMP) \
+ _(2888, ZEND_YIELD_SPEC_VAR_VAR) \
+ _(2889, ZEND_YIELD_SPEC_VAR_UNUSED) \
+ _(2890, ZEND_YIELD_SPEC_VAR_CV) \
+ _(2891, ZEND_YIELD_SPEC_UNUSED_CONST) \
+ _(2892, ZEND_YIELD_SPEC_UNUSED_TMP) \
+ _(2893, ZEND_YIELD_SPEC_UNUSED_VAR) \
+ _(2894, ZEND_YIELD_SPEC_UNUSED_UNUSED) \
+ _(2895, ZEND_YIELD_SPEC_UNUSED_CV) \
+ _(2896, ZEND_YIELD_SPEC_CV_CONST) \
+ _(2897, ZEND_YIELD_SPEC_CV_TMP) \
+ _(2898, ZEND_YIELD_SPEC_CV_VAR) \
+ _(2899, ZEND_YIELD_SPEC_CV_UNUSED) \
+ _(2900, ZEND_YIELD_SPEC_CV_CV) \
+ _(2901, ZEND_GENERATOR_RETURN_SPEC_CONST) \
+ _(2902, ZEND_GENERATOR_RETURN_SPEC_TMP) \
+ _(2903, ZEND_GENERATOR_RETURN_SPEC_VAR) \
+ _(2905, ZEND_GENERATOR_RETURN_SPEC_CV) \
+ _(2906, ZEND_FAST_CALL_SPEC) \
+ _(2907, ZEND_FAST_RET_SPEC) \
+ _(2908, ZEND_RECV_VARIADIC_SPEC_UNUSED) \
+ _(2909, ZEND_SEND_UNPACK_SPEC) \
+ _(2910, ZEND_POW_SPEC_CONST_CONST) \
+ _(2911, ZEND_POW_SPEC_CONST_TMPVAR) \
+ _(2912, ZEND_POW_SPEC_CONST_TMPVAR) \
+ _(2914, ZEND_POW_SPEC_CONST_CV) \
+ _(2915, ZEND_POW_SPEC_TMPVAR_CONST) \
+ _(2916, ZEND_POW_SPEC_TMPVAR_TMPVAR) \
+ _(2917, ZEND_POW_SPEC_TMPVAR_TMPVAR) \
+ _(2919, ZEND_POW_SPEC_TMPVAR_CV) \
+ _(2920, ZEND_POW_SPEC_TMPVAR_CONST) \
+ _(2921, ZEND_POW_SPEC_TMPVAR_TMPVAR) \
+ _(2922, ZEND_POW_SPEC_TMPVAR_TMPVAR) \
+ _(2924, ZEND_POW_SPEC_TMPVAR_CV) \
+ _(2930, ZEND_POW_SPEC_CV_CONST) \
+ _(2931, ZEND_POW_SPEC_CV_TMPVAR) \
+ _(2932, ZEND_POW_SPEC_CV_TMPVAR) \
+ _(2934, ZEND_POW_SPEC_CV_CV) \
+ _(2938, ZEND_ASSIGN_POW_SPEC_CONST_CONST_STATIC_PROP) \
+ _(2942, ZEND_ASSIGN_POW_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(2946, ZEND_ASSIGN_POW_SPEC_CONST_TMPVAR_STATIC_PROP) \
+ _(2950, ZEND_ASSIGN_POW_SPEC_CONST_UNUSED_STATIC_PROP) \
+ _(2958, ZEND_ASSIGN_POW_SPEC_TMP_CONST_STATIC_PROP) \
+ _(2962, ZEND_ASSIGN_POW_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(2966, ZEND_ASSIGN_POW_SPEC_TMP_TMPVAR_STATIC_PROP) \
+ _(2970, ZEND_ASSIGN_POW_SPEC_TMP_UNUSED_STATIC_PROP) \
+ _(2975, ZEND_ASSIGN_POW_SPEC_VAR_CONST) \
+ _(2976, ZEND_ASSIGN_POW_SPEC_VAR_CONST_DIM) \
+ _(2977, ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ) \
+ _(2978, ZEND_ASSIGN_POW_SPEC_VAR_CONST_STATIC_PROP) \
+ _(2979, ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR) \
+ _(2980, ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM) \
+ _(2981, ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ) \
+ _(2982, ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(2983, ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR) \
+ _(2984, ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM) \
+ _(2985, ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ) \
+ _(2986, ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_STATIC_PROP) \
+ _(2988, ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM) \
+ _(2990, ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_STATIC_PROP) \
+ _(2991, ZEND_ASSIGN_POW_SPEC_VAR_CV) \
+ _(2992, ZEND_ASSIGN_POW_SPEC_VAR_CV_DIM) \
+ _(2993, ZEND_ASSIGN_POW_SPEC_VAR_CV_OBJ) \
+ _(2997, ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_OBJ) \
+ _(3001, ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(3005, ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ) \
+ _(3013, ZEND_ASSIGN_POW_SPEC_UNUSED_CV_OBJ) \
+ _(3015, ZEND_ASSIGN_POW_SPEC_CV_CONST) \
+ _(3016, ZEND_ASSIGN_POW_SPEC_CV_CONST_DIM) \
+ _(3017, ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ) \
+ _(3018, ZEND_ASSIGN_POW_SPEC_CV_CONST_STATIC_PROP) \
+ _(3019, ZEND_ASSIGN_POW_SPEC_CV_TMPVAR) \
+ _(3020, ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM) \
+ _(3021, ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ) \
+ _(3022, ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(3023, ZEND_ASSIGN_POW_SPEC_CV_TMPVAR) \
+ _(3024, ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM) \
+ _(3025, ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ) \
+ _(3026, ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_STATIC_PROP) \
+ _(3028, ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM) \
+ _(3030, ZEND_ASSIGN_POW_SPEC_CV_UNUSED_STATIC_PROP) \
+ _(3031, ZEND_ASSIGN_POW_SPEC_CV_CV) \
+ _(3032, ZEND_ASSIGN_POW_SPEC_CV_CV_DIM) \
+ _(3033, ZEND_ASSIGN_POW_SPEC_CV_CV_OBJ) \
+ _(3035, ZEND_BIND_GLOBAL_SPEC_CV_CONST) \
+ _(3036, ZEND_COALESCE_SPEC_CONST) \
+ _(3037, ZEND_COALESCE_SPEC_TMPVAR) \
+ _(3038, ZEND_COALESCE_SPEC_TMPVAR) \
+ _(3040, ZEND_COALESCE_SPEC_CV) \
+ _(3041, ZEND_SPACESHIP_SPEC_CONST_CONST) \
+ _(3042, ZEND_SPACESHIP_SPEC_CONST_TMPVAR) \
+ _(3043, ZEND_SPACESHIP_SPEC_CONST_TMPVAR) \
+ _(3045, ZEND_SPACESHIP_SPEC_CONST_CV) \
+ _(3046, ZEND_SPACESHIP_SPEC_TMPVAR_CONST) \
+ _(3047, ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR) \
+ _(3048, ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR) \
+ _(3050, ZEND_SPACESHIP_SPEC_TMPVAR_CV) \
+ _(3051, ZEND_SPACESHIP_SPEC_TMPVAR_CONST) \
+ _(3052, ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR) \
+ _(3053, ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR) \
+ _(3055, ZEND_SPACESHIP_SPEC_TMPVAR_CV) \
+ _(3061, ZEND_SPACESHIP_SPEC_CV_CONST) \
+ _(3062, ZEND_SPACESHIP_SPEC_CV_TMPVAR) \
+ _(3063, ZEND_SPACESHIP_SPEC_CV_TMPVAR) \
+ _(3065, ZEND_SPACESHIP_SPEC_CV_CV) \
+ _(3066, ZEND_DECLARE_ANON_CLASS_SPEC) \
+ _(3067, ZEND_DECLARE_ANON_INHERITED_CLASS_SPEC_CONST_CONST) \
+ _(3068, ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST) \
+ _(3070, ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR) \
+ _(3071, ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_UNUSED) \
+ _(3073, ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST) \
+ _(3075, ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR) \
+ _(3076, ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED) \
+ _(3078, ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST) \
+ _(3080, ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR) \
+ _(3081, ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED) \
+ _(3088, ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST) \
+ _(3090, ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR) \
+ _(3091, ZEND_FETCH_STATIC_PROP_R_SPEC_CV_UNUSED) \
+ _(3093, ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_CONST) \
+ _(3095, ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_VAR) \
+ _(3096, ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_UNUSED) \
+ _(3098, ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST) \
+ _(3100, ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR) \
+ _(3101, ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED) \
+ _(3103, ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST) \
+ _(3105, ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR) \
+ _(3106, ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED) \
+ _(3113, ZEND_FETCH_STATIC_PROP_W_SPEC_CV_CONST) \
+ _(3115, ZEND_FETCH_STATIC_PROP_W_SPEC_CV_VAR) \
+ _(3116, ZEND_FETCH_STATIC_PROP_W_SPEC_CV_UNUSED) \
+ _(3118, ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_CONST) \
+ _(3120, ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_VAR) \
+ _(3121, ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_UNUSED) \
+ _(3123, ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST) \
+ _(3125, ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR) \
+ _(3126, ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED) \
+ _(3128, ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST) \
+ _(3130, ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR) \
+ _(3131, ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED) \
+ _(3138, ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_CONST) \
+ _(3140, ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_VAR) \
+ _(3141, ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_UNUSED) \
+ _(3143, ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_CONST) \
+ _(3145, ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_VAR) \
+ _(3146, ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_UNUSED) \
+ _(3148, ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST) \
+ _(3150, ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR) \
+ _(3151, ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED) \
+ _(3153, ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST) \
+ _(3155, ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR) \
+ _(3156, ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED) \
+ _(3163, ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_CONST) \
+ _(3165, ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_VAR) \
+ _(3166, ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_UNUSED) \
+ _(3168, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_CONST) \
+ _(3170, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_VAR) \
+ _(3171, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_UNUSED) \
+ _(3173, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST) \
+ _(3175, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR) \
+ _(3176, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED) \
+ _(3178, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST) \
+ _(3180, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR) \
+ _(3181, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED) \
+ _(3188, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_CONST) \
+ _(3190, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_VAR) \
+ _(3191, ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_UNUSED) \
+ _(3193, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_CONST) \
+ _(3195, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_VAR) \
+ _(3196, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_UNUSED) \
+ _(3198, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST) \
+ _(3200, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR) \
+ _(3201, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED) \
+ _(3203, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST) \
+ _(3205, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR) \
+ _(3206, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED) \
+ _(3213, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_CONST) \
+ _(3215, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_VAR) \
+ _(3216, ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_UNUSED) \
+ _(3218, ZEND_UNSET_STATIC_PROP_SPEC_CONST_CONST) \
+ _(3220, ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR) \
+ _(3221, ZEND_UNSET_STATIC_PROP_SPEC_CONST_UNUSED) \
+ _(3223, ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST) \
+ _(3225, ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR) \
+ _(3226, ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED) \
+ _(3228, ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST) \
+ _(3230, ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR) \
+ _(3231, ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED) \
+ _(3238, ZEND_UNSET_STATIC_PROP_SPEC_CV_CONST) \
+ _(3240, ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR) \
+ _(3241, ZEND_UNSET_STATIC_PROP_SPEC_CV_UNUSED) \
+ _(3243, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_CONST) \
+ _(3245, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_VAR) \
+ _(3246, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_UNUSED) \
+ _(3248, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST) \
+ _(3250, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR) \
+ _(3251, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED) \
+ _(3253, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST) \
+ _(3255, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR) \
+ _(3256, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED) \
+ _(3263, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_CONST) \
+ _(3265, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_VAR) \
+ _(3266, ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_UNUSED) \
+ _(3268, ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST) \
+ _(3270, ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST) \
+ _(3271, ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST) \
+ _(3273, ZEND_BIND_LEXICAL_SPEC_TMP_CV) \
+ _(3274, ZEND_BIND_STATIC_SPEC_CV_UNUSED) \
+ _(3275, ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED) \
+ _(3276, ZEND_SEND_FUNC_ARG_SPEC_VAR) \
+ _(3277, ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED) \
+ _(3278, ZEND_SWITCH_LONG_SPEC_CONST_CONST) \
+ _(3279, ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST) \
+ _(3280, ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST) \
+ _(3282, ZEND_SWITCH_LONG_SPEC_TMPVARCV_CONST) \
+ _(3283, ZEND_SWITCH_STRING_SPEC_CONST_CONST) \
+ _(3284, ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST) \
+ _(3285, ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST) \
+ _(3287, ZEND_SWITCH_STRING_SPEC_TMPVARCV_CONST) \
+ _(3288, ZEND_IN_ARRAY_SPEC_CONST_CONST) \
+ _(3289, ZEND_IN_ARRAY_SPEC_TMP_CONST) \
+ _(3290, ZEND_IN_ARRAY_SPEC_VAR_CONST) \
+ _(3292, ZEND_IN_ARRAY_SPEC_CV_CONST) \
+ _(3293, ZEND_COUNT_SPEC_CONST_UNUSED) \
+ _(3294, ZEND_COUNT_SPEC_TMP_UNUSED) \
+ _(3295, ZEND_COUNT_SPEC_VAR_UNUSED) \
+ _(3297, ZEND_COUNT_SPEC_CV_UNUSED) \
+ _(3298, ZEND_GET_CLASS_SPEC_CONST_UNUSED) \
+ _(3299, ZEND_GET_CLASS_SPEC_TMP_UNUSED) \
+ _(3300, ZEND_GET_CLASS_SPEC_VAR_UNUSED) \
+ _(3301, ZEND_GET_CLASS_SPEC_UNUSED_UNUSED) \
+ _(3302, ZEND_GET_CLASS_SPEC_CV_UNUSED) \
+ _(3303, ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED) \
+ _(3304, ZEND_GET_TYPE_SPEC_CONST_UNUSED) \
+ _(3305, ZEND_GET_TYPE_SPEC_TMP_UNUSED) \
+ _(3306, ZEND_GET_TYPE_SPEC_VAR_UNUSED) \
+ _(3308, ZEND_GET_TYPE_SPEC_CV_UNUSED) \
+ _(3309, ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED) \
+ _(3310, ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED) \
+ _(3313, ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED) \
+ _(3315, ZEND_UNSET_CV_SPEC_CV_UNUSED) \
+ _(3316, ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_SET) \
+ _(3317, ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_EMPTY) \
+ _(3318, ZEND_FETCH_LIST_W_SPEC_VAR_CONST) \
+ _(3319, ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR) \
+ _(3320, ZEND_FETCH_LIST_W_SPEC_VAR_TMPVAR) \
+ _(3322, ZEND_FETCH_LIST_W_SPEC_VAR_CV) \
+ _(3323, ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CONST) \
+ _(3324, ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_TMPVAR) \
+ _(3325, ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_TMPVAR) \
+ _(3327, ZEND_ARRAY_KEY_EXISTS_SPEC_CONST_CV) \
+ _(3328, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CONST) \
+ _(3329, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR) \
+ _(3330, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR) \
+ _(3332, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CV) \
+ _(3333, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CONST) \
+ _(3334, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR) \
+ _(3335, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_TMPVAR) \
+ _(3337, ZEND_ARRAY_KEY_EXISTS_SPEC_TMPVAR_CV) \
+ _(3343, ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CONST) \
+ _(3344, ZEND_ARRAY_KEY_EXISTS_SPEC_CV_TMPVAR) \
+ _(3345, ZEND_ARRAY_KEY_EXISTS_SPEC_CV_TMPVAR) \
+ _(3347, ZEND_ARRAY_KEY_EXISTS_SPEC_CV_CV) \
+ _(3400, ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_VAR) \
+ _(3402, ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CONST_OP_DATA_CV) \
+ _(3405, ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_VAR) \
+ _(3407, ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_CV) \
+ _(3410, ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_VAR) \
+ _(3412, ZEND_ASSIGN_OBJ_REF_SPEC_VAR_TMPVAR_OP_DATA_CV) \
+ _(3420, ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_VAR) \
+ _(3422, ZEND_ASSIGN_OBJ_REF_SPEC_VAR_CV_OP_DATA_CV) \
+ _(3425, ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_VAR) \
+ _(3427, ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CONST_OP_DATA_CV) \
+ _(3430, ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_VAR) \
+ _(3432, ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_CV) \
+ _(3435, ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_VAR) \
+ _(3437, ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_TMPVAR_OP_DATA_CV) \
+ _(3445, ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_VAR) \
+ _(3447, ZEND_ASSIGN_OBJ_REF_SPEC_UNUSED_CV_OP_DATA_CV) \
+ _(3450, ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_VAR) \
+ _(3452, ZEND_ASSIGN_OBJ_REF_SPEC_CV_CONST_OP_DATA_CV) \
+ _(3455, ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_VAR) \
+ _(3457, ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_CV) \
+ _(3460, ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_VAR) \
+ _(3462, ZEND_ASSIGN_OBJ_REF_SPEC_CV_TMPVAR_OP_DATA_CV) \
+ _(3470, ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_VAR) \
+ _(3472, ZEND_ASSIGN_OBJ_REF_SPEC_CV_CV_OP_DATA_CV) \
+ _(3473, ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_CONST) \
+ _(3474, ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_TMP) \
+ _(3475, ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_VAR) \
+ _(3477, ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_CONST_OP_DATA_CV) \
+ _(3483, ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_CONST) \
+ _(3484, ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_TMP) \
+ _(3485, ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_VAR) \
+ _(3487, ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_VAR_OP_DATA_CV) \
+ _(3488, ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_CONST) \
+ _(3489, ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_TMP) \
+ _(3490, ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_VAR) \
+ _(3492, ZEND_ASSIGN_STATIC_PROP_SPEC_CONST_UNUSED_OP_DATA_CV) \
+ _(3498, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CONST) \
+ _(3499, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_TMP) \
+ _(3500, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_VAR) \
+ _(3502, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CV) \
+ _(3508, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CONST) \
+ _(3509, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_TMP) \
+ _(3510, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_VAR) \
+ _(3512, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CV) \
+ _(3513, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CONST) \
+ _(3514, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_TMP) \
+ _(3515, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_VAR) \
+ _(3517, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CV) \
+ _(3523, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CONST) \
+ _(3524, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_TMP) \
+ _(3525, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_VAR) \
+ _(3527, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_CONST_OP_DATA_CV) \
+ _(3533, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CONST) \
+ _(3534, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_TMP) \
+ _(3535, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_VAR) \
+ _(3537, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_VAR_OP_DATA_CV) \
+ _(3538, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CONST) \
+ _(3539, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_TMP) \
+ _(3540, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_VAR) \
+ _(3542, ZEND_ASSIGN_STATIC_PROP_SPEC_TMPVAR_UNUSED_OP_DATA_CV) \
+ _(3573, ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_CONST) \
+ _(3574, ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_TMP) \
+ _(3575, ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_VAR) \
+ _(3577, ZEND_ASSIGN_STATIC_PROP_SPEC_CV_CONST_OP_DATA_CV) \
+ _(3583, ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_CONST) \
+ _(3584, ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_TMP) \
+ _(3585, ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_VAR) \
+ _(3587, ZEND_ASSIGN_STATIC_PROP_SPEC_CV_VAR_OP_DATA_CV) \
+ _(3588, ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_CONST) \
+ _(3589, ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_TMP) \
+ _(3590, ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_VAR) \
+ _(3592, ZEND_ASSIGN_STATIC_PROP_SPEC_CV_UNUSED_OP_DATA_CV) \
+ _(3598, ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_CONST) \
+ _(3600, ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_VAR) \
+ _(3601, ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CONST_UNUSED) \
+ _(3603, ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_CONST) \
+ _(3605, ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_VAR) \
+ _(3606, ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_UNUSED) \
+ _(3608, ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_CONST) \
+ _(3610, ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_VAR) \
+ _(3611, ZEND_ASSIGN_STATIC_PROP_REF_SPEC_TMPVAR_UNUSED) \
+ _(3618, ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_CONST) \
+ _(3620, ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_VAR) \
+ _(3621, ZEND_ASSIGN_STATIC_PROP_REF_SPEC_CV_UNUSED) \
+ _(3623, ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_CONST) \
+ _(3625, ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_VAR) \
+ _(3626, ZEND_PRE_INC_STATIC_PROP_SPEC_CONST_UNUSED) \
+ _(3628, ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_CONST) \
+ _(3630, ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_VAR) \
+ _(3631, ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED) \
+ _(3633, ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_CONST) \
+ _(3635, ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_VAR) \
+ _(3636, ZEND_PRE_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED) \
+ _(3643, ZEND_PRE_INC_STATIC_PROP_SPEC_CV_CONST) \
+ _(3645, ZEND_PRE_INC_STATIC_PROP_SPEC_CV_VAR) \
+ _(3646, ZEND_PRE_INC_STATIC_PROP_SPEC_CV_UNUSED) \
+ _(3648, ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_CONST) \
+ _(3650, ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_VAR) \
+ _(3651, ZEND_PRE_DEC_STATIC_PROP_SPEC_CONST_UNUSED) \
+ _(3653, ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_CONST) \
+ _(3655, ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_VAR) \
+ _(3656, ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED) \
+ _(3658, ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_CONST) \
+ _(3660, ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_VAR) \
+ _(3661, ZEND_PRE_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED) \
+ _(3668, ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_CONST) \
+ _(3670, ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_VAR) \
+ _(3671, ZEND_PRE_DEC_STATIC_PROP_SPEC_CV_UNUSED) \
+ _(3673, ZEND_POST_INC_STATIC_PROP_SPEC_CONST_CONST) \
+ _(3675, ZEND_POST_INC_STATIC_PROP_SPEC_CONST_VAR) \
+ _(3676, ZEND_POST_INC_STATIC_PROP_SPEC_CONST_UNUSED) \
+ _(3678, ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_CONST) \
+ _(3680, ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_VAR) \
+ _(3681, ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED) \
+ _(3683, ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_CONST) \
+ _(3685, ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_VAR) \
+ _(3686, ZEND_POST_INC_STATIC_PROP_SPEC_TMPVAR_UNUSED) \
+ _(3693, ZEND_POST_INC_STATIC_PROP_SPEC_CV_CONST) \
+ _(3695, ZEND_POST_INC_STATIC_PROP_SPEC_CV_VAR) \
+ _(3696, ZEND_POST_INC_STATIC_PROP_SPEC_CV_UNUSED) \
+ _(3698, ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_CONST) \
+ _(3700, ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_VAR) \
+ _(3701, ZEND_POST_DEC_STATIC_PROP_SPEC_CONST_UNUSED) \
+ _(3703, ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_CONST) \
+ _(3705, ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_VAR) \
+ _(3706, ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED) \
+ _(3708, ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_CONST) \
+ _(3710, ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_VAR) \
+ _(3711, ZEND_POST_DEC_STATIC_PROP_SPEC_TMPVAR_UNUSED) \
+ _(3718, ZEND_POST_DEC_STATIC_PROP_SPEC_CV_CONST) \
+ _(3720, ZEND_POST_DEC_STATIC_PROP_SPEC_CV_VAR) \
+ _(3721, ZEND_POST_DEC_STATIC_PROP_SPEC_CV_UNUSED) \
+ _(3723, ZEND_JMP_FORWARD_SPEC) \
+ _(3729, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
+ _(3730, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3731, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3733, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3734, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
+ _(3735, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3736, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3738, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3744, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
+ _(3745, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3746, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3748, ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3754, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
+ _(3755, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3756, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3758, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3759, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
+ _(3760, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3761, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3763, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3769, ZEND_ADD_LONG_SPEC_TMPVARCV_CONST) \
+ _(3770, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3771, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3773, ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3779, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(3780, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3781, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3783, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3784, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(3785, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3786, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3788, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3794, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(3795, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3796, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3798, ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3800, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
+ _(3801, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
+ _(3803, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV) \
+ _(3804, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
+ _(3805, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3806, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3808, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3809, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
+ _(3810, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3811, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3813, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3819, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
+ _(3820, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3821, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3823, ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3825, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
+ _(3826, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
+ _(3828, ZEND_SUB_LONG_SPEC_CONST_TMPVARCV) \
+ _(3829, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
+ _(3830, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3831, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3833, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3834, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
+ _(3835, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3836, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3838, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3844, ZEND_SUB_LONG_SPEC_TMPVARCV_CONST) \
+ _(3845, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3846, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3848, ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3850, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
+ _(3851, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
+ _(3853, ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV) \
+ _(3854, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(3855, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3856, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3858, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3859, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(3860, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3861, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3863, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3869, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(3870, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3871, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3873, ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3879, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
+ _(3880, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3881, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3883, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3884, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
+ _(3885, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3886, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3888, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3894, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST) \
+ _(3895, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3896, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3898, ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV) \
+ _(3904, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
+ _(3905, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3906, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3908, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3909, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
+ _(3910, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3911, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3913, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3919, ZEND_MUL_LONG_SPEC_TMPVARCV_CONST) \
+ _(3920, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3921, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3923, ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3929, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(3930, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3931, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3933, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3934, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(3935, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3936, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3938, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3944, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(3945, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3946, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3948, ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(3964, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+ _(3965, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(3966, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(3967, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3968, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(3969, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(3970, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3971, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(3972, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(3976, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3977, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(3978, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(3979, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+ _(3980, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(3981, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(3982, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3983, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(3984, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(3985, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3986, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(3987, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(3991, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(3992, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(3993, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4009, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+ _(4010, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4011, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4012, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4013, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4014, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4015, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4016, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4017, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4021, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4022, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4023, ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4039, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(4040, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4041, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4042, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4043, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4044, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4045, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4046, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4047, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4051, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4052, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4053, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4054, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(4055, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4056, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4057, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4058, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4059, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4060, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4061, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4062, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4066, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4067, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4068, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4084, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(4085, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4086, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4087, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4088, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4089, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4090, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4091, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4092, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4096, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4097, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4098, ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4114, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+ _(4115, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4116, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4117, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4118, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4119, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4120, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4121, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4122, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4126, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4127, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4128, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4129, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+ _(4130, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4131, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4132, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4133, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4134, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4135, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4136, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4137, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4141, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4142, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4143, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4159, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+ _(4160, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4161, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4162, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4163, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4164, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4165, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4166, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4167, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4171, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4172, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4173, ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4189, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(4190, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4191, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4192, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4193, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4194, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4195, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4196, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4197, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4201, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4202, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4203, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4204, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(4205, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4206, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4207, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4208, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4209, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4210, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4211, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4212, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4216, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4217, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4218, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4234, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(4235, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4236, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4237, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4238, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4239, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4240, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4241, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4242, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4246, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4247, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4248, ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4252, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
+ _(4253, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
+ _(4254, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
+ _(4255, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
+ _(4256, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
+ _(4257, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
+ _(4261, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV) \
+ _(4262, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
+ _(4263, ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
+ _(4264, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
+ _(4265, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4266, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4267, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4268, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4269, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4270, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4271, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4272, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4276, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4277, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4278, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4279, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
+ _(4280, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4281, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4282, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4283, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4284, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4285, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4286, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4287, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4291, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4292, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4293, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4309, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST) \
+ _(4310, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4311, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4312, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4313, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4314, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4315, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4316, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4317, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4321, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4322, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4323, ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4327, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
+ _(4328, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
+ _(4329, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
+ _(4330, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
+ _(4331, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
+ _(4332, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
+ _(4336, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV) \
+ _(4337, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
+ _(4338, ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
+ _(4339, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(4340, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4341, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4342, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4343, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4344, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4345, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4346, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4347, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4351, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4352, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4353, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4354, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(4355, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4356, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4357, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4358, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4359, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4360, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4361, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4362, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4366, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4367, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4368, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4384, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(4385, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4386, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4387, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4388, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4389, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4390, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4391, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4392, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4396, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4397, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4398, ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4402, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
+ _(4403, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
+ _(4404, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
+ _(4405, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
+ _(4406, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
+ _(4407, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
+ _(4411, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV) \
+ _(4412, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ) \
+ _(4413, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ) \
+ _(4414, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+ _(4415, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4416, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4417, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4418, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4419, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4420, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4421, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4422, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4426, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4427, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4428, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4429, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+ _(4430, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4431, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4432, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4433, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4434, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4435, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4436, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4437, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4441, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4442, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4443, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4459, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST) \
+ _(4460, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4461, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4462, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4463, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4464, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4465, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4466, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4467, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4471, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV) \
+ _(4472, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4473, ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4477, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
+ _(4478, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
+ _(4479, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
+ _(4480, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
+ _(4481, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
+ _(4482, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
+ _(4486, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV) \
+ _(4487, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ) \
+ _(4488, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ) \
+ _(4489, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(4490, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4491, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4492, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4493, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4494, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4495, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4496, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4497, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4501, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4502, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4503, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4504, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(4505, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4506, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4507, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4508, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4509, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4510, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4511, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4512, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4516, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4517, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4518, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4534, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST) \
+ _(4535, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ) \
+ _(4536, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ) \
+ _(4537, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4538, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4539, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4540, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4541, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4542, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4546, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV) \
+ _(4547, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ) \
+ _(4548, ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ) \
+ _(4549, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_TMPVARCV_RETVAL_UNUSED) \
+ _(4550, ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_TMPVARCV_RETVAL_USED) \
+ _(4551, ZEND_PRE_INC_LONG_SPEC_TMPVARCV_RETVAL_UNUSED) \
+ _(4552, ZEND_PRE_INC_LONG_SPEC_TMPVARCV_RETVAL_USED) \
+ _(4553, ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_TMPVARCV_RETVAL_UNUSED) \
+ _(4554, ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_TMPVARCV_RETVAL_USED) \
+ _(4555, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_TMPVARCV_RETVAL_UNUSED) \
+ _(4556, ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_TMPVARCV_RETVAL_USED) \
+ _(4557, ZEND_PRE_DEC_LONG_SPEC_TMPVARCV_RETVAL_UNUSED) \
+ _(4558, ZEND_PRE_DEC_LONG_SPEC_TMPVARCV_RETVAL_USED) \
+ _(4559, ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_TMPVARCV_RETVAL_UNUSED) \
+ _(4560, ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_TMPVARCV_RETVAL_USED) \
+ _(4561, ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_TMPVARCV) \
+ _(4562, ZEND_POST_INC_LONG_SPEC_TMPVARCV) \
+ _(4563, ZEND_POST_INC_LONG_OR_DOUBLE_SPEC_TMPVARCV) \
+ _(4564, ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_TMPVARCV) \
+ _(4565, ZEND_POST_DEC_LONG_SPEC_TMPVARCV) \
+ _(4566, ZEND_POST_DEC_LONG_OR_DOUBLE_SPEC_TMPVARCV) \
+ _(4567, ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST) \
+ _(4568, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
+ _(4569, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
+ _(4571, ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV) \
+ _(4572, ZEND_QM_ASSIGN_NOREF_SPEC_CONST) \
+ _(4573, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
+ _(4574, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
+ _(4576, ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV) \
+ _(4578, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
+ _(4579, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
+ _(4581, ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVARCV) \
+ _(4582, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \
+ _(4583, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
+ _(4584, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
+ _(4586, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
+ _(4587, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST) \
+ _(4588, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
+ _(4589, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
+ _(4591, ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVARCV) \
+ _(4597, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST) \
+ _(4598, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
+ _(4599, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
+ _(4601, ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVARCV) \
+ _(4604, ZEND_SEND_VAR_SIMPLE_SPEC_VAR) \
+ _(4606, ZEND_SEND_VAR_SIMPLE_SPEC_CV) \
+ _(4609, ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR) \
+ _(4611, ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV) \
+ _(4612, ZEND_SEND_VAL_SIMPLE_SPEC_CONST) \
+ _(4613, ZEND_SEND_VAL_EX_SIMPLE_SPEC_CONST) \
+ _(4614, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED) \
+ _(4615, ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED) \
+ _(4615+1, ZEND_NULL)