Last active
August 29, 2015 14:11
-
-
Save dstogov/fba2cc621ef121826efe to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h | |
index 63d6766..49d588f 100644 | |
--- a/Zend/zend_compile.h | |
+++ b/Zend/zend_compile.h | |
@@ -56,13 +56,34 @@ typedef struct _zend_compiler_context { | |
HashTable *labels; | |
} zend_compiler_context; | |
+/* On 64-bi systems less optimal, but more compact VM code leads to better | |
+ * performance. So on 32-bit systems we use absolute addresses for jump | |
+ * targets and constants, but on 64-bit systems realtive 32-bit offsets */ | |
+#if SIZEOF_SIZE_T == 4 | |
+# define ZEND_USE_ABS_JMP_ADDR 1 | |
+# define ZEND_USE_ABS_CONST_ADDR 1 | |
+# define ZEND_EX_USE_LITERALS 0 | |
+# define ZEND_EX_USE_RUN_TIME_CACHE 1 | |
+#else | |
+# define ZEND_USE_ABS_JMP_ADDR 0 | |
+# define ZEND_USE_ABS_CONST_ADDR 0 | |
+# define ZEND_EX_USE_LITERALS 1 | |
+# define ZEND_EX_USE_RUN_TIME_CACHE 1 | |
+#endif | |
+ | |
typedef union _znode_op { | |
uint32_t constant; | |
uint32_t var; | |
uint32_t num; | |
uint32_t opline_num; /* Needs to be signed */ | |
+#if ZEND_USE_ABS_JMP_ADDR | |
zend_op *jmp_addr; | |
+#else | |
+ uint32_t jmp_offset; | |
+#endif | |
+#if ZEND_USE_ABS_CONST_ADDR | |
zval *zv; | |
+#endif | |
} znode_op; | |
typedef struct _znode { /* used only during compilation */ | |
@@ -112,8 +133,8 @@ struct _zend_op { | |
znode_op op1; | |
znode_op op2; | |
znode_op result; | |
- zend_ulong extended_value; | |
- uint lineno; | |
+ uint32_t extended_value; | |
+ uint32_t lineno; | |
zend_uchar opcode; | |
zend_uchar op1_type; | |
zend_uchar op2_type; | |
@@ -374,12 +395,17 @@ typedef enum _zend_call_kind { | |
struct _zend_execute_data { | |
const zend_op *opline; /* executed opline */ | |
zend_execute_data *call; /* current call */ | |
- void **run_time_cache; | |
+ zval *return_value; | |
zend_function *func; /* executed op_array */ | |
zval This; | |
+#if ZEND_EX_USE_RUN_TIME_CACHE | |
+ void **run_time_cache; | |
+#endif | |
+#if ZEND_EX_USE_LITERALS | |
+ zval *literals; | |
+#endif | |
zend_class_entry *called_scope; | |
zend_execute_data *prev_execute_data; | |
- zval *return_value; | |
zend_array *symbol_table; | |
}; | |
@@ -430,6 +456,136 @@ struct _zend_execute_data { | |
#define EX_VAR_TO_NUM(n) (ZEND_CALL_VAR(NULL, n) - ZEND_CALL_VAR_NUM(NULL, 0)) | |
+#define ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, opline_num) \ | |
+ ((char*)&(op_array)->opcodes[opline_num] - (char*)(opline)) | |
+ | |
+#define ZEND_OFFSET_TO_OPLINE(base, offset) \ | |
+ ((zend_op*)(((char*)(base)) + (int)offset)) | |
+ | |
+#define ZEND_OFFSET_TO_OPLINE_NUM(op_array, base, offset) \ | |
+ (ZEND_OFFSET_TO_OPLINE(base, offset) - op_array->opcodes) | |
+ | |
+#if ZEND_USE_ABS_JMP_ADDR | |
+ | |
+/* run-time jump target */ | |
+# define OP_JMP_ADDR(opline, node) \ | |
+ (node).jmp_addr | |
+ | |
+/* convert jump target from compile-time to run-time */ | |
+# define ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, node) do { \ | |
+ (node).jmp_addr = (op_array)->opcodes + (node).opline_num; \ | |
+ } while (0) | |
+ | |
+/* convert jump target back from run-time to compile-time */ | |
+# define ZEND_PASS_TWO_UNDO_JMP_TARGET(op_array, opline, node) do { \ | |
+ (node).opline_num = (node).jmp_addr - (op_array)->opcodes; \ | |
+ } while (0) | |
+ | |
+#else | |
+ | |
+/* run-time jump target */ | |
+# define OP_JMP_ADDR(opline, node) \ | |
+ ZEND_OFFSET_TO_OPLINE(opline, (node).jmp_offset) | |
+ | |
+/* convert jump target from compile-time to run-time */ | |
+# define ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, node) do { \ | |
+ (node).jmp_offset = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, (node).opline_num); \ | |
+ } while (0) | |
+ | |
+/* convert jump target back from run-time to compile-time */ | |
+# define ZEND_PASS_TWO_UNDO_JMP_TARGET(op_array, opline, node) do { \ | |
+ (node).opline_num = ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, (node).jmp_offset); \ | |
+ } while (0) | |
+ | |
+#endif | |
+ | |
+/* constant-time constant */ | |
+# define CT_CONSTANT_EX(op_array, num) \ | |
+ ((op_array)->literals + (num)) | |
+ | |
+# define CT_CONSTANT(node) \ | |
+ CT_CONSTANT_EX(CG(active_op_array), (node).constant) | |
+ | |
+#if ZEND_USE_ABS_CONST_ADDR | |
+ | |
+/* run-time constant */ | |
+# define RT_CONSTANT_EX(base, node) \ | |
+ (node).zv | |
+ | |
+/* convert constant from compile-time to run-time */ | |
+# define ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, node) do { \ | |
+ (node).zv = CT_CONSTANT_EX(op_array, (node).constant); \ | |
+ } while (0) | |
+ | |
+/* convert constant back from run-time to compile-time */ | |
+# define ZEND_PASS_TWO_UNDO_CONSTANT(op_array, node) do { \ | |
+ (node).constant = (node).zv - (op_array)->literals; \ | |
+ } while (0) | |
+ | |
+#else | |
+ | |
+/* run-time constant */ | |
+# define RT_CONSTANT_EX(base, node) \ | |
+ ((zval*)(((char*)(base)) + (node).constant)) | |
+ | |
+/* convert constant from compile-time to run-time */ | |
+# define ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, node) do { \ | |
+ (node).constant *= sizeof(zval); \ | |
+ } while (0) | |
+ | |
+/* convert constant back from run-time to compile-time (do nothing) */ | |
+# define ZEND_PASS_TWO_UNDO_CONSTANT(op_array, node) do { \ | |
+ (node).constant /= sizeof(zval); \ | |
+ } while (0) | |
+ | |
+#endif | |
+ | |
+#if ZEND_EX_USE_LITERALS | |
+ | |
+# define EX_LITERALS() \ | |
+ EX(literals) | |
+ | |
+# define EX_LOAD_LITERALS(op_array) do { \ | |
+ EX(literals) = (op_array)->literals; \ | |
+ } while (0) | |
+ | |
+#else | |
+ | |
+# define EX_LITERALS() \ | |
+ EX(func)->op_array.literals | |
+ | |
+# define EX_LOAD_LITERALS(op_array) do { \ | |
+ } while (0) | |
+ | |
+#endif | |
+ | |
+/* run-time constant */ | |
+#define RT_CONSTANT(op_array, node) \ | |
+ RT_CONSTANT_EX((op_array)->literals, node) | |
+ | |
+/* constant in currently executed function */ | |
+#define EX_CONSTANT(node) \ | |
+ RT_CONSTANT_EX(EX_LITERALS(), node) | |
+ | |
+#if ZEND_EX_USE_RUN_TIME_CACHE | |
+ | |
+# define EX_RUN_TIME_CACHE() \ | |
+ EX(run_time_cache) | |
+ | |
+# define EX_LOAD_RUN_TIME_CACHE(op_array) do { \ | |
+ EX(run_time_cache) = (op_array)->run_time_cache; \ | |
+ } while (0) | |
+ | |
+#else | |
+ | |
+# define EX_RUN_TIME_CACHE() \ | |
+ EX(func)->op_array.run_time_cache | |
+ | |
+# define EX_LOAD_RUN_TIME_CACHE(op_array) do { \ | |
+ } while (0) | |
+ | |
+#endif | |
+ | |
#define IS_CONST (1<<0) | |
#define IS_TMP_VAR (1<<1) | |
#define IS_VAR (1<<2) | |
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c | |
index 086c7d0..04e4329 100644 | |
--- a/Zend/zend_compile.c | |
+++ b/Zend/zend_compile.c | |
@@ -32,12 +32,6 @@ | |
#include "zend_language_scanner.h" | |
#include "zend_inheritance.h" | |
-#define CONSTANT_EX(op_array, op) \ | |
- (op_array)->literals[op] | |
- | |
-#define CONSTANT(op) \ | |
- CONSTANT_EX(CG(active_op_array), op) | |
- | |
#define SET_NODE(target, src) do { \ | |
target ## _type = (src)->op_type; \ | |
if ((src)->op_type == IS_CONST) { \ | |
@@ -50,7 +44,7 @@ | |
#define GET_NODE(target, src) do { \ | |
(target)->op_type = src ## _type; \ | |
if ((target)->op_type == IS_CONST) { \ | |
- (target)->u.constant = CONSTANT(src.constant); \ | |
+ ZVAL_COPY_VALUE(&(target)->u.constant, CT_CONSTANT(src)); \ | |
} else { \ | |
(target)->u.op = src; \ | |
} \ | |
@@ -291,11 +285,11 @@ static int lookup_cv(zend_op_array *op_array, zend_string* name TSRMLS_DC) /* {{ | |
void zend_del_literal(zend_op_array *op_array, int n) /* {{{ */ | |
{ | |
- zval_dtor(&CONSTANT_EX(op_array, n)); | |
+ zval_dtor(CT_CONSTANT_EX(op_array, n)); | |
if (n + 1 == op_array->last_literal) { | |
op_array->last_literal--; | |
} else { | |
- ZVAL_UNDEF(&CONSTANT_EX(op_array, n)); | |
+ ZVAL_UNDEF(CT_CONSTANT_EX(op_array, n)); | |
} | |
} | |
/* }}} */ | |
@@ -310,7 +304,7 @@ static inline void zend_insert_literal(zend_op_array *op_array, zval *zv, int li | |
Z_TYPE_FLAGS_P(zv) &= ~ (IS_TYPE_REFCOUNTED | IS_TYPE_COPYABLE); | |
} | |
} | |
- ZVAL_COPY_VALUE(&CONSTANT_EX(op_array, literal_position), zv); | |
+ ZVAL_COPY_VALUE(CT_CONSTANT_EX(op_array, literal_position), zv); | |
Z_CACHE_SLOT(op_array->literals[literal_position]) = -1; | |
} | |
/* }}} */ | |
@@ -752,13 +746,13 @@ static void str_dtor(zval *zv) /* {{{ */ { | |
void zend_resolve_goto_label(zend_op_array *op_array, zend_op *opline, int pass2 TSRMLS_DC) /* {{{ */ | |
{ | |
zend_label *dest; | |
- zend_long current, distance; | |
+ int current, distance; | |
zval *label; | |
if (pass2) { | |
- label = opline->op2.zv; | |
+ label = RT_CONSTANT(op_array, opline->op2); | |
} else { | |
- label = &CONSTANT_EX(op_array, opline->op2.constant); | |
+ label = CT_CONSTANT_EX(op_array, opline->op2.constant); | |
} | |
if (CG(context).labels == NULL || | |
(dest = zend_hash_find_ptr(CG(context).labels, Z_STR_P(label))) == NULL) { | |
@@ -888,11 +882,11 @@ ZEND_API int do_bind_function(const zend_op_array *op_array, const zend_op *opli | |
zval *op1, *op2; | |
if (compile_time) { | |
- op1 = &CONSTANT_EX(op_array, opline->op1.constant); | |
- op2 = &CONSTANT_EX(op_array, opline->op2.constant); | |
+ op1 = CT_CONSTANT_EX(op_array, opline->op1.constant); | |
+ op2 = CT_CONSTANT_EX(op_array, opline->op2.constant); | |
} else { | |
- op1 = opline->op1.zv; | |
- op2 = opline->op2.zv; | |
+ op1 = RT_CONSTANT(op_array, opline->op1); | |
+ op2 = RT_CONSTANT(op_array, opline->op2); | |
} | |
function = zend_hash_find_ptr(function_table, Z_STR_P(op1)); | |
@@ -928,11 +922,11 @@ ZEND_API zend_class_entry *do_bind_class(const zend_op_array* op_array, const ze | |
zval *op1, *op2; | |
if (compile_time) { | |
- op1 = &CONSTANT_EX(op_array, opline->op1.constant); | |
- op2 = &CONSTANT_EX(op_array, opline->op2.constant); | |
+ op1 = CT_CONSTANT_EX(op_array, opline->op1.constant); | |
+ op2 = CT_CONSTANT_EX(op_array, opline->op2.constant); | |
} else { | |
- op1 = opline->op1.zv; | |
- op2 = opline->op2.zv; | |
+ op1 = RT_CONSTANT(op_array, opline->op1); | |
+ op2 = RT_CONSTANT(op_array, opline->op2); | |
} | |
if ((ce = zend_hash_find_ptr(class_table, Z_STR_P(op1))) == NULL) { | |
zend_error_noreturn(E_COMPILE_ERROR, "Internal Zend error - Missing class information for %s", Z_STRVAL_P(op1)); | |
@@ -965,11 +959,11 @@ ZEND_API zend_class_entry *do_bind_inherited_class(const zend_op_array *op_array | |
zval *op1, *op2; | |
if (compile_time) { | |
- op1 = &CONSTANT_EX(op_array, opline->op1.constant); | |
- op2 = &CONSTANT_EX(op_array, opline->op2.constant); | |
+ op1 = CT_CONSTANT_EX(op_array, opline->op1.constant); | |
+ op2 = CT_CONSTANT_EX(op_array, opline->op2.constant); | |
} else { | |
- op1 = opline->op1.zv; | |
- op2 = opline->op2.zv; | |
+ op1 = RT_CONSTANT(op_array, opline->op1); | |
+ op2 = RT_CONSTANT(op_array, opline->op2); | |
} | |
ce = zend_hash_find_ptr(class_table, Z_STR_P(op1)); | |
@@ -1032,7 +1026,7 @@ void zend_do_early_binding(TSRMLS_D) /* {{{ */ | |
zval *parent_name; | |
zend_class_entry *ce; | |
- parent_name = &CONSTANT(fetch_class_opline->op2.constant); | |
+ parent_name = CT_CONSTANT(fetch_class_opline->op2); | |
if (((ce = zend_lookup_class(Z_STR_P(parent_name) TSRMLS_CC)) == NULL) || | |
((CG(compiler_options) & ZEND_COMPILE_IGNORE_INTERNAL_CLASSES) && | |
(ce->type == ZEND_INTERNAL_CLASS))) { | |
@@ -1071,7 +1065,7 @@ void zend_do_early_binding(TSRMLS_D) /* {{{ */ | |
return; | |
} | |
- zend_hash_del(table, Z_STR(CONSTANT(opline->op1.constant))); | |
+ zend_hash_del(table, Z_STR_P(CT_CONSTANT(opline->op1))); | |
zend_del_literal(CG(active_op_array), opline->op1.constant); | |
zend_del_literal(CG(active_op_array), opline->op2.constant); | |
MAKE_NOP(opline); | |
@@ -1087,7 +1081,7 @@ ZEND_API void zend_do_delayed_early_binding(const zend_op_array *op_array TSRMLS | |
CG(in_compilation) = 1; | |
while (opline_num != -1) { | |
- if ((ce = zend_lookup_class(Z_STR_P(op_array->opcodes[opline_num-1].op2.zv) TSRMLS_CC)) != NULL) { | |
+ if ((ce = zend_lookup_class(Z_STR_P(RT_CONSTANT(op_array, op_array->opcodes[opline_num-1].op2)) TSRMLS_CC)) != NULL) { | |
do_bind_inherited_class(op_array, &op_array->opcodes[opline_num], EG(class_table), ce, 0 TSRMLS_CC); | |
} | |
opline_num = op_array->opcodes[opline_num].result.opline_num; | |
@@ -2112,7 +2106,7 @@ static zend_op *zend_delayed_compile_prop(znode *result, zend_ast *ast, uint32_t | |
opline = zend_delayed_emit_op(result, ZEND_FETCH_OBJ_R, &obj_node, &prop_node TSRMLS_CC); | |
if (opline->op2_type == IS_CONST) { | |
- convert_to_string(&CONSTANT(opline->op2.constant)); | |
+ convert_to_string(CT_CONSTANT(opline->op2)); | |
zend_alloc_polymorphic_cache_slot(opline->op2.constant TSRMLS_CC); | |
} | |
@@ -3515,7 +3509,7 @@ void zend_compile_switch(zend_ast *ast TSRMLS_DC) /* {{{ */ | |
opline = zend_emit_op(NULL, ZEND_CASE, &expr_node, &cond_node TSRMLS_CC); | |
SET_NODE(opline->result, &case_node); | |
if (opline->op1_type == IS_CONST) { | |
- zval_copy_ctor(&CONSTANT(opline->op1.constant)); | |
+ zval_copy_ctor(CT_CONSTANT(opline->op1)); | |
} | |
jmpnz_opnums[i] = zend_emit_cond_jump(ZEND_JMPNZ, &case_node, 0 TSRMLS_CC); | |
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c | |
index 283de41..872f909 100644 | |
--- a/Zend/zend_execute.c | |
+++ b/Zend/zend_execute.c | |
@@ -402,7 +402,7 @@ static zend_always_inline zval *_get_zval_ptr(int op_type, znode_op node, const | |
} else { | |
*should_free = NULL; | |
if (op_type == IS_CONST) { | |
- return node.zv; | |
+ return EX_CONSTANT(node); | |
} else { | |
ZEND_ASSERT(op_type == IS_CV); | |
return _get_zval_ptr_cv(execute_data, node.var, type TSRMLS_CC); | |
@@ -422,7 +422,7 @@ static zend_always_inline zval *_get_zval_ptr_deref(int op_type, znode_op node, | |
} else { | |
*should_free = NULL; | |
if (op_type == IS_CONST) { | |
- return node.zv; | |
+ return EX_CONSTANT(node); | |
} else { | |
ZEND_ASSERT(op_type == IS_CV); | |
return _get_zval_ptr_cv_deref(execute_data, node.var, type TSRMLS_CC); | |
@@ -1674,7 +1674,8 @@ static zend_always_inline void i_init_func_execute_data(zend_execute_data *execu | |
if (!op_array->run_time_cache && op_array->last_cache_slot) { | |
op_array->run_time_cache = zend_arena_calloc(&CG(arena), op_array->last_cache_slot, sizeof(void*)); | |
} | |
- EX(run_time_cache) = op_array->run_time_cache; | |
+ EX_LOAD_RUN_TIME_CACHE(op_array); | |
+ EX_LOAD_LITERALS(op_array); | |
EG(current_execute_data) = execute_data; | |
} | |
@@ -1698,7 +1699,8 @@ static zend_always_inline void i_init_code_execute_data(zend_execute_data *execu | |
if (!op_array->run_time_cache && op_array->last_cache_slot) { | |
op_array->run_time_cache = ecalloc(op_array->last_cache_slot, sizeof(void*)); | |
} | |
- EX(run_time_cache) = op_array->run_time_cache; | |
+ EX_LOAD_RUN_TIME_CACHE(op_array); | |
+ EX_LOAD_LITERALS(op_array); | |
EG(current_execute_data) = execute_data; | |
} | |
@@ -1772,7 +1774,8 @@ static zend_always_inline void i_init_execute_data(zend_execute_data *execute_da | |
op_array->run_time_cache = ecalloc(op_array->last_cache_slot, sizeof(void*)); | |
} | |
} | |
- EX(run_time_cache) = op_array->run_time_cache; | |
+ EX_LOAD_RUN_TIME_CACHE(op_array); | |
+ EX_LOAD_LITERALS(op_array); | |
EG(current_execute_data) = execute_data; | |
} | |
@@ -1897,8 +1900,7 @@ static zend_always_inline void zend_vm_stack_extend_call_frame(zend_execute_data | |
OPLINE = new_op | |
#define ZEND_VM_SET_RELATIVE_OPCODE(opline, offset) \ | |
- CHECK_SYMBOL_TABLES() \ | |
- OPLINE = ((zend_op*)(((char*)opline)+(offset))) | |
+ ZEND_VM_SET_OPCODE(ZEND_OFFSET_TO_OPLINE(opline, offset)) | |
#define ZEND_VM_JMP(new_op) \ | |
if (EXPECTED(!EG(exception))) { \ | |
diff --git a/Zend/zend_execute.h b/Zend/zend_execute.h | |
index d4a46db..423b825 100644 | |
--- a/Zend/zend_execute.h | |
+++ b/Zend/zend_execute.h | |
@@ -319,20 +319,20 @@ ZEND_API void zend_clean_and_cache_symbol_table(zend_array *symbol_table TSRMLS_ | |
void zend_free_compiled_variables(zend_execute_data *execute_data TSRMLS_DC); | |
#define CACHED_PTR(num) \ | |
- EX(run_time_cache)[(num)] | |
+ EX_RUN_TIME_CACHE()[(num)] | |
#define CACHE_PTR(num, ptr) do { \ | |
- EX(run_time_cache)[(num)] = (ptr); \ | |
+ EX_RUN_TIME_CACHE()[(num)] = (ptr); \ | |
} while (0) | |
#define CACHED_POLYMORPHIC_PTR(num, ce) \ | |
- ((EX(run_time_cache)[(num)] == (ce)) ? \ | |
- EX(run_time_cache)[(num) + 1] : \ | |
+ ((EX_RUN_TIME_CACHE()[(num)] == (ce)) ? \ | |
+ EX_RUN_TIME_CACHE()[(num) + 1] : \ | |
NULL) | |
#define CACHE_POLYMORPHIC_PTR(num, ce, ptr) do { \ | |
- EX(run_time_cache)[(num)] = (ce); \ | |
- EX(run_time_cache)[(num) + 1] = (ptr); \ | |
+ EX_RUN_TIME_CACHE()[(num)] = (ce); \ | |
+ EX_RUN_TIME_CACHE()[(num) + 1] = (ptr); \ | |
} while (0) | |
#define CACHED_PTR_EX(slot) \ | |
diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c | |
index 407acad..8f0d9fe 100644 | |
--- a/Zend/zend_inheritance.c | |
+++ b/Zend/zend_inheritance.c | |
@@ -454,7 +454,7 @@ static zend_string *zend_get_function_declaration(zend_function *fptr TSRMLS_DC) | |
} | |
} | |
if (precv && precv->opcode == ZEND_RECV_INIT && precv->op2_type != IS_UNUSED) { | |
- zval *zv = precv->op2.zv; | |
+ zval *zv = RT_CONSTANT(&fptr->op_array, precv->op2); | |
if (Z_TYPE_P(zv) == IS_CONSTANT) { | |
smart_str_append(&str, Z_STR_P(zv)); | |
diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c | |
index 0ab110b..1bc788a 100644 | |
--- a/Zend/zend_opcode.c | |
+++ b/Zend/zend_opcode.c | |
@@ -662,9 +662,10 @@ static void zend_resolve_finally_calls(zend_op_array *op_array TSRMLS_DC) | |
} | |
} | |
case ZEND_GOTO: | |
- if (Z_TYPE(op_array->literals[opline->op2.constant]) != IS_LONG) { | |
+ if (Z_TYPE_P(CT_CONSTANT_EX(op_array, opline->op2.constant)) != IS_LONG) { | |
uint32_t num = opline->op2.constant; | |
- opline->op2.zv = &op_array->literals[opline->op2.constant]; | |
+ | |
+ ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline->op2); | |
zend_resolve_goto_label(op_array, opline, 1 TSRMLS_CC); | |
opline->op2.constant = num; | |
} | |
@@ -717,12 +718,12 @@ ZEND_API int pass_two(zend_op_array *op_array TSRMLS_DC) | |
end = opline + op_array->last; | |
while (opline < end) { | |
if (opline->op1_type == IS_CONST) { | |
- opline->op1.zv = &op_array->literals[opline->op1.constant]; | |
+ ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline->op1); | |
} else if (opline->op1_type & (IS_VAR|IS_TMP_VAR)) { | |
opline->op1.var = (uint32_t)(zend_intptr_t)ZEND_CALL_VAR_NUM(NULL, op_array->last_var + opline->op1.var); | |
} | |
if (opline->op2_type == IS_CONST) { | |
- opline->op2.zv = &op_array->literals[opline->op2.constant]; | |
+ ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline->op2); | |
} else if (opline->op2_type & (IS_VAR|IS_TMP_VAR)) { | |
opline->op2.var = (uint32_t)(zend_intptr_t)ZEND_CALL_VAR_NUM(NULL, op_array->last_var + opline->op2.var); | |
} | |
@@ -735,17 +736,17 @@ ZEND_API int pass_two(zend_op_array *op_array TSRMLS_DC) | |
opline->extended_value = (uint32_t)(zend_intptr_t)ZEND_CALL_VAR_NUM(NULL, op_array->last_var + opline->extended_value); | |
break; | |
case ZEND_GOTO: | |
- if (Z_TYPE_P(opline->op2.zv) != IS_LONG) { | |
+ if (Z_TYPE_P(RT_CONSTANT(op_array, opline->op2)) != IS_LONG) { | |
zend_resolve_goto_label(op_array, opline, 1 TSRMLS_CC); | |
} | |
/* break omitted intentionally */ | |
case ZEND_JMP: | |
case ZEND_FAST_CALL: | |
- opline->op1.jmp_addr = &op_array->opcodes[opline->op1.opline_num]; | |
+ ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, opline->op1); | |
break; | |
case ZEND_JMPZNZ: | |
/* absolute index to relative offset */ | |
- opline->extended_value = (char*)(op_array->opcodes + opline->extended_value) - (char*)opline; | |
+ opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, opline->extended_value); | |
/* break omitted intentionally */ | |
case ZEND_JMPZ: | |
case ZEND_JMPNZ: | |
@@ -756,12 +757,12 @@ ZEND_API int pass_two(zend_op_array *op_array TSRMLS_DC) | |
case ZEND_NEW: | |
case ZEND_FE_RESET: | |
case ZEND_FE_FETCH: | |
- opline->op2.jmp_addr = &op_array->opcodes[opline->op2.opline_num]; | |
+ ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, opline->op2); | |
break; | |
case ZEND_RETURN: | |
case ZEND_RETURN_BY_REF: | |
if (op_array->fn_flags & ZEND_ACC_GENERATOR) { | |
- if (opline->op1_type != IS_CONST || Z_TYPE_P(opline->op1.zv) != IS_NULL) { | |
+ if (opline->op1_type != IS_CONST || Z_TYPE_P(RT_CONSTANT(op_array, opline->op1)) != IS_NULL) { | |
CG(zend_lineno) = opline->lineno; | |
zend_error_noreturn(E_COMPILE_ERROR, "Generators cannot return values using \"return\""); | |
} | |
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h | |
index 792beae..3d49b53 100644 | |
--- a/Zend/zend_vm_def.h | |
+++ b/Zend/zend_vm_def.h | |
@@ -361,7 +361,7 @@ ZEND_VM_HELPER_EX(zend_binary_assign_op_obj_helper, VAR|UNUSED|CV, CONST|TMPVAR| | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -375,7 +375,7 @@ ZEND_VM_HELPER_EX(zend_binary_assign_op_obj_helper, VAR|UNUSED|CV, CONST|TMPVAR| | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && | |
- (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
+ (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC); | |
@@ -388,7 +388,7 @@ ZEND_VM_HELPER_EX(zend_binary_assign_op_obj_helper, VAR|UNUSED|CV, CONST|TMPVAR| | |
ZVAL_DEREF(z); | |
SEPARATE_ZVAL_NOREF(z); | |
binary_op(z, z, value TSRMLS_CC); | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(EX_VAR(opline->result.var), z); | |
} | |
@@ -759,7 +759,7 @@ ZEND_VM_HELPER_EX(zend_pre_incdec_property_helper, VAR|UNUSED|CV, CONST|TMPVAR|C | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -772,7 +772,7 @@ ZEND_VM_HELPER_EX(zend_pre_incdec_property_helper, VAR|UNUSED|CV, CONST|TMPVAR|C | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
@@ -789,7 +789,7 @@ ZEND_VM_HELPER_EX(zend_pre_incdec_property_helper, VAR|UNUSED|CV, CONST|TMPVAR|C | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(retval, z); | |
} | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(z); | |
} else { | |
zend_error(E_WARNING, "Attempt to increment/decrement property of non-object"); | |
@@ -846,7 +846,7 @@ ZEND_VM_HELPER_EX(zend_post_incdec_property_helper, VAR|UNUSED|CV, CONST|TMPVAR| | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
ZVAL_COPY_VALUE(retval, zptr); | |
@@ -856,7 +856,7 @@ ZEND_VM_HELPER_EX(zend_post_incdec_property_helper, VAR|UNUSED|CV, CONST|TMPVAR| | |
} else { | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
zval rv; | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
zval z_copy; | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
@@ -872,7 +872,7 @@ ZEND_VM_HELPER_EX(zend_post_incdec_property_helper, VAR|UNUSED|CV, CONST|TMPVAR| | |
ZVAL_DUP(&z_copy, z); | |
incdec_op(&z_copy); | |
if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z); | |
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(&z_copy); | |
zval_ptr_dtor(z); | |
} else { | |
@@ -1118,10 +1118,10 @@ ZEND_VM_HELPER_EX(zend_fetch_var_address_helper, CONST|TMPVAR|CV, UNUSED|CONST|V | |
zend_class_entry *ce; | |
if (OP2_TYPE == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
if (OP1_TYPE != IS_CONST) { | |
zend_string_release(name); | |
@@ -1130,12 +1130,12 @@ ZEND_VM_HELPER_EX(zend_fetch_var_address_helper, CONST|TMPVAR|CV, UNUSED|CONST|V | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- retval = zend_std_get_static_property(ce, name, 0, ((OP1_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ retval = zend_std_get_static_property(ce, name, 0, ((OP1_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
FREE_OP1(); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
@@ -1423,7 +1423,7 @@ ZEND_VM_C_LABEL(fetch_obj_r_no_object): | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -1452,7 +1452,7 @@ ZEND_VM_HANDLER(85, ZEND_FETCH_OBJ_W, VAR|UNUSED|CV, CONST|TMPVAR|CV) | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, OP1_TYPE, property, OP2_TYPE, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, OP1_TYPE, property, OP2_TYPE, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
FREE_OP2(); | |
if (OP1_TYPE == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -1476,7 +1476,7 @@ ZEND_VM_HANDLER(88, ZEND_FETCH_OBJ_RW, VAR|UNUSED|CV, CONST|TMPVAR|CV) | |
if (OP1_TYPE == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, OP1_TYPE, property, OP2_TYPE, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, OP1_TYPE, property, OP2_TYPE, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
FREE_OP2(); | |
if (OP1_TYPE == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -1536,7 +1536,7 @@ ZEND_VM_C_LABEL(fetch_obj_is_no_object): | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -1570,7 +1570,7 @@ ZEND_VM_HANDLER(94, ZEND_FETCH_OBJ_FUNC_ARG, CONST|TMP|VAR|UNUSED|CV, CONST|TMPV | |
if (OP1_TYPE == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, OP1_TYPE, property, OP2_TYPE, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, OP1_TYPE, property, OP2_TYPE, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
FREE_OP2(); | |
if (OP1_TYPE == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -1596,7 +1596,7 @@ ZEND_VM_HANDLER(97, ZEND_FETCH_OBJ_UNSET, VAR|UNUSED|CV, CONST|TMPVAR|CV) | |
if (OP1_TYPE == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, OP1_TYPE, property, OP2_TYPE, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, OP1_TYPE, property, OP2_TYPE, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
FREE_OP2(); | |
if (OP1_TYPE == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -1657,7 +1657,7 @@ ZEND_VM_HANDLER(136, ZEND_ASSIGN_OBJ, VAR|UNUSED|CV, CONST|TMPVAR|CV) | |
if (OP1_TYPE == IS_VAR && UNEXPECTED(object == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, OP1_TYPE, property_name, OP2_TYPE, (opline+1)->op1_type, (opline+1)->op1, execute_data, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
+ zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, OP1_TYPE, property_name, OP2_TYPE, (opline+1)->op1_type, (opline+1)->op1, execute_data, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
FREE_OP2(); | |
FREE_OP1_VAR_PTR(); | |
/* assign_obj has two opcodes! */ | |
@@ -1934,7 +1934,7 @@ ZEND_VM_HANDLER(42, ZEND_JMP, ANY, ANY) | |
{ | |
USE_OPLINE | |
- ZEND_VM_SET_OPCODE(opline->op1.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op1)); | |
ZEND_VM_CONTINUE(); | |
} | |
@@ -1952,9 +1952,9 @@ ZEND_VM_HANDLER(43, ZEND_JMPZ, CONST|TMPVAR|CV, ANY) | |
ZEND_VM_CONTINUE(); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
if (OP1_TYPE == IS_CV) { | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} | |
} | |
@@ -1962,7 +1962,7 @@ ZEND_VM_HANDLER(43, ZEND_JMPZ, CONST|TMPVAR|CV, ANY) | |
if (i_zend_is_true(val TSRMLS_CC)) { | |
opline++; | |
} else { | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} | |
FREE_OP1(); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
@@ -1981,7 +1981,7 @@ ZEND_VM_HANDLER(44, ZEND_JMPNZ, CONST|TMPVAR|CV, ANY) | |
val = GET_OP1_ZVAL_PTR(BP_VAR_R); | |
if (Z_TYPE_P(val) == IS_TRUE) { | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
if (OP1_TYPE == IS_CV) { | |
@@ -1993,7 +1993,7 @@ ZEND_VM_HANDLER(44, ZEND_JMPNZ, CONST|TMPVAR|CV, ANY) | |
} | |
if (i_zend_is_true(val TSRMLS_CC)) { | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} else { | |
opline++; | |
} | |
@@ -2018,17 +2018,17 @@ ZEND_VM_HANDLER(45, ZEND_JMPZNZ, CONST|TMPVAR|CV, ANY) | |
ZEND_VM_CONTINUE(); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
if (OP1_TYPE == IS_CV) { | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} | |
} | |
if (i_zend_is_true(val TSRMLS_CC)) { | |
- opline = (zend_op*)(((char*)opline) + opline->extended_value); | |
+ opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value); | |
} else { | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} | |
FREE_OP1(); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
@@ -2053,9 +2053,9 @@ ZEND_VM_HANDLER(46, ZEND_JMPZ_EX, CONST|TMPVAR|CV, ANY) | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
if (OP1_TYPE == IS_CV) { | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} | |
} | |
@@ -2067,7 +2067,7 @@ ZEND_VM_HANDLER(46, ZEND_JMPZ_EX, CONST|TMPVAR|CV, ANY) | |
} else { | |
FREE_OP1(); | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
HANDLE_EXCEPTION(); | |
@@ -2086,7 +2086,7 @@ ZEND_VM_HANDLER(47, ZEND_JMPNZ_EX, CONST|TMPVAR|CV, ANY) | |
if (Z_TYPE_P(val) == IS_TRUE) { | |
ZVAL_TRUE(EX_VAR(opline->result.var)); | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
@@ -2099,7 +2099,7 @@ ZEND_VM_HANDLER(47, ZEND_JMPNZ_EX, CONST|TMPVAR|CV, ANY) | |
} | |
if (i_zend_is_true(val TSRMLS_CC)) { | |
ZVAL_TRUE(EX_VAR(opline->result.var)); | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} else { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
opline++; | |
@@ -2133,7 +2133,7 @@ ZEND_VM_HANDLER(54, ZEND_ADD_CHAR, TMP|UNUSED, CONST) | |
ZVAL_EMPTY_STRING(str); | |
} | |
- add_char_to_string(str, str, opline->op2.zv); | |
+ add_char_to_string(str, str, EX_CONSTANT(opline->op2)); | |
/* FREE_OP is missing intentionally here - we're always working on the same temporary variable */ | |
/*CHECK_EXCEPTION();*/ | |
@@ -2152,7 +2152,7 @@ ZEND_VM_HANDLER(55, ZEND_ADD_STRING, TMP|UNUSED, CONST) | |
ZVAL_EMPTY_STRING(str); | |
} | |
- add_string_to_string(str, str, opline->op2.zv); | |
+ add_string_to_string(str, str, EX_CONSTANT(opline->op2)); | |
/* FREE_OP is missing intentionally here - we're always working on the same temporary variable */ | |
/*CHECK_EXCEPTION();*/ | |
@@ -2221,7 +2221,7 @@ ZEND_VM_C_LABEL(try_class_name): | |
if (CACHED_PTR(Z_CACHE_SLOT_P(class_name))) { | |
Z_CE_P(EX_VAR(opline->result.var)) = CACHED_PTR(Z_CACHE_SLOT_P(class_name)); | |
} else { | |
- Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class_by_name(Z_STR_P(class_name), opline->op2.zv + 1, opline->extended_value TSRMLS_CC); | |
+ Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class_by_name(Z_STR_P(class_name), EX_CONSTANT(opline->op2) + 1, opline->extended_value TSRMLS_CC); | |
CACHE_PTR(Z_CACHE_SLOT_P(class_name), Z_CE_P(EX_VAR(opline->result.var))); | |
} | |
} else if (Z_TYPE_P(class_name) == IS_OBJECT) { | |
@@ -2334,7 +2334,7 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, TMPVAR|UNUSED|CV, CONST|TMPVAR|CV) | |
} | |
/* First, locate the function. */ | |
- fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((OP2_TYPE == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((OP2_TYPE == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", obj->ce->name->val, Z_STRVAL_P(function_name)); | |
} | |
@@ -2374,17 +2374,17 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, CONST|VAR, CONST|TMPVAR|UNUSE | |
if (OP1_TYPE == IS_CONST) { | |
/* no function found. try a static method in class */ | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op1))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op1.var)); | |
@@ -2392,11 +2392,11 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, CONST|VAR, CONST|TMPVAR|UNUSE | |
if (OP1_TYPE == IS_CONST && | |
OP2_TYPE == IS_CONST && | |
- CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- fbc = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else if (OP1_TYPE != IS_CONST && | |
OP2_TYPE == IS_CONST && | |
- (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce))) { | |
+ (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { | |
/* do nothing */ | |
} else if (OP2_TYPE != IS_UNUSED) { | |
zend_free_op free_op2; | |
@@ -2414,7 +2414,7 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, CONST|VAR, CONST|TMPVAR|UNUSE | |
if (ce->get_static_method) { | |
fbc = ce->get_static_method(ce, Z_STR_P(function_name) TSRMLS_CC); | |
} else { | |
- fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((OP2_TYPE == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((OP2_TYPE == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
} | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name->val, Z_STRVAL_P(function_name)); | |
@@ -2492,16 +2492,16 @@ ZEND_VM_HANDLER(59, ZEND_INIT_FCALL_BY_NAME, ANY, CONST|TMPVAR|CV) | |
zend_function *fbc; | |
zval *function_name, *func; | |
- if (OP2_TYPE == IS_CONST && Z_TYPE_P(opline->op2.zv) == IS_STRING) { | |
- function_name = (zval*)(opline->op2.zv+1); | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- fbc = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (OP2_TYPE == IS_CONST && Z_TYPE_P(EX_CONSTANT(opline->op2)) == IS_STRING) { | |
+ function_name = (zval*)(EX_CONSTANT(opline->op2)+1); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else if (UNEXPECTED((func = zend_hash_find(EG(function_table), Z_STR_P(function_name))) == NULL)) { | |
SAVE_OPLINE(); | |
- zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} else { | |
fbc = Z_FUNC_P(func); | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), fbc); | |
} | |
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION, | |
@@ -2672,7 +2672,7 @@ ZEND_VM_HANDLER(118, ZEND_INIT_USER_CALL, CONST, CONST|TMPVAR|CV) | |
} | |
} | |
} else { | |
- zend_error(E_WARNING, "%s() expects parameter 1 to be a valid callback, %s", Z_STRVAL_P(opline->op1.zv), error); | |
+ zend_error(E_WARNING, "%s() expects parameter 1 to be a valid callback, %s", Z_STRVAL_P(EX_CONSTANT(opline->op1)), error); | |
efree(error); | |
func = (zend_function*)&zend_pass_function; | |
called_scope = NULL; | |
@@ -2694,21 +2694,21 @@ ZEND_VM_HANDLER(69, ZEND_INIT_NS_FCALL_BY_NAME, ANY, CONST) | |
zval *func; | |
zend_function *fbc; | |
- func_name = opline->op2.zv + 1; | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- fbc = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ func_name = EX_CONSTANT(opline->op2) + 1; | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else if ((func = zend_hash_find(EG(function_table), Z_STR_P(func_name))) == NULL) { | |
func_name++; | |
if (UNEXPECTED((func = zend_hash_find(EG(function_table), Z_STR_P(func_name))) == NULL)) { | |
SAVE_OPLINE(); | |
- zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} else { | |
fbc = Z_FUNC_P(func); | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), fbc); | |
} | |
} else { | |
fbc = Z_FUNC_P(func); | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), fbc); | |
} | |
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION, | |
@@ -3079,12 +3079,12 @@ ZEND_VM_HANDLER(107, ZEND_CATCH, CONST, CV) | |
ZEND_VM_SET_OPCODE(&EX(func)->op_array.opcodes[opline->extended_value]); | |
ZEND_VM_CONTINUE(); /* CHECK_ME */ | |
} | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- catch_ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ catch_ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- catch_ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC); | |
+ catch_ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC); | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), catch_ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), catch_ce); | |
} | |
ce = EG(exception)->ce; | |
@@ -3676,7 +3676,7 @@ ZEND_VM_HANDLER(64, ZEND_RECV_INIT, ANY, CONST) | |
SAVE_OPLINE(); | |
param = _get_zval_ptr_cv_undef_BP_VAR_W(execute_data, opline->result.var TSRMLS_CC); | |
if (arg_num > EX_NUM_ARGS()) { | |
- ZVAL_COPY_VALUE(param, opline->op2.zv); | |
+ ZVAL_COPY_VALUE(param, EX_CONSTANT(opline->op2)); | |
if (Z_OPT_CONSTANT_P(param)) { | |
zval_update_constant(param, 0 TSRMLS_CC); | |
} else { | |
@@ -3688,7 +3688,7 @@ ZEND_VM_HANDLER(64, ZEND_RECV_INIT, ANY, CONST) | |
} | |
if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) { | |
- zend_verify_arg_type(EX(func), arg_num, param, opline->op2.zv TSRMLS_CC); | |
+ zend_verify_arg_type(EX(func), arg_num, param, EX_CONSTANT(opline->op2) TSRMLS_CC); | |
} | |
CHECK_EXCEPTION(); | |
@@ -3759,7 +3759,7 @@ ZEND_VM_HANDLER(50, ZEND_BRK, ANY, CONST) | |
zend_brk_cont_element *el; | |
SAVE_OPLINE(); | |
- el = zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.opline_num, | |
+ el = zend_brk_cont(Z_LVAL_P(EX_CONSTANT(opline->op2)), opline->op1.opline_num, | |
&EX(func)->op_array, execute_data TSRMLS_CC); | |
ZEND_VM_JMP(EX(func)->op_array.opcodes + el->brk); | |
} | |
@@ -3770,7 +3770,7 @@ ZEND_VM_HANDLER(51, ZEND_CONT, ANY, CONST) | |
zend_brk_cont_element *el; | |
SAVE_OPLINE(); | |
- el = zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.opline_num, | |
+ el = zend_brk_cont(Z_LVAL_P(EX_CONSTANT(opline->op2)), opline->op1.opline_num, | |
&EX(func)->op_array, execute_data TSRMLS_CC); | |
ZEND_VM_JMP(EX(func)->op_array.opcodes + el->cont); | |
} | |
@@ -3782,7 +3782,7 @@ ZEND_VM_HANDLER(100, ZEND_GOTO, ANY, CONST) | |
zend_brk_cont_element *el; | |
SAVE_OPLINE(); | |
- el = zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->extended_value, | |
+ el = zend_brk_cont(Z_LVAL_P(EX_CONSTANT(opline->op2)), opline->extended_value, | |
&EX(func)->op_array, execute_data TSRMLS_CC); | |
brk_opline = EX(func)->op_array.opcodes + el->brk; | |
@@ -3792,7 +3792,7 @@ ZEND_VM_HANDLER(100, ZEND_GOTO, ANY, CONST) | |
zval_ptr_dtor_nogc(EX_VAR(brk_opline->op1.var)); | |
} | |
} | |
- ZEND_VM_JMP(opline->op1.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op1)); | |
} | |
ZEND_VM_HANDLER(48, ZEND_CASE, CONST|TMPVAR|CV, CONST|TMPVAR|CV) | |
@@ -3820,15 +3820,15 @@ ZEND_VM_HANDLER(68, ZEND_NEW, CONST|VAR, ANY) | |
SAVE_OPLINE(); | |
if (OP1_TYPE == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op1.var)); | |
@@ -3851,7 +3851,7 @@ ZEND_VM_HANDLER(68, ZEND_NEW, CONST|VAR, ANY) | |
} else { | |
OBJ_RELEASE(Z_OBJ(object_zval)); | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
/* We are not handling overloaded classes right now */ | |
EX(call) = zend_vm_stack_push_call_frame( | |
@@ -3950,17 +3950,17 @@ ZEND_VM_HANDLER(99, ZEND_FETCH_CONSTANT, VAR|CONST|UNUSED, CONST) | |
zend_constant *c; | |
zval *retval; | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- c = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
- } else if ((c = zend_quick_get_constant(opline->op2.zv + 1, opline->extended_value TSRMLS_CC)) == NULL) { | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ c = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
+ } else if ((c = zend_quick_get_constant(EX_CONSTANT(opline->op2) + 1, opline->extended_value TSRMLS_CC)) == NULL) { | |
if ((opline->extended_value & IS_CONSTANT_UNQUALIFIED) != 0) { | |
- char *actual = (char *)zend_memrchr(Z_STRVAL_P(opline->op2.zv), '\\', Z_STRLEN_P(opline->op2.zv)); | |
+ char *actual = (char *)zend_memrchr(Z_STRVAL_P(EX_CONSTANT(opline->op2)), '\\', Z_STRLEN_P(EX_CONSTANT(opline->op2))); | |
if (!actual) { | |
- ZVAL_STR(EX_VAR(opline->result.var), zend_string_copy(Z_STR_P(opline->op2.zv))); | |
+ ZVAL_STR(EX_VAR(opline->result.var), zend_string_copy(Z_STR_P(EX_CONSTANT(opline->op2)))); | |
} else { | |
actual++; | |
ZVAL_STRINGL(EX_VAR(opline->result.var), | |
- actual, Z_STRLEN_P(opline->op2.zv) - (actual - Z_STRVAL_P(opline->op2.zv))); | |
+ actual, Z_STRLEN_P(EX_CONSTANT(opline->op2)) - (actual - Z_STRVAL_P(EX_CONSTANT(opline->op2)))); | |
} | |
/* non-qualified constant - allow text substitution */ | |
zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'", | |
@@ -3968,10 +3968,10 @@ ZEND_VM_HANDLER(99, ZEND_FETCH_CONSTANT, VAR|CONST|UNUSED, CONST) | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} else { | |
- zend_error_noreturn(E_ERROR, "Undefined constant '%s'", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Undefined constant '%s'", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
} else { | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), c); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), c); | |
} | |
retval = EX_VAR(opline->result.var); | |
ZVAL_COPY_VALUE(retval, &c->value); | |
@@ -3988,33 +3988,33 @@ ZEND_VM_HANDLER(99, ZEND_FETCH_CONSTANT, VAR|CONST|UNUSED, CONST) | |
zval *value; | |
if (OP1_TYPE == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- value = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
ZVAL_DEREF(value); | |
ZVAL_DUP(EX_VAR(opline->result.var), value); | |
ZEND_VM_C_GOTO(constant_fetch_end); | |
- } else if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ } else if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op1))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op1.var)); | |
- if ((value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce)) != NULL) { | |
+ if ((value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce)) != NULL) { | |
ZVAL_DEREF(value); | |
ZVAL_DUP(EX_VAR(opline->result.var), value); | |
ZEND_VM_C_GOTO(constant_fetch_end); | |
} | |
} | |
- if (EXPECTED((value = zend_hash_find(&ce->constants_table, Z_STR_P(opline->op2.zv))) != NULL)) { | |
+ if (EXPECTED((value = zend_hash_find(&ce->constants_table, Z_STR_P(EX_CONSTANT(opline->op2)))) != NULL)) { | |
ZVAL_DEREF(value); | |
if (Z_CONSTANT_P(value)) { | |
EG(scope) = ce; | |
@@ -4022,16 +4022,16 @@ ZEND_VM_HANDLER(99, ZEND_FETCH_CONSTANT, VAR|CONST|UNUSED, CONST) | |
EG(scope) = EX(func)->op_array.scope; | |
} | |
if (OP1_TYPE == IS_CONST) { | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), value); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), value); | |
} else { | |
- CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce, value); | |
+ CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce, value); | |
} | |
ZVAL_DUP(EX_VAR(opline->result.var), value); | |
- } else if (Z_STRLEN_P(opline->op2.zv) == sizeof("class")-1 && memcmp(Z_STRVAL_P(opline->op2.zv), "class", sizeof("class") - 1) == 0) { | |
+ } else if (Z_STRLEN_P(EX_CONSTANT(opline->op2)) == sizeof("class")-1 && memcmp(Z_STRVAL_P(EX_CONSTANT(opline->op2)), "class", sizeof("class") - 1) == 0) { | |
/* "class" is assigned as a case-sensitive keyword from zend_do_resolve_class_name */ | |
ZVAL_STR_COPY(EX_VAR(opline->result.var), ce->name); | |
} else { | |
- zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
} | |
ZEND_VM_C_LABEL(constant_fetch_end): | |
@@ -4431,10 +4431,10 @@ ZEND_VM_HANDLER(74, ZEND_UNSET_VAR, CONST|TMPVAR|CV, UNUSED|CONST|VAR) | |
zend_class_entry *ce; | |
if (OP2_TYPE == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
if (OP1_TYPE != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) { | |
zend_string_release(Z_STR(tmp)); | |
@@ -4443,14 +4443,14 @@ ZEND_VM_HANDLER(74, ZEND_UNSET_VAR, CONST|TMPVAR|CV, UNUSED|CONST|VAR) | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- zend_std_unset_static_property(ce, Z_STR_P(varname), ((OP1_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ zend_std_unset_static_property(ce, Z_STR_P(varname), ((OP1_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
zend_hash_del_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -4578,7 +4578,7 @@ ZEND_VM_HANDLER(76, ZEND_UNSET_OBJ, VAR|UNUSED|CV, CONST|TMPVAR|CV) | |
} | |
} | |
if (Z_OBJ_HT_P(container)->unset_property) { | |
- Z_OBJ_HT_P(container)->unset_property(container, offset, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(container)->unset_property(container, offset, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
} else { | |
zend_error(E_NOTICE, "Trying to unset property of non-object"); | |
} | |
@@ -4743,7 +4743,7 @@ ZEND_VM_HANDLER(77, ZEND_FE_RESET, CONST|TMP|VAR|CV, ANY) | |
if (OP1_TYPE == IS_VAR && opline->extended_value & ZEND_FE_FETCH_BYREF) { | |
FREE_OP1_VAR_PTR(); | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
p = fe_ht->arData + pos; | |
if (Z_TYPE(p->val) == IS_UNDEF || | |
@@ -4774,7 +4774,7 @@ ZEND_VM_HANDLER(77, ZEND_FE_RESET, CONST|TMP|VAR|CV, ANY) | |
FREE_OP1_VAR_PTR(); | |
} | |
if (is_empty) { | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
@@ -4809,7 +4809,7 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH, VAR, ANY) | |
pos = ptr->pos; | |
if (UNEXPECTED(pos == INVALID_IDX)) { | |
/* reached end of iteration */ | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else if (UNEXPECTED(ptr->ht != fe_ht)) { | |
ptr->ht = fe_ht; | |
pos = 0; | |
@@ -4832,7 +4832,7 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH, VAR, ANY) | |
while (1) { | |
if (UNEXPECTED(pos >= fe_ht->nNumUsed)) { | |
/* reached end of iteration */ | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
p = fe_ht->arData + pos; | |
value = &p->val; | |
@@ -4890,7 +4890,7 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH, VAR, ANY) | |
pos = ptr->pos; | |
if (pos == INVALID_IDX) { | |
/* reached end of iteration */ | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else if (UNEXPECTED(ptr->ht != fe_ht)) { | |
ptr->ht = fe_ht; | |
pos = 0; | |
@@ -4913,7 +4913,7 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH, VAR, ANY) | |
while (1) { | |
if (UNEXPECTED(pos >= fe_ht->nNumUsed)) { | |
/* reached end of iteration */ | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
p = fe_ht->arData + pos; | |
@@ -4993,7 +4993,7 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH, VAR, ANY) | |
zval_ptr_dtor(array_ref); | |
HANDLE_EXCEPTION(); | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
value = iter->funcs->get_current_data(iter TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
@@ -5002,7 +5002,7 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH, VAR, ANY) | |
} | |
if (!value) { | |
/* failure in get_current_data */ | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
if (opline->extended_value & ZEND_FE_FETCH_BYREF) { | |
ZVAL_MAKE_REF(value); | |
@@ -5027,7 +5027,7 @@ ZEND_VM_HANDLER(78, ZEND_FE_FETCH, VAR, ANY) | |
} | |
} else { | |
zend_error(E_WARNING, "Invalid argument supplied for foreach()"); | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
} | |
@@ -5065,20 +5065,20 @@ ZEND_VM_HANDLER(114, ZEND_ISSET_ISEMPTY_VAR, CONST|TMPVAR|CV, UNUSED|CONST|VAR) | |
zend_class_entry *ce; | |
if (OP2_TYPE == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, ((OP1_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, ((OP1_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
HashTable *target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
value = zend_hash_find_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -5248,7 +5248,7 @@ ZEND_VM_HANDLER(148, ZEND_ISSET_ISEMPTY_PROP_OBJ, CONST|TMPVAR|UNUSED|CV, CONST| | |
ZEND_VM_C_LABEL(isset_no_object): | |
result = ((opline->extended_value & ZEND_ISSET) == 0); | |
} else { | |
- result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((OP2_TYPE == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((OP2_TYPE == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
if ((opline->extended_value & ZEND_ISSET) == 0) { | |
result = !result; | |
} | |
@@ -5364,7 +5364,7 @@ ZEND_VM_HANDLER(152, ZEND_JMP_SET, CONST|TMP|VAR|CV, ANY) | |
if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value); | |
FREE_OP1(); | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
FREE_OP1(); | |
@@ -5399,7 +5399,7 @@ ZEND_VM_HANDLER(169, ZEND_COALESCE, CONST|TMP|VAR|CV, ANY) | |
if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value); | |
FREE_OP1(); | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
FREE_OP1(); | |
@@ -5488,8 +5488,8 @@ ZEND_VM_HANDLER(145, ZEND_DECLARE_INHERITED_CLASS_DELAYED, ANY, ANY) | |
zval *zce, *orig_zce; | |
SAVE_OPLINE(); | |
- if ((zce = zend_hash_find(EG(class_table), Z_STR_P(opline->op2.zv))) == NULL || | |
- ((orig_zce = zend_hash_find(EG(class_table), Z_STR_P(opline->op1.zv))) != NULL && | |
+ if ((zce = zend_hash_find(EG(class_table), Z_STR_P(EX_CONSTANT(opline->op2)))) == NULL || | |
+ ((orig_zce = zend_hash_find(EG(class_table), Z_STR_P(EX_CONSTANT(opline->op1)))) != NULL && | |
Z_CE_P(zce) != Z_CE_P(orig_zce))) { | |
do_bind_inherited_class(&EX(func)->op_array, opline, EG(class_table), Z_CE_P(EX_VAR(opline->extended_value)), 0 TSRMLS_CC); | |
} | |
@@ -5537,17 +5537,17 @@ ZEND_VM_C_LABEL(try_instanceof): | |
zend_class_entry *ce; | |
if (OP2_TYPE == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
FREE_OP1(); | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
@@ -5582,15 +5582,15 @@ ZEND_VM_HANDLER(144, ZEND_ADD_INTERFACE, ANY, CONST) | |
zend_class_entry *iface; | |
SAVE_OPLINE(); | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- iface = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ iface = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- iface = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, ZEND_FETCH_CLASS_INTERFACE TSRMLS_CC); | |
+ iface = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_INTERFACE TSRMLS_CC); | |
if (UNEXPECTED(iface == NULL)) { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), iface); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), iface); | |
} | |
if (UNEXPECTED((iface->ce_flags & ZEND_ACC_INTERFACE) == 0)) { | |
@@ -5609,11 +5609,11 @@ ZEND_VM_HANDLER(154, ZEND_ADD_TRAIT, ANY, ANY) | |
zend_class_entry *trait; | |
SAVE_OPLINE(); | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- trait = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ trait = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- trait = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), | |
- opline->op2.zv + 1, | |
+ trait = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), | |
+ EX_CONSTANT(opline->op2) + 1, | |
ZEND_FETCH_CLASS_TRAIT TSRMLS_CC); | |
if (UNEXPECTED(trait == NULL)) { | |
CHECK_EXCEPTION(); | |
@@ -5622,7 +5622,7 @@ ZEND_VM_HANDLER(154, ZEND_ADD_TRAIT, ANY, ANY) | |
if (!((trait->ce_flags & ZEND_ACC_TRAIT) == ZEND_ACC_TRAIT)) { | |
zend_error_noreturn(E_ERROR, "%s cannot use %s - it is not a trait", ce->name->val, trait->name->val); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), trait); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), trait); | |
} | |
zend_do_implement_trait(ce, trait TSRMLS_CC); | |
@@ -5831,7 +5831,7 @@ ZEND_VM_HANDLER(153, ZEND_DECLARE_LAMBDA_FUNCTION, CONST, UNUSED) | |
SAVE_OPLINE(); | |
- if (UNEXPECTED((zfunc = zend_hash_find(EG(function_table), Z_STR_P(opline->op1.zv))) == NULL) || | |
+ if (UNEXPECTED((zfunc = zend_hash_find(EG(function_table), Z_STR_P(EX_CONSTANT(opline->op1)))) == NULL) || | |
UNEXPECTED(Z_FUNC_P(zfunc)->type != ZEND_USER_FUNCTION)) { | |
zend_error_noreturn(E_ERROR, "Base lambda function for closure not found"); | |
} | |
@@ -6028,7 +6028,7 @@ ZEND_VM_HANDLER(162, ZEND_FAST_CALL, ANY, ANY) | |
Z_OBJ_P(fast_call) = NULL; | |
/* set return address */ | |
fast_call->u2.lineno = opline - EX(func)->op_array.opcodes; | |
- ZEND_VM_SET_OPCODE(opline->op1.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op1)); | |
ZEND_VM_CONTINUE(); | |
} | |
@@ -6239,12 +6239,12 @@ ZEND_VM_HANDLER(122, ZEND_DEFINED, CONST, ANY) | |
zend_constant *c; | |
SAVE_OPLINE(); | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
ZVAL_TRUE(EX_VAR(opline->result.var)); | |
- } else if ((c = zend_quick_get_constant(opline->op1.zv, 0 TSRMLS_CC)) == NULL) { | |
+ } else if ((c = zend_quick_get_constant(EX_CONSTANT(opline->op1), 0 TSRMLS_CC)) == NULL) { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
} else { | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), c); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), c); | |
ZVAL_TRUE(EX_VAR(opline->result.var)); | |
} | |
CHECK_EXCEPTION(); | |
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h | |
index 7ea4293..a2ded37 100644 | |
--- a/Zend/zend_vm_execute.h | |
+++ b/Zend/zend_vm_execute.h | |
@@ -482,7 +482,7 @@ static int ZEND_FASTCALL ZEND_JMP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
{ | |
USE_OPLINE | |
- ZEND_VM_SET_OPCODE(opline->op1.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op1)); | |
ZEND_VM_CONTINUE(); | |
} | |
@@ -1120,8 +1120,8 @@ static int ZEND_FASTCALL ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER(ZEND | |
zval *zce, *orig_zce; | |
SAVE_OPLINE(); | |
- if ((zce = zend_hash_find(EG(class_table), Z_STR_P(opline->op2.zv))) == NULL || | |
- ((orig_zce = zend_hash_find(EG(class_table), Z_STR_P(opline->op1.zv))) != NULL && | |
+ if ((zce = zend_hash_find(EG(class_table), Z_STR_P(EX_CONSTANT(opline->op2)))) == NULL || | |
+ ((orig_zce = zend_hash_find(EG(class_table), Z_STR_P(EX_CONSTANT(opline->op1)))) != NULL && | |
Z_CE_P(zce) != Z_CE_P(orig_zce))) { | |
do_bind_inherited_class(&EX(func)->op_array, opline, EG(class_table), Z_CE_P(EX_VAR(opline->extended_value)), 0 TSRMLS_CC); | |
} | |
@@ -1171,11 +1171,11 @@ static int ZEND_FASTCALL ZEND_ADD_TRAIT_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
zend_class_entry *trait; | |
SAVE_OPLINE(); | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- trait = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ trait = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- trait = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), | |
- opline->op2.zv + 1, | |
+ trait = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), | |
+ EX_CONSTANT(opline->op2) + 1, | |
ZEND_FETCH_CLASS_TRAIT TSRMLS_CC); | |
if (UNEXPECTED(trait == NULL)) { | |
CHECK_EXCEPTION(); | |
@@ -1184,7 +1184,7 @@ static int ZEND_FASTCALL ZEND_ADD_TRAIT_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
if (!((trait->ce_flags & ZEND_ACC_TRAIT) == ZEND_ACC_TRAIT)) { | |
zend_error_noreturn(E_ERROR, "%s cannot use %s - it is not a trait", ce->name->val, trait->name->val); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), trait); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), trait); | |
} | |
zend_do_implement_trait(ce, trait TSRMLS_CC); | |
@@ -1381,7 +1381,7 @@ static int ZEND_FASTCALL ZEND_FAST_CALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
Z_OBJ_P(fast_call) = NULL; | |
/* set return address */ | |
fast_call->u2.lineno = opline - EX(func)->op_array.opcodes; | |
- ZEND_VM_SET_OPCODE(opline->op1.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op1)); | |
ZEND_VM_CONTINUE(); | |
} | |
@@ -1433,14 +1433,14 @@ static int ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLE | |
ZEND_VM_NEXT_OPCODE(); | |
} else { | |
- zval *class_name = opline->op2.zv; | |
+ zval *class_name = EX_CONSTANT(opline->op2); | |
try_class_name: | |
if (IS_CONST == IS_CONST) { | |
if (CACHED_PTR(Z_CACHE_SLOT_P(class_name))) { | |
Z_CE_P(EX_VAR(opline->result.var)) = CACHED_PTR(Z_CACHE_SLOT_P(class_name)); | |
} else { | |
- Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class_by_name(Z_STR_P(class_name), opline->op2.zv + 1, opline->extended_value TSRMLS_CC); | |
+ Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class_by_name(Z_STR_P(class_name), EX_CONSTANT(opline->op2) + 1, opline->extended_value TSRMLS_CC); | |
CACHE_PTR(Z_CACHE_SLOT_P(class_name), Z_CE_P(EX_VAR(opline->result.var))); | |
} | |
} else if (Z_TYPE_P(class_name) == IS_OBJECT) { | |
@@ -1468,16 +1468,16 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE | |
zend_function *fbc; | |
zval *function_name, *func; | |
- if (IS_CONST == IS_CONST && Z_TYPE_P(opline->op2.zv) == IS_STRING) { | |
- function_name = (zval*)(opline->op2.zv+1); | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- fbc = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (IS_CONST == IS_CONST && Z_TYPE_P(EX_CONSTANT(opline->op2)) == IS_STRING) { | |
+ function_name = (zval*)(EX_CONSTANT(opline->op2)+1); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else if (UNEXPECTED((func = zend_hash_find(EG(function_table), Z_STR_P(function_name))) == NULL)) { | |
SAVE_OPLINE(); | |
- zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} else { | |
fbc = Z_FUNC_P(func); | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), fbc); | |
} | |
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION, | |
@@ -1492,7 +1492,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE | |
zend_object *object; | |
SAVE_OPLINE(); | |
- function_name = opline->op2.zv; | |
+ function_name = EX_CONSTANT(opline->op2); | |
try_function_name: | |
if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) { | |
@@ -1615,21 +1615,21 @@ static int ZEND_FASTCALL ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPC | |
zval *func; | |
zend_function *fbc; | |
- func_name = opline->op2.zv + 1; | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- fbc = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ func_name = EX_CONSTANT(opline->op2) + 1; | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else if ((func = zend_hash_find(EG(function_table), Z_STR_P(func_name))) == NULL) { | |
func_name++; | |
if (UNEXPECTED((func = zend_hash_find(EG(function_table), Z_STR_P(func_name))) == NULL)) { | |
SAVE_OPLINE(); | |
- zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} else { | |
fbc = Z_FUNC_P(func); | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), fbc); | |
} | |
} else { | |
fbc = Z_FUNC_P(func); | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), fbc); | |
} | |
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION, | |
@@ -1642,7 +1642,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER | |
{ | |
USE_OPLINE | |
- zval *fname = opline->op2.zv; | |
+ zval *fname = EX_CONSTANT(opline->op2); | |
zval *func; | |
zend_function *fbc; | |
@@ -1671,7 +1671,7 @@ static int ZEND_FASTCALL ZEND_RECV_INIT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ | |
SAVE_OPLINE(); | |
param = _get_zval_ptr_cv_undef_BP_VAR_W(execute_data, opline->result.var TSRMLS_CC); | |
if (arg_num > EX_NUM_ARGS()) { | |
- ZVAL_COPY_VALUE(param, opline->op2.zv); | |
+ ZVAL_COPY_VALUE(param, EX_CONSTANT(opline->op2)); | |
if (Z_OPT_CONSTANT_P(param)) { | |
zval_update_constant(param, 0 TSRMLS_CC); | |
} else { | |
@@ -1683,7 +1683,7 @@ static int ZEND_FASTCALL ZEND_RECV_INIT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ | |
} | |
if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) { | |
- zend_verify_arg_type(EX(func), arg_num, param, opline->op2.zv TSRMLS_CC); | |
+ zend_verify_arg_type(EX(func), arg_num, param, EX_CONSTANT(opline->op2) TSRMLS_CC); | |
} | |
CHECK_EXCEPTION(); | |
@@ -1696,7 +1696,7 @@ static int ZEND_FASTCALL ZEND_BRK_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
zend_brk_cont_element *el; | |
SAVE_OPLINE(); | |
- el = zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.opline_num, | |
+ el = zend_brk_cont(Z_LVAL_P(EX_CONSTANT(opline->op2)), opline->op1.opline_num, | |
&EX(func)->op_array, execute_data TSRMLS_CC); | |
ZEND_VM_JMP(EX(func)->op_array.opcodes + el->brk); | |
} | |
@@ -1707,7 +1707,7 @@ static int ZEND_FASTCALL ZEND_CONT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
zend_brk_cont_element *el; | |
SAVE_OPLINE(); | |
- el = zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.opline_num, | |
+ el = zend_brk_cont(Z_LVAL_P(EX_CONSTANT(opline->op2)), opline->op1.opline_num, | |
&EX(func)->op_array, execute_data TSRMLS_CC); | |
ZEND_VM_JMP(EX(func)->op_array.opcodes + el->cont); | |
} | |
@@ -1719,7 +1719,7 @@ static int ZEND_FASTCALL ZEND_GOTO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
zend_brk_cont_element *el; | |
SAVE_OPLINE(); | |
- el = zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->extended_value, | |
+ el = zend_brk_cont(Z_LVAL_P(EX_CONSTANT(opline->op2)), opline->extended_value, | |
&EX(func)->op_array, execute_data TSRMLS_CC); | |
brk_opline = EX(func)->op_array.opcodes + el->brk; | |
@@ -1729,7 +1729,7 @@ static int ZEND_FASTCALL ZEND_GOTO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
zval_ptr_dtor_nogc(EX_VAR(brk_opline->op1.var)); | |
} | |
} | |
- ZEND_VM_JMP(opline->op1.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op1)); | |
} | |
static int ZEND_FASTCALL ZEND_ADD_INTERFACE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
@@ -1739,15 +1739,15 @@ static int ZEND_FASTCALL ZEND_ADD_INTERFACE_SPEC_CONST_HANDLER(ZEND_OPCODE_HAND | |
zend_class_entry *iface; | |
SAVE_OPLINE(); | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- iface = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ iface = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- iface = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, ZEND_FETCH_CLASS_INTERFACE TSRMLS_CC); | |
+ iface = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_INTERFACE TSRMLS_CC); | |
if (UNEXPECTED(iface == NULL)) { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), iface); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), iface); | |
} | |
if (UNEXPECTED((iface->ce_flags & ZEND_ACC_INTERFACE) == 0)) { | |
@@ -1780,7 +1780,7 @@ try_class_name: | |
if (CACHED_PTR(Z_CACHE_SLOT_P(class_name))) { | |
Z_CE_P(EX_VAR(opline->result.var)) = CACHED_PTR(Z_CACHE_SLOT_P(class_name)); | |
} else { | |
- Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class_by_name(Z_STR_P(class_name), opline->op2.zv + 1, opline->extended_value TSRMLS_CC); | |
+ Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class_by_name(Z_STR_P(class_name), EX_CONSTANT(opline->op2) + 1, opline->extended_value TSRMLS_CC); | |
CACHE_PTR(Z_CACHE_SLOT_P(class_name), Z_CE_P(EX_VAR(opline->result.var))); | |
} | |
} else if (Z_TYPE_P(class_name) == IS_OBJECT) { | |
@@ -1823,7 +1823,7 @@ try_class_name: | |
if (CACHED_PTR(Z_CACHE_SLOT_P(class_name))) { | |
Z_CE_P(EX_VAR(opline->result.var)) = CACHED_PTR(Z_CACHE_SLOT_P(class_name)); | |
} else { | |
- Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class_by_name(Z_STR_P(class_name), opline->op2.zv + 1, opline->extended_value TSRMLS_CC); | |
+ Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class_by_name(Z_STR_P(class_name), EX_CONSTANT(opline->op2) + 1, opline->extended_value TSRMLS_CC); | |
CACHE_PTR(Z_CACHE_SLOT_P(class_name), Z_CE_P(EX_VAR(opline->result.var))); | |
} | |
} else if (Z_TYPE_P(class_name) == IS_OBJECT) { | |
@@ -1851,16 +1851,16 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HA | |
zend_function *fbc; | |
zval *function_name, *func; | |
- if (IS_CV == IS_CONST && Z_TYPE_P(opline->op2.zv) == IS_STRING) { | |
- function_name = (zval*)(opline->op2.zv+1); | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- fbc = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (IS_CV == IS_CONST && Z_TYPE_P(EX_CONSTANT(opline->op2)) == IS_STRING) { | |
+ function_name = (zval*)(EX_CONSTANT(opline->op2)+1); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else if (UNEXPECTED((func = zend_hash_find(EG(function_table), Z_STR_P(function_name))) == NULL)) { | |
SAVE_OPLINE(); | |
- zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} else { | |
fbc = Z_FUNC_P(func); | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), fbc); | |
} | |
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION, | |
@@ -2012,7 +2012,7 @@ try_class_name: | |
if (CACHED_PTR(Z_CACHE_SLOT_P(class_name))) { | |
Z_CE_P(EX_VAR(opline->result.var)) = CACHED_PTR(Z_CACHE_SLOT_P(class_name)); | |
} else { | |
- Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class_by_name(Z_STR_P(class_name), opline->op2.zv + 1, opline->extended_value TSRMLS_CC); | |
+ Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class_by_name(Z_STR_P(class_name), EX_CONSTANT(opline->op2) + 1, opline->extended_value TSRMLS_CC); | |
CACHE_PTR(Z_CACHE_SLOT_P(class_name), Z_CE_P(EX_VAR(opline->result.var))); | |
} | |
} else if (Z_TYPE_P(class_name) == IS_OBJECT) { | |
@@ -2041,16 +2041,16 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_TMPVAR_HANDLER(ZEND_OPCOD | |
zend_function *fbc; | |
zval *function_name, *func; | |
- if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_TYPE_P(opline->op2.zv) == IS_STRING) { | |
- function_name = (zval*)(opline->op2.zv+1); | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- fbc = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_TYPE_P(EX_CONSTANT(opline->op2)) == IS_STRING) { | |
+ function_name = (zval*)(EX_CONSTANT(opline->op2)+1); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else if (UNEXPECTED((func = zend_hash_find(EG(function_table), Z_STR_P(function_name))) == NULL)) { | |
SAVE_OPLINE(); | |
- zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} else { | |
fbc = Z_FUNC_P(func); | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), fbc); | |
} | |
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION, | |
@@ -2189,7 +2189,7 @@ static int ZEND_FASTCALL ZEND_BW_NOT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
SAVE_OPLINE(); | |
bitwise_not_function(EX_VAR(opline->result.var), | |
- opline->op1.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
@@ -2202,7 +2202,7 @@ static int ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A | |
SAVE_OPLINE(); | |
- val = opline->op1.zv; | |
+ val = EX_CONSTANT(opline->op1); | |
if (Z_TYPE_P(val) == IS_TRUE) { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
@@ -2222,7 +2222,7 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
zval *z; | |
SAVE_OPLINE(); | |
- z = opline->op1.zv; | |
+ z = EX_CONSTANT(opline->op1); | |
if (Z_TYPE_P(z) == IS_STRING) { | |
zend_string *str = Z_STR_P(z); | |
@@ -2258,16 +2258,16 @@ static int ZEND_FASTCALL ZEND_JMPZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
zval *val; | |
SAVE_OPLINE(); | |
- val = opline->op1.zv; | |
+ val = EX_CONSTANT(opline->op1); | |
if (Z_TYPE_P(val) == IS_TRUE) { | |
ZEND_VM_SET_OPCODE(opline + 1); | |
ZEND_VM_CONTINUE(); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
if (IS_CONST == IS_CV) { | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} | |
} | |
@@ -2275,7 +2275,7 @@ static int ZEND_FASTCALL ZEND_JMPZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
if (i_zend_is_true(val TSRMLS_CC)) { | |
opline++; | |
} else { | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
@@ -2291,10 +2291,10 @@ static int ZEND_FASTCALL ZEND_JMPNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS | |
zval *val; | |
SAVE_OPLINE(); | |
- val = opline->op1.zv; | |
+ val = EX_CONSTANT(opline->op1); | |
if (Z_TYPE_P(val) == IS_TRUE) { | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
if (IS_CONST == IS_CV) { | |
@@ -2306,7 +2306,7 @@ static int ZEND_FASTCALL ZEND_JMPNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS | |
} | |
if (i_zend_is_true(val TSRMLS_CC)) { | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} else { | |
opline++; | |
} | |
@@ -2324,24 +2324,24 @@ static int ZEND_FASTCALL ZEND_JMPZNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
zval *val; | |
SAVE_OPLINE(); | |
- val = opline->op1.zv; | |
+ val = EX_CONSTANT(opline->op1); | |
if (EXPECTED(Z_TYPE_P(val) == IS_TRUE)) { | |
ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value); | |
ZEND_VM_CONTINUE(); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
if (IS_CONST == IS_CV) { | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} | |
} | |
if (i_zend_is_true(val TSRMLS_CC)) { | |
- opline = (zend_op*)(((char*)opline) + opline->extended_value); | |
+ opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value); | |
} else { | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
@@ -2357,7 +2357,7 @@ static int ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_AR | |
zval *val; | |
SAVE_OPLINE(); | |
- val = opline->op1.zv; | |
+ val = EX_CONSTANT(opline->op1); | |
if (Z_TYPE_P(val) == IS_TRUE) { | |
ZVAL_TRUE(EX_VAR(opline->result.var)); | |
@@ -2366,9 +2366,9 @@ static int ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_AR | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
if (IS_CONST == IS_CV) { | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} | |
} | |
@@ -2380,7 +2380,7 @@ static int ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_AR | |
} else { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
HANDLE_EXCEPTION(); | |
@@ -2395,11 +2395,11 @@ static int ZEND_FASTCALL ZEND_JMPNZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A | |
zval *val; | |
SAVE_OPLINE(); | |
- val = opline->op1.zv; | |
+ val = EX_CONSTANT(opline->op1); | |
if (Z_TYPE_P(val) == IS_TRUE) { | |
ZVAL_TRUE(EX_VAR(opline->result.var)); | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
@@ -2412,7 +2412,7 @@ static int ZEND_FASTCALL ZEND_JMPNZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A | |
} | |
if (i_zend_is_true(val TSRMLS_CC)) { | |
ZVAL_TRUE(EX_VAR(opline->result.var)); | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} else { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
opline++; | |
@@ -2431,7 +2431,7 @@ static int ZEND_FASTCALL ZEND_RETURN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
SAVE_OPLINE(); | |
- retval_ptr = opline->op1.zv; | |
+ retval_ptr = EX_CONSTANT(opline->op1); | |
if (!EX(return_value)) { | |
@@ -2470,7 +2470,7 @@ static int ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_CONST_HANDLER(ZEND_OPCODE_HAND | |
/* Not supposed to happen, but we'll allow it */ | |
zend_error(E_NOTICE, "Only variable references should be returned by reference"); | |
- retval_ptr = opline->op1.zv; | |
+ retval_ptr = EX_CONSTANT(opline->op1); | |
if (!EX(return_value)) { | |
if (IS_CONST == IS_TMP_VAR) { | |
@@ -2523,7 +2523,7 @@ static int ZEND_FASTCALL ZEND_THROW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS | |
SAVE_OPLINE(); | |
- value = opline->op1.zv; | |
+ value = EX_CONSTANT(opline->op1); | |
do { | |
if (IS_CONST == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) { | |
@@ -2558,7 +2558,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A | |
SAVE_OPLINE(); | |
- value = opline->op1.zv; | |
+ value = EX_CONSTANT(opline->op1); | |
arg = ZEND_CALL_ARG(EX(call), opline->op2.num); | |
ZEND_CALL_NUM_ARGS(EX(call)) = opline->op2.num; | |
ZVAL_COPY_VALUE(arg, value); | |
@@ -2580,7 +2580,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAL_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLE | |
if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) { | |
zend_error_noreturn(E_ERROR, "Cannot pass parameter %d by reference", opline->op2.num); | |
} | |
- value = opline->op1.zv; | |
+ value = EX_CONSTANT(opline->op1); | |
arg = ZEND_CALL_ARG(EX(call), opline->op2.num); | |
ZEND_CALL_NUM_ARGS(EX(call)) = opline->op2.num; | |
ZVAL_COPY_VALUE(arg, value); | |
@@ -2599,7 +2599,7 @@ static int ZEND_FASTCALL ZEND_BOOL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
SAVE_OPLINE(); | |
- val = opline->op1.zv; | |
+ val = EX_CONSTANT(opline->op1); | |
if (Z_TYPE_P(val) == IS_TRUE) { | |
ZVAL_TRUE(EX_VAR(opline->result.var)); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
@@ -2621,15 +2621,15 @@ static int ZEND_FASTCALL ZEND_NEW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
SAVE_OPLINE(); | |
if (IS_CONST == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op1.var)); | |
@@ -2652,7 +2652,7 @@ static int ZEND_FASTCALL ZEND_NEW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
} else { | |
OBJ_RELEASE(Z_OBJ(object_zval)); | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
/* We are not handling overloaded classes right now */ | |
EX(call) = zend_vm_stack_push_call_frame( | |
@@ -2686,7 +2686,7 @@ static int ZEND_FASTCALL ZEND_CLONE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS | |
zend_object_clone_obj_t clone_call; | |
SAVE_OPLINE(); | |
- obj = opline->op1.zv; | |
+ obj = EX_CONSTANT(opline->op1); | |
do { | |
if (IS_CONST == IS_CONST || | |
@@ -2750,7 +2750,7 @@ static int ZEND_FASTCALL ZEND_CAST_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
zval *result = EX_VAR(opline->result.var); | |
SAVE_OPLINE(); | |
- expr = opline->op1.zv; | |
+ expr = EX_CONSTANT(opline->op1); | |
switch (opline->extended_value) { | |
case IS_NULL: | |
@@ -2855,7 +2855,7 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HA | |
zend_bool failure_retval=0; | |
SAVE_OPLINE(); | |
- inc_filename = opline->op1.zv; | |
+ inc_filename = EX_CONSTANT(opline->op1); | |
ZVAL_UNDEF(&tmp_inc_filename); | |
if (Z_TYPE_P(inc_filename) != IS_STRING) { | |
@@ -3004,7 +3004,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A | |
if (Z_REFCOUNTED_P(array_ref)) Z_ADDREF_P(array_ref); | |
} | |
} else { | |
- array_ptr = array_ref = opline->op1.zv; | |
+ array_ptr = array_ref = EX_CONSTANT(opline->op1); | |
if (IS_CONST & (IS_VAR|IS_CV)) { | |
ZVAL_DEREF(array_ptr); | |
} | |
@@ -3124,7 +3124,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A | |
if (IS_CONST == IS_VAR && opline->extended_value & ZEND_FE_FETCH_BYREF) { | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
p = fe_ht->arData + pos; | |
if (Z_TYPE(p->val) == IS_UNDEF || | |
@@ -3155,7 +3155,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A | |
} | |
if (is_empty) { | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
@@ -3170,7 +3170,7 @@ static int ZEND_FASTCALL ZEND_EXIT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
SAVE_OPLINE(); | |
if (IS_CONST != IS_UNUSED) { | |
- zval *ptr = opline->op1.zv; | |
+ zval *ptr = EX_CONSTANT(opline->op1); | |
do { | |
if (Z_TYPE_P(ptr) == IS_LONG) { | |
@@ -3201,7 +3201,7 @@ static int ZEND_FASTCALL ZEND_JMP_SET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_AR | |
int is_ref = 0; | |
SAVE_OPLINE(); | |
- value = opline->op1.zv; | |
+ value = EX_CONSTANT(opline->op1); | |
if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) && Z_ISREF_P(value)) { | |
is_ref = 1; | |
@@ -3219,7 +3219,7 @@ static int ZEND_FASTCALL ZEND_JMP_SET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_AR | |
if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value); | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
CHECK_EXCEPTION(); | |
@@ -3234,7 +3234,7 @@ static int ZEND_FASTCALL ZEND_COALESCE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A | |
int is_ref = 0; | |
SAVE_OPLINE(); | |
- value = opline->op1.zv; | |
+ value = EX_CONSTANT(opline->op1); | |
if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) && Z_ISREF_P(value)) { | |
is_ref = 1; | |
@@ -3253,7 +3253,7 @@ static int ZEND_FASTCALL ZEND_COALESCE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A | |
if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value); | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
CHECK_EXCEPTION(); | |
@@ -3267,7 +3267,7 @@ static int ZEND_FASTCALL ZEND_QM_ASSIGN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ | |
zval *value; | |
SAVE_OPLINE(); | |
- value = opline->op1.zv; | |
+ value = EX_CONSTANT(opline->op1); | |
if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) && Z_ISREF_P(value)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), Z_REFVAL_P(value)); | |
@@ -3292,7 +3292,7 @@ static int ZEND_FASTCALL ZEND_STRLEN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
SAVE_OPLINE(); | |
- value = opline->op1.zv; | |
+ value = EX_CONSTANT(opline->op1); | |
try_strlen: | |
if (EXPECTED(Z_TYPE_P(value) == IS_STRING)) { | |
ZVAL_LONG(EX_VAR(opline->result.var), Z_STRLEN_P(value)); | |
@@ -3336,7 +3336,7 @@ static int ZEND_FASTCALL ZEND_TYPE_CHECK_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER | |
SAVE_OPLINE(); | |
- value = opline->op1.zv; | |
+ value = EX_CONSTANT(opline->op1); | |
switch (opline->extended_value) { | |
case IS_NULL: | |
case IS_LONG: | |
@@ -3382,12 +3382,12 @@ static int ZEND_FASTCALL ZEND_DEFINED_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_AR | |
zend_constant *c; | |
SAVE_OPLINE(); | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
ZVAL_TRUE(EX_VAR(opline->result.var)); | |
- } else if ((c = zend_quick_get_constant(opline->op1.zv, 0 TSRMLS_CC)) == NULL) { | |
+ } else if ((c = zend_quick_get_constant(EX_CONSTANT(opline->op1), 0 TSRMLS_CC)) == NULL) { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
} else { | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), c); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), c); | |
ZVAL_TRUE(EX_VAR(opline->result.var)); | |
} | |
CHECK_EXCEPTION(); | |
@@ -3401,8 +3401,8 @@ static int ZEND_FASTCALL ZEND_ADD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ | |
SAVE_OPLINE(); | |
fast_add_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3416,8 +3416,8 @@ static int ZEND_FASTCALL ZEND_SUB_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ | |
SAVE_OPLINE(); | |
fast_sub_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3431,8 +3431,8 @@ static int ZEND_FASTCALL ZEND_MUL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ | |
SAVE_OPLINE(); | |
fast_mul_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3446,8 +3446,8 @@ static int ZEND_FASTCALL ZEND_DIV_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ | |
SAVE_OPLINE(); | |
fast_div_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3461,8 +3461,8 @@ static int ZEND_FASTCALL ZEND_MOD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ | |
SAVE_OPLINE(); | |
fast_mod_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3476,8 +3476,8 @@ static int ZEND_FASTCALL ZEND_SL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_A | |
SAVE_OPLINE(); | |
shift_left_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3491,8 +3491,8 @@ static int ZEND_FASTCALL ZEND_SR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_A | |
SAVE_OPLINE(); | |
shift_right_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3506,8 +3506,8 @@ static int ZEND_FASTCALL ZEND_CONCAT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDL | |
SAVE_OPLINE(); | |
concat_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3521,8 +3521,8 @@ static int ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE | |
SAVE_OPLINE(); | |
fast_is_identical_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3537,8 +3537,8 @@ static int ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CONST_HANDLER(ZEND_OP | |
SAVE_OPLINE(); | |
fast_is_not_identical_function(result, | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3553,8 +3553,8 @@ static int ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HAN | |
SAVE_OPLINE(); | |
fast_equal_function(result, | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3569,8 +3569,8 @@ static int ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE | |
SAVE_OPLINE(); | |
fast_not_equal_function(result, | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3585,8 +3585,8 @@ static int ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_H | |
SAVE_OPLINE(); | |
fast_is_smaller_function(result, | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3601,8 +3601,8 @@ static int ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND | |
SAVE_OPLINE(); | |
fast_is_smaller_or_equal_function(result, | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3616,8 +3616,8 @@ static int ZEND_FASTCALL ZEND_BW_OR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLE | |
SAVE_OPLINE(); | |
bitwise_or_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3631,8 +3631,8 @@ static int ZEND_FASTCALL ZEND_BW_AND_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDL | |
SAVE_OPLINE(); | |
bitwise_and_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3646,8 +3646,8 @@ static int ZEND_FASTCALL ZEND_BW_XOR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDL | |
SAVE_OPLINE(); | |
bitwise_xor_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3661,8 +3661,8 @@ static int ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HAN | |
SAVE_OPLINE(); | |
boolean_xor_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3679,7 +3679,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_CONST(int type | |
HashTable *target_symbol_table; | |
SAVE_OPLINE(); | |
- varname = opline->op1.zv; | |
+ varname = EX_CONSTANT(opline->op1); | |
if (IS_CONST == IS_CONST) { | |
name = Z_STR_P(varname); | |
@@ -3694,10 +3694,10 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_CONST(int type | |
zend_class_entry *ce; | |
if (IS_CONST == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
if (IS_CONST != IS_CONST) { | |
zend_string_release(name); | |
@@ -3706,12 +3706,12 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_CONST(int type | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- retval = zend_std_get_static_property(ce, name, 0, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
@@ -3824,8 +3824,8 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_ | |
zval *container; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
- zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ container = EX_CONSTANT(opline->op1); | |
+ zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3839,8 +3839,8 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE | |
zval *container; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
- zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ container = EX_CONSTANT(opline->op1); | |
+ zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -3863,7 +3863,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST_HANDLER(ZEND_ | |
if (IS_CONST == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
if (IS_CONST == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
} | |
@@ -3873,8 +3873,8 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST_HANDLER(ZEND_ | |
if (IS_CONST == IS_UNUSED) { | |
zend_error_noreturn(E_ERROR, "Cannot use [] for reading"); | |
} | |
- container = opline->op1.zv; | |
- zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ container = EX_CONSTANT(opline->op1); | |
+ zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
} | |
@@ -3891,8 +3891,8 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_ | |
zval *offset; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
- offset = opline->op2.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
+ offset = EX_CONSTANT(opline->op2); | |
if (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) { | |
@@ -3933,7 +3933,7 @@ fetch_obj_r_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -3955,8 +3955,8 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE | |
zval *offset; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
- offset = opline->op2.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
+ offset = EX_CONSTANT(opline->op2); | |
if (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) { | |
@@ -3996,7 +3996,7 @@ fetch_obj_is_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -4020,7 +4020,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST_HANDLER(ZEND_ | |
zval *property; | |
SAVE_OPLINE(); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
container = NULL; | |
if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR) { | |
@@ -4029,7 +4029,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST_HANDLER(ZEND_ | |
if (IS_CONST == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CONST, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CONST, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
if (IS_CONST == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -4049,18 +4049,18 @@ static int ZEND_FASTCALL ZEND_FETCH_LIST_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_H | |
zval *container; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
try_fetch_list: | |
if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) { | |
- zval *value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); | |
+ zval *value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), EX_CONSTANT(opline->op2), IS_CONST, BP_VAR_R TSRMLS_CC); | |
ZVAL_COPY(EX_VAR(opline->result.var), value); | |
} else if (UNEXPECTED(Z_TYPE_P(container) == IS_OBJECT) && | |
EXPECTED(Z_OBJ_HT_P(container)->read_dimension)) { | |
zval *result = EX_VAR(opline->result.var); | |
- zval *retval = Z_OBJ_HT_P(container)->read_dimension(container, opline->op2.zv, BP_VAR_R, result TSRMLS_CC); | |
+ zval *retval = Z_OBJ_HT_P(container)->read_dimension(container, EX_CONSTANT(opline->op2), BP_VAR_R, result TSRMLS_CC); | |
if (retval) { | |
if (result != retval) { | |
@@ -4091,17 +4091,17 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER( | |
if (IS_CONST == IS_CONST) { | |
/* no function found. try a static method in class */ | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op1))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op1.var)); | |
@@ -4109,16 +4109,16 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER( | |
if (IS_CONST == IS_CONST && | |
IS_CONST == IS_CONST && | |
- CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- fbc = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else if (IS_CONST != IS_CONST && | |
IS_CONST == IS_CONST && | |
- (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce))) { | |
+ (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { | |
/* do nothing */ | |
} else if (IS_CONST != IS_UNUSED) { | |
- function_name = opline->op2.zv; | |
+ function_name = EX_CONSTANT(opline->op2); | |
if (IS_CONST != IS_CONST) { | |
if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
@@ -4131,7 +4131,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER( | |
if (ce->get_static_method) { | |
fbc = ce->get_static_method(ce, Z_STR_P(function_name) TSRMLS_CC); | |
} else { | |
- fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
} | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name->val, Z_STRVAL_P(function_name)); | |
@@ -4207,7 +4207,7 @@ static int ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCO | |
{ | |
USE_OPLINE | |
- zval *function_name = opline->op2.zv; | |
+ zval *function_name = EX_CONSTANT(opline->op2); | |
zend_fcall_info_cache fcc; | |
char *error = NULL; | |
zend_function *func; | |
@@ -4242,7 +4242,7 @@ static int ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCO | |
} | |
} | |
} else { | |
- zend_error(E_WARNING, "%s() expects parameter 1 to be a valid callback, %s", Z_STRVAL_P(opline->op1.zv), error); | |
+ zend_error(E_WARNING, "%s() expects parameter 1 to be a valid callback, %s", Z_STRVAL_P(EX_CONSTANT(opline->op1)), error); | |
efree(error); | |
func = (zend_function*)&zend_pass_function; | |
called_scope = NULL; | |
@@ -4264,8 +4264,8 @@ static int ZEND_FASTCALL ZEND_CASE_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER | |
SAVE_OPLINE(); | |
fast_equal_function(result, | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
@@ -4280,17 +4280,17 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCO | |
zend_constant *c; | |
zval *retval; | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- c = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
- } else if ((c = zend_quick_get_constant(opline->op2.zv + 1, opline->extended_value TSRMLS_CC)) == NULL) { | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ c = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
+ } else if ((c = zend_quick_get_constant(EX_CONSTANT(opline->op2) + 1, opline->extended_value TSRMLS_CC)) == NULL) { | |
if ((opline->extended_value & IS_CONSTANT_UNQUALIFIED) != 0) { | |
- char *actual = (char *)zend_memrchr(Z_STRVAL_P(opline->op2.zv), '\\', Z_STRLEN_P(opline->op2.zv)); | |
+ char *actual = (char *)zend_memrchr(Z_STRVAL_P(EX_CONSTANT(opline->op2)), '\\', Z_STRLEN_P(EX_CONSTANT(opline->op2))); | |
if (!actual) { | |
- ZVAL_STR(EX_VAR(opline->result.var), zend_string_copy(Z_STR_P(opline->op2.zv))); | |
+ ZVAL_STR(EX_VAR(opline->result.var), zend_string_copy(Z_STR_P(EX_CONSTANT(opline->op2)))); | |
} else { | |
actual++; | |
ZVAL_STRINGL(EX_VAR(opline->result.var), | |
- actual, Z_STRLEN_P(opline->op2.zv) - (actual - Z_STRVAL_P(opline->op2.zv))); | |
+ actual, Z_STRLEN_P(EX_CONSTANT(opline->op2)) - (actual - Z_STRVAL_P(EX_CONSTANT(opline->op2)))); | |
} | |
/* non-qualified constant - allow text substitution */ | |
zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'", | |
@@ -4298,10 +4298,10 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCO | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} else { | |
- zend_error_noreturn(E_ERROR, "Undefined constant '%s'", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Undefined constant '%s'", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
} else { | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), c); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), c); | |
} | |
retval = EX_VAR(opline->result.var); | |
ZVAL_COPY_VALUE(retval, &c->value); | |
@@ -4318,33 +4318,33 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCO | |
zval *value; | |
if (IS_CONST == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- value = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
ZVAL_DEREF(value); | |
ZVAL_DUP(EX_VAR(opline->result.var), value); | |
goto constant_fetch_end; | |
- } else if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ } else if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op1))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op1.var)); | |
- if ((value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce)) != NULL) { | |
+ if ((value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce)) != NULL) { | |
ZVAL_DEREF(value); | |
ZVAL_DUP(EX_VAR(opline->result.var), value); | |
goto constant_fetch_end; | |
} | |
} | |
- if (EXPECTED((value = zend_hash_find(&ce->constants_table, Z_STR_P(opline->op2.zv))) != NULL)) { | |
+ if (EXPECTED((value = zend_hash_find(&ce->constants_table, Z_STR_P(EX_CONSTANT(opline->op2)))) != NULL)) { | |
ZVAL_DEREF(value); | |
if (Z_CONSTANT_P(value)) { | |
EG(scope) = ce; | |
@@ -4352,16 +4352,16 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCO | |
EG(scope) = EX(func)->op_array.scope; | |
} | |
if (IS_CONST == IS_CONST) { | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), value); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), value); | |
} else { | |
- CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce, value); | |
+ CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce, value); | |
} | |
ZVAL_DUP(EX_VAR(opline->result.var), value); | |
- } else if (Z_STRLEN_P(opline->op2.zv) == sizeof("class")-1 && memcmp(Z_STRVAL_P(opline->op2.zv), "class", sizeof("class") - 1) == 0) { | |
+ } else if (Z_STRLEN_P(EX_CONSTANT(opline->op2)) == sizeof("class")-1 && memcmp(Z_STRVAL_P(EX_CONSTANT(opline->op2)), "class", sizeof("class") - 1) == 0) { | |
/* "class" is assigned as a case-sensitive keyword from zend_do_resolve_class_name */ | |
ZVAL_STR_COPY(EX_VAR(opline->result.var), ce->name); | |
} else { | |
- zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
} | |
constant_fetch_end: | |
@@ -4386,7 +4386,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_O | |
Z_ADDREF_P(expr_ptr); | |
} else { | |
- expr_ptr = opline->op1.zv; | |
+ expr_ptr = EX_CONSTANT(opline->op1); | |
if (IS_CONST == IS_TMP_VAR) { | |
ZVAL_COPY_VALUE(&new_expr, expr_ptr); | |
expr_ptr = &new_expr; | |
@@ -4406,7 +4406,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_O | |
if (IS_CONST != IS_UNUSED) { | |
- zval *offset = opline->op2.zv; | |
+ zval *offset = EX_CONSTANT(opline->op2); | |
zend_string *str; | |
zend_ulong hval; | |
@@ -4518,7 +4518,7 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HA | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- varname = opline->op1.zv; | |
+ varname = EX_CONSTANT(opline->op1); | |
ZVAL_UNDEF(&tmp); | |
if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) { | |
@@ -4530,10 +4530,10 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HA | |
zend_class_entry *ce; | |
if (IS_CONST == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) { | |
zend_string_release(Z_STR(tmp)); | |
@@ -4542,14 +4542,14 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HA | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- zend_std_unset_static_property(ce, Z_STR_P(varname), ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ zend_std_unset_static_property(ce, Z_STR_P(varname), ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
zend_hash_del_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -4585,7 +4585,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_CONST_HANDLER(ZEND_O | |
ZEND_VM_NEXT_OPCODE(); | |
} else { | |
- zval tmp, *varname = opline->op1.zv; | |
+ zval tmp, *varname = EX_CONSTANT(opline->op1); | |
ZVAL_UNDEF(&tmp); | |
if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) { | |
@@ -4597,20 +4597,20 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_CONST_HANDLER(ZEND_O | |
zend_class_entry *ce; | |
if (IS_CONST == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
HashTable *target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
value = zend_hash_find_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -4644,8 +4644,8 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST_HANDLER(ZE | |
zval *offset; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
- offset = opline->op2.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
+ offset = EX_CONSTANT(opline->op2); | |
isset_dim_obj_again: | |
if (IS_CONST != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) { | |
@@ -4760,8 +4760,8 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST_HANDLER(Z | |
zval *offset; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
- offset = opline->op2.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
+ offset = EX_CONSTANT(opline->op2); | |
if (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) { | |
@@ -4778,7 +4778,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST_HANDLER(Z | |
isset_no_object: | |
result = ((opline->extended_value & ZEND_ISSET) == 0); | |
} else { | |
- result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
if ((opline->extended_value & ZEND_ISSET) == 0) { | |
result = !result; | |
} | |
@@ -4799,8 +4799,8 @@ static int ZEND_FASTCALL ZEND_DECLARE_CONST_SPEC_CONST_CONST_HANDLER(ZEND_OPCOD | |
zend_constant c; | |
SAVE_OPLINE(); | |
- name = opline->op1.zv; | |
- val = opline->op2.zv; | |
+ name = EX_CONSTANT(opline->op1); | |
+ val = EX_CONSTANT(opline->op2); | |
ZVAL_COPY_VALUE(&c.value, val); | |
if (Z_OPT_CONSTANT(c.value)) { | |
@@ -4852,7 +4852,7 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLE | |
zend_error(E_NOTICE, "Only variable references should be yielded by reference"); | |
- value = opline->op1.zv; | |
+ value = EX_CONSTANT(opline->op1); | |
ZVAL_COPY_VALUE(&generator->value, value); | |
if (Z_OPT_REFCOUNTED(generator->value)) Z_SET_REFCOUNT(generator->value, 1); | |
@@ -4881,7 +4881,7 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLE | |
} | |
} else { | |
- zval *value = opline->op1.zv; | |
+ zval *value = EX_CONSTANT(opline->op1); | |
/* Consts, temporary variables and references need copying */ | |
if (IS_CONST == IS_CONST) { | |
@@ -4906,7 +4906,7 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLE | |
/* Set the new yielded key */ | |
if (IS_CONST != IS_UNUSED) { | |
- zval *key = opline->op2.zv; | |
+ zval *key = EX_CONSTANT(opline->op2); | |
/* Consts, temporary variables and references need copying */ | |
if (IS_CONST == IS_CONST) { | |
@@ -4961,8 +4961,8 @@ static int ZEND_FASTCALL ZEND_POW_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ | |
SAVE_OPLINE(); | |
pow_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op1), | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -4976,7 +4976,7 @@ static int ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_H | |
SAVE_OPLINE(); | |
fast_is_identical_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -4992,7 +4992,7 @@ static int ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CONST_TMP_HANDLER(ZEND_OPCO | |
SAVE_OPLINE(); | |
fast_is_not_identical_function(result, | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -5029,7 +5029,7 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ | |
zend_error(E_NOTICE, "Only variable references should be yielded by reference"); | |
- value = opline->op1.zv; | |
+ value = EX_CONSTANT(opline->op1); | |
ZVAL_COPY_VALUE(&generator->value, value); | |
if (Z_OPT_REFCOUNTED(generator->value)) Z_SET_REFCOUNT(generator->value, 1); | |
@@ -5058,7 +5058,7 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ | |
} | |
} else { | |
- zval *value = opline->op1.zv; | |
+ zval *value = EX_CONSTANT(opline->op1); | |
/* Consts, temporary variables and references need copying */ | |
if (IS_CONST == IS_CONST) { | |
@@ -5138,7 +5138,7 @@ static int ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_H | |
SAVE_OPLINE(); | |
fast_is_identical_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -5154,7 +5154,7 @@ static int ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CONST_VAR_HANDLER(ZEND_OPCO | |
SAVE_OPLINE(); | |
fast_is_not_identical_function(result, | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -5172,7 +5172,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_VAR(int type, | |
HashTable *target_symbol_table; | |
SAVE_OPLINE(); | |
- varname = opline->op1.zv; | |
+ varname = EX_CONSTANT(opline->op1); | |
if (IS_CONST == IS_CONST) { | |
name = Z_STR_P(varname); | |
@@ -5187,10 +5187,10 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_VAR(int type, | |
zend_class_entry *ce; | |
if (IS_VAR == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
if (IS_CONST != IS_CONST) { | |
zend_string_release(name); | |
@@ -5199,12 +5199,12 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_VAR(int type, | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- retval = zend_std_get_static_property(ce, name, 0, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
@@ -5340,7 +5340,7 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HAND | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- varname = opline->op1.zv; | |
+ varname = EX_CONSTANT(opline->op1); | |
ZVAL_UNDEF(&tmp); | |
if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) { | |
@@ -5352,10 +5352,10 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HAND | |
zend_class_entry *ce; | |
if (IS_VAR == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) { | |
zend_string_release(Z_STR(tmp)); | |
@@ -5364,14 +5364,14 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HAND | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- zend_std_unset_static_property(ce, Z_STR_P(varname), ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ zend_std_unset_static_property(ce, Z_STR_P(varname), ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
zend_hash_del_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -5407,7 +5407,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_VAR_HANDLER(ZEND_OPC | |
ZEND_VM_NEXT_OPCODE(); | |
} else { | |
- zval tmp, *varname = opline->op1.zv; | |
+ zval tmp, *varname = EX_CONSTANT(opline->op1); | |
ZVAL_UNDEF(&tmp); | |
if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) { | |
@@ -5419,20 +5419,20 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_VAR_HANDLER(ZEND_OPC | |
zend_class_entry *ce; | |
if (IS_VAR == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
HashTable *target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
value = zend_hash_find_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -5485,7 +5485,7 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ | |
zend_error(E_NOTICE, "Only variable references should be yielded by reference"); | |
- value = opline->op1.zv; | |
+ value = EX_CONSTANT(opline->op1); | |
ZVAL_COPY_VALUE(&generator->value, value); | |
if (Z_OPT_REFCOUNTED(generator->value)) Z_SET_REFCOUNT(generator->value, 1); | |
@@ -5514,7 +5514,7 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ | |
} | |
} else { | |
- zval *value = opline->op1.zv; | |
+ zval *value = EX_CONSTANT(opline->op1); | |
/* Consts, temporary variables and references need copying */ | |
if (IS_CONST == IS_CONST) { | |
@@ -5597,7 +5597,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_UNUSED(int typ | |
HashTable *target_symbol_table; | |
SAVE_OPLINE(); | |
- varname = opline->op1.zv; | |
+ varname = EX_CONSTANT(opline->op1); | |
if (IS_CONST == IS_CONST) { | |
name = Z_STR_P(varname); | |
@@ -5612,10 +5612,10 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_UNUSED(int typ | |
zend_class_entry *ce; | |
if (IS_UNUSED == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
if (IS_CONST != IS_CONST) { | |
zend_string_release(name); | |
@@ -5624,12 +5624,12 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_UNUSED(int typ | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- retval = zend_std_get_static_property(ce, name, 0, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
@@ -5761,7 +5761,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER(ZEND | |
if (IS_UNUSED == IS_UNUSED) { | |
zend_error_noreturn(E_ERROR, "Cannot use [] for reading"); | |
} | |
- container = opline->op1.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, NULL, IS_UNUSED TSRMLS_CC); | |
@@ -5782,17 +5782,17 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER | |
if (IS_CONST == IS_CONST) { | |
/* no function found. try a static method in class */ | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op1))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op1.var)); | |
@@ -5800,11 +5800,11 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER | |
if (IS_CONST == IS_CONST && | |
IS_UNUSED == IS_CONST && | |
- CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- fbc = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else if (IS_CONST != IS_CONST && | |
IS_UNUSED == IS_CONST && | |
- (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce))) { | |
+ (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { | |
/* do nothing */ | |
} else if (IS_UNUSED != IS_UNUSED) { | |
@@ -5822,7 +5822,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER | |
if (ce->get_static_method) { | |
fbc = ce->get_static_method(ce, Z_STR_P(function_name) TSRMLS_CC); | |
} else { | |
- fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
} | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name->val, Z_STRVAL_P(function_name)); | |
@@ -5911,7 +5911,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER(ZEND_ | |
Z_ADDREF_P(expr_ptr); | |
} else { | |
- expr_ptr = opline->op1.zv; | |
+ expr_ptr = EX_CONSTANT(opline->op1); | |
if (IS_CONST == IS_TMP_VAR) { | |
ZVAL_COPY_VALUE(&new_expr, expr_ptr); | |
expr_ptr = &new_expr; | |
@@ -6043,7 +6043,7 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_H | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- varname = opline->op1.zv; | |
+ varname = EX_CONSTANT(opline->op1); | |
ZVAL_UNDEF(&tmp); | |
if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) { | |
@@ -6055,10 +6055,10 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_H | |
zend_class_entry *ce; | |
if (IS_UNUSED == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) { | |
zend_string_release(Z_STR(tmp)); | |
@@ -6067,14 +6067,14 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_H | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- zend_std_unset_static_property(ce, Z_STR_P(varname), ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ zend_std_unset_static_property(ce, Z_STR_P(varname), ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
zend_hash_del_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -6110,7 +6110,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED_HANDLER(ZEND_ | |
ZEND_VM_NEXT_OPCODE(); | |
} else { | |
- zval tmp, *varname = opline->op1.zv; | |
+ zval tmp, *varname = EX_CONSTANT(opline->op1); | |
ZVAL_UNDEF(&tmp); | |
if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) { | |
@@ -6122,20 +6122,20 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED_HANDLER(ZEND_ | |
zend_class_entry *ce; | |
if (IS_UNUSED == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
HashTable *target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
value = zend_hash_find_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -6167,7 +6167,7 @@ static int ZEND_FASTCALL ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED_HANDLER | |
SAVE_OPLINE(); | |
- if (UNEXPECTED((zfunc = zend_hash_find(EG(function_table), Z_STR_P(opline->op1.zv))) == NULL) || | |
+ if (UNEXPECTED((zfunc = zend_hash_find(EG(function_table), Z_STR_P(EX_CONSTANT(opline->op1)))) == NULL) || | |
UNEXPECTED(Z_FUNC_P(zfunc)->type != ZEND_USER_FUNCTION)) { | |
zend_error_noreturn(E_ERROR, "Base lambda function for closure not found"); | |
} | |
@@ -6213,7 +6213,7 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDL | |
zend_error(E_NOTICE, "Only variable references should be yielded by reference"); | |
- value = opline->op1.zv; | |
+ value = EX_CONSTANT(opline->op1); | |
ZVAL_COPY_VALUE(&generator->value, value); | |
if (Z_OPT_REFCOUNTED(generator->value)) Z_SET_REFCOUNT(generator->value, 1); | |
@@ -6242,7 +6242,7 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDL | |
} | |
} else { | |
- zval *value = opline->op1.zv; | |
+ zval *value = EX_CONSTANT(opline->op1); | |
/* Consts, temporary variables and references need copying */ | |
if (IS_CONST == IS_CONST) { | |
@@ -6322,7 +6322,7 @@ static int ZEND_FASTCALL ZEND_ADD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
SAVE_OPLINE(); | |
fast_add_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6337,7 +6337,7 @@ static int ZEND_FASTCALL ZEND_SUB_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
SAVE_OPLINE(); | |
fast_sub_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6352,7 +6352,7 @@ static int ZEND_FASTCALL ZEND_MUL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
SAVE_OPLINE(); | |
fast_mul_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6367,7 +6367,7 @@ static int ZEND_FASTCALL ZEND_DIV_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
SAVE_OPLINE(); | |
fast_div_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6382,7 +6382,7 @@ static int ZEND_FASTCALL ZEND_MOD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
SAVE_OPLINE(); | |
fast_mod_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6397,7 +6397,7 @@ static int ZEND_FASTCALL ZEND_SL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS | |
SAVE_OPLINE(); | |
shift_left_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6412,7 +6412,7 @@ static int ZEND_FASTCALL ZEND_SR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS | |
SAVE_OPLINE(); | |
shift_right_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6427,7 +6427,7 @@ static int ZEND_FASTCALL ZEND_CONCAT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ | |
SAVE_OPLINE(); | |
concat_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6442,7 +6442,7 @@ static int ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HA | |
SAVE_OPLINE(); | |
fast_is_identical_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6458,7 +6458,7 @@ static int ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CV_HANDLER(ZEND_OPCOD | |
SAVE_OPLINE(); | |
fast_is_not_identical_function(result, | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6474,7 +6474,7 @@ static int ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLE | |
SAVE_OPLINE(); | |
fast_equal_function(result, | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6490,7 +6490,7 @@ static int ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HA | |
SAVE_OPLINE(); | |
fast_not_equal_function(result, | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6506,7 +6506,7 @@ static int ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HAND | |
SAVE_OPLINE(); | |
fast_is_smaller_function(result, | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6522,7 +6522,7 @@ static int ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CV_HANDLER(ZEND_OP | |
SAVE_OPLINE(); | |
fast_is_smaller_or_equal_function(result, | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6537,7 +6537,7 @@ static int ZEND_FASTCALL ZEND_BW_OR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_A | |
SAVE_OPLINE(); | |
bitwise_or_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6552,7 +6552,7 @@ static int ZEND_FASTCALL ZEND_BW_AND_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ | |
SAVE_OPLINE(); | |
bitwise_and_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6567,7 +6567,7 @@ static int ZEND_FASTCALL ZEND_BW_XOR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ | |
SAVE_OPLINE(); | |
bitwise_xor_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6582,7 +6582,7 @@ static int ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLE | |
SAVE_OPLINE(); | |
boolean_xor_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -6597,7 +6597,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HAN | |
zval *container; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV TSRMLS_CC); | |
@@ -6612,7 +6612,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HA | |
zval *container; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV TSRMLS_CC); | |
@@ -6646,7 +6646,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV_HANDLER(ZEND_OPC | |
if (IS_CV == IS_UNUSED) { | |
zend_error_noreturn(E_ERROR, "Cannot use [] for reading"); | |
} | |
- container = opline->op1.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV TSRMLS_CC); | |
@@ -6664,7 +6664,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HAN | |
zval *offset; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC); | |
if (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
@@ -6706,7 +6706,7 @@ fetch_obj_r_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -6728,7 +6728,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HA | |
zval *offset; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC); | |
if (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
@@ -6769,7 +6769,7 @@ fetch_obj_is_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -6802,7 +6802,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV_HANDLER(ZEND_OPC | |
if (IS_CONST == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CONST, property, IS_CV, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CONST, property, IS_CV, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
if (IS_CONST == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -6827,17 +6827,17 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEN | |
if (IS_CONST == IS_CONST) { | |
/* no function found. try a static method in class */ | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op1))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op1.var)); | |
@@ -6845,11 +6845,11 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEN | |
if (IS_CONST == IS_CONST && | |
IS_CV == IS_CONST && | |
- CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- fbc = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else if (IS_CONST != IS_CONST && | |
IS_CV == IS_CONST && | |
- (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce))) { | |
+ (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { | |
/* do nothing */ | |
} else if (IS_CV != IS_UNUSED) { | |
@@ -6867,7 +6867,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEN | |
if (ce->get_static_method) { | |
fbc = ce->get_static_method(ce, Z_STR_P(function_name) TSRMLS_CC); | |
} else { | |
- fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
} | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name->val, Z_STRVAL_P(function_name)); | |
@@ -6978,7 +6978,7 @@ static int ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_ | |
} | |
} | |
} else { | |
- zend_error(E_WARNING, "%s() expects parameter 1 to be a valid callback, %s", Z_STRVAL_P(opline->op1.zv), error); | |
+ zend_error(E_WARNING, "%s() expects parameter 1 to be a valid callback, %s", Z_STRVAL_P(EX_CONSTANT(opline->op1)), error); | |
efree(error); | |
func = (zend_function*)&zend_pass_function; | |
called_scope = NULL; | |
@@ -7005,12 +7005,12 @@ static int ZEND_FASTCALL ZEND_CATCH_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_A | |
ZEND_VM_SET_OPCODE(&EX(func)->op_array.opcodes[opline->extended_value]); | |
ZEND_VM_CONTINUE(); /* CHECK_ME */ | |
} | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- catch_ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ catch_ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- catch_ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC); | |
+ catch_ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC); | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), catch_ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), catch_ce); | |
} | |
ce = EG(exception)->ce; | |
@@ -7051,7 +7051,7 @@ static int ZEND_FASTCALL ZEND_CASE_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_AR | |
SAVE_OPLINE(); | |
fast_equal_function(result, | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -7075,7 +7075,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER(ZEND_OPCO | |
Z_ADDREF_P(expr_ptr); | |
} else { | |
- expr_ptr = opline->op1.zv; | |
+ expr_ptr = EX_CONSTANT(opline->op1); | |
if (IS_CONST == IS_TMP_VAR) { | |
ZVAL_COPY_VALUE(&new_expr, expr_ptr); | |
expr_ptr = &new_expr; | |
@@ -7187,7 +7187,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV_HANDLER(ZEND_ | |
zval *offset; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC); | |
isset_dim_obj_again: | |
@@ -7303,7 +7303,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV_HANDLER(ZEND | |
zval *offset; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC); | |
if (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
@@ -7321,7 +7321,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV_HANDLER(ZEND | |
isset_no_object: | |
result = ((opline->extended_value & ZEND_ISSET) == 0); | |
} else { | |
- result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
if ((opline->extended_value & ZEND_ISSET) == 0) { | |
result = !result; | |
} | |
@@ -7362,7 +7362,7 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_A | |
zend_error(E_NOTICE, "Only variable references should be yielded by reference"); | |
- value = opline->op1.zv; | |
+ value = EX_CONSTANT(opline->op1); | |
ZVAL_COPY_VALUE(&generator->value, value); | |
if (Z_OPT_REFCOUNTED(generator->value)) Z_SET_REFCOUNT(generator->value, 1); | |
@@ -7391,7 +7391,7 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_A | |
} | |
} else { | |
- zval *value = opline->op1.zv; | |
+ zval *value = EX_CONSTANT(opline->op1); | |
/* Consts, temporary variables and references need copying */ | |
if (IS_CONST == IS_CONST) { | |
@@ -7471,7 +7471,7 @@ static int ZEND_FASTCALL ZEND_POW_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
SAVE_OPLINE(); | |
pow_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); | |
@@ -7486,7 +7486,7 @@ static int ZEND_FASTCALL ZEND_ADD_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER | |
SAVE_OPLINE(); | |
fast_add_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7501,7 +7501,7 @@ static int ZEND_FASTCALL ZEND_SUB_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER | |
SAVE_OPLINE(); | |
fast_sub_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7516,7 +7516,7 @@ static int ZEND_FASTCALL ZEND_MUL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER | |
SAVE_OPLINE(); | |
fast_mul_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7531,7 +7531,7 @@ static int ZEND_FASTCALL ZEND_DIV_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER | |
SAVE_OPLINE(); | |
fast_div_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7546,7 +7546,7 @@ static int ZEND_FASTCALL ZEND_MOD_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER | |
SAVE_OPLINE(); | |
fast_mod_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7561,7 +7561,7 @@ static int ZEND_FASTCALL ZEND_SL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ | |
SAVE_OPLINE(); | |
shift_left_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7576,7 +7576,7 @@ static int ZEND_FASTCALL ZEND_SR_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ | |
SAVE_OPLINE(); | |
shift_right_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7591,7 +7591,7 @@ static int ZEND_FASTCALL ZEND_CONCAT_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HAND | |
SAVE_OPLINE(); | |
concat_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7607,7 +7607,7 @@ static int ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HA | |
SAVE_OPLINE(); | |
fast_equal_function(result, | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7623,7 +7623,7 @@ static int ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCOD | |
SAVE_OPLINE(); | |
fast_not_equal_function(result, | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7639,7 +7639,7 @@ static int ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_ | |
SAVE_OPLINE(); | |
fast_is_smaller_function(result, | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7655,7 +7655,7 @@ static int ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR_HANDLER(ZEN | |
SAVE_OPLINE(); | |
fast_is_smaller_or_equal_function(result, | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7670,7 +7670,7 @@ static int ZEND_FASTCALL ZEND_BW_OR_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDL | |
SAVE_OPLINE(); | |
bitwise_or_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7685,7 +7685,7 @@ static int ZEND_FASTCALL ZEND_BW_AND_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HAND | |
SAVE_OPLINE(); | |
bitwise_and_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7700,7 +7700,7 @@ static int ZEND_FASTCALL ZEND_BW_XOR_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HAND | |
SAVE_OPLINE(); | |
bitwise_xor_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7715,7 +7715,7 @@ static int ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HA | |
SAVE_OPLINE(); | |
boolean_xor_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7730,7 +7730,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE | |
zval *container; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2), (IS_TMP_VAR|IS_VAR) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7745,7 +7745,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCOD | |
zval *container; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2), (IS_TMP_VAR|IS_VAR) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7779,7 +7779,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER(ZEND | |
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) { | |
zend_error_noreturn(E_ERROR, "Cannot use [] for reading"); | |
} | |
- container = opline->op1.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2), (IS_TMP_VAR|IS_VAR) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -7797,7 +7797,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE | |
zval *offset; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2); | |
if (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
@@ -7839,7 +7839,7 @@ fetch_obj_r_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -7862,7 +7862,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCOD | |
zval *offset; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2); | |
if (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
@@ -7903,7 +7903,7 @@ fetch_obj_is_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -7937,7 +7937,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER(ZEND | |
if (IS_CONST == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CONST, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CONST, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
if (IS_CONST == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -7962,17 +7962,17 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER | |
if (IS_CONST == IS_CONST) { | |
/* no function found. try a static method in class */ | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op1))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op1.var)); | |
@@ -7980,11 +7980,11 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER | |
if (IS_CONST == IS_CONST && | |
(IS_TMP_VAR|IS_VAR) == IS_CONST && | |
- CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- fbc = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else if (IS_CONST != IS_CONST && | |
(IS_TMP_VAR|IS_VAR) == IS_CONST && | |
- (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce))) { | |
+ (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { | |
/* do nothing */ | |
} else if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) { | |
zend_free_op free_op2; | |
@@ -8002,7 +8002,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER | |
if (ce->get_static_method) { | |
fbc = ce->get_static_method(ce, Z_STR_P(function_name) TSRMLS_CC); | |
} else { | |
- fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
} | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name->val, Z_STRVAL_P(function_name)); | |
@@ -8113,7 +8113,7 @@ static int ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPC | |
} | |
} | |
} else { | |
- zend_error(E_WARNING, "%s() expects parameter 1 to be a valid callback, %s", Z_STRVAL_P(opline->op1.zv), error); | |
+ zend_error(E_WARNING, "%s() expects parameter 1 to be a valid callback, %s", Z_STRVAL_P(EX_CONSTANT(opline->op1)), error); | |
efree(error); | |
func = (zend_function*)&zend_pass_function; | |
called_scope = NULL; | |
@@ -8136,7 +8136,7 @@ static int ZEND_FASTCALL ZEND_CASE_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLE | |
SAVE_OPLINE(); | |
fast_equal_function(result, | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -8161,7 +8161,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR_HANDLER(ZEND_ | |
Z_ADDREF_P(expr_ptr); | |
} else { | |
- expr_ptr = opline->op1.zv; | |
+ expr_ptr = EX_CONSTANT(opline->op1); | |
if (IS_CONST == IS_TMP_VAR) { | |
ZVAL_COPY_VALUE(&new_expr, expr_ptr); | |
expr_ptr = &new_expr; | |
@@ -8273,7 +8273,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR_HANDLER(Z | |
zval *offset; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2); | |
isset_dim_obj_again: | |
@@ -8390,7 +8390,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR_HANDLER( | |
zval *offset; | |
SAVE_OPLINE(); | |
- container = opline->op1.zv; | |
+ container = EX_CONSTANT(opline->op1); | |
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2); | |
if (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
@@ -8408,7 +8408,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR_HANDLER( | |
isset_no_object: | |
result = ((opline->extended_value & ZEND_ISSET) == 0); | |
} else { | |
- result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
if ((opline->extended_value & ZEND_ISSET) == 0) { | |
result = !result; | |
} | |
@@ -8428,7 +8428,7 @@ static int ZEND_FASTCALL ZEND_POW_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER | |
SAVE_OPLINE(); | |
pow_function(EX_VAR(opline->result.var), | |
- opline->op1.zv, | |
+ EX_CONSTANT(opline->op1), | |
_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
@@ -8861,7 +8861,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
if (IS_TMP_VAR == IS_VAR && opline->extended_value & ZEND_FE_FETCH_BYREF) { | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
p = fe_ht->arData + pos; | |
if (Z_TYPE(p->val) == IS_UNDEF || | |
@@ -8892,7 +8892,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
} | |
if (is_empty) { | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
@@ -8936,7 +8936,7 @@ static int ZEND_FASTCALL ZEND_JMP_SET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS | |
if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value); | |
zval_ptr_dtor_nogc(free_op1); | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
zval_ptr_dtor_nogc(free_op1); | |
@@ -8971,7 +8971,7 @@ static int ZEND_FASTCALL ZEND_COALESCE_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value); | |
zval_ptr_dtor_nogc(free_op1); | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
zval_ptr_dtor_nogc(free_op1); | |
@@ -9059,7 +9059,7 @@ static int ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_H | |
SAVE_OPLINE(); | |
fast_is_identical_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -9075,7 +9075,7 @@ static int ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCO | |
SAVE_OPLINE(); | |
fast_is_not_identical_function(result, | |
_get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -9098,7 +9098,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST_HANDLER(ZEND_OP | |
if (IS_TMP_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
if (IS_TMP_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
} | |
@@ -9109,7 +9109,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST_HANDLER(ZEND_OP | |
zend_error_noreturn(E_ERROR, "Cannot use [] for reading"); | |
} | |
container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1); | |
- zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
} | |
@@ -9127,7 +9127,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HA | |
SAVE_OPLINE(); | |
container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1); | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
if (IS_TMP_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) { | |
@@ -9168,7 +9168,7 @@ fetch_obj_r_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -9192,7 +9192,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST_HANDLER(ZEND_OP | |
zval *property; | |
SAVE_OPLINE(); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
container = NULL; | |
if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR) { | |
@@ -9201,7 +9201,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST_HANDLER(ZEND_OP | |
if (IS_TMP_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_TMP_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_TMP_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
if (IS_TMP_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -9226,7 +9226,7 @@ static int ZEND_FASTCALL ZEND_ADD_CHAR_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDL | |
ZVAL_EMPTY_STRING(str); | |
} | |
- add_char_to_string(str, str, opline->op2.zv); | |
+ add_char_to_string(str, str, EX_CONSTANT(opline->op2)); | |
/* FREE_OP is missing intentionally here - we're always working on the same temporary variable */ | |
/*CHECK_EXCEPTION();*/ | |
@@ -9245,7 +9245,7 @@ static int ZEND_FASTCALL ZEND_ADD_STRING_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HAN | |
ZVAL_EMPTY_STRING(str); | |
} | |
- add_string_to_string(str, str, opline->op2.zv); | |
+ add_string_to_string(str, str, EX_CONSTANT(opline->op2)); | |
/* FREE_OP is missing intentionally here - we're always working on the same temporary variable */ | |
/*CHECK_EXCEPTION();*/ | |
@@ -9289,7 +9289,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER(ZEND_OPC | |
if (IS_CONST != IS_UNUSED) { | |
- zval *offset = opline->op2.zv; | |
+ zval *offset = EX_CONSTANT(opline->op2); | |
zend_string *str; | |
zend_ulong hval; | |
@@ -9454,7 +9454,7 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ | |
/* Set the new yielded key */ | |
if (IS_CONST != IS_UNUSED) { | |
- zval *key = opline->op2.zv; | |
+ zval *key = EX_CONSTANT(opline->op2); | |
/* Consts, temporary variables and references need copying */ | |
if (IS_CONST == IS_CONST) { | |
@@ -10228,7 +10228,7 @@ fetch_obj_r_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -10261,7 +10261,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV_HANDLER(ZEND_OPCOD | |
if (IS_TMP_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_TMP_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_TMP_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
if (IS_TMP_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -10650,7 +10650,7 @@ fetch_obj_r_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -10684,7 +10684,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER(ZEND_O | |
if (IS_TMP_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_TMP_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_TMP_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
if (IS_TMP_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -11351,15 +11351,15 @@ static int ZEND_FASTCALL ZEND_NEW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
SAVE_OPLINE(); | |
if (IS_VAR == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op1.var)); | |
@@ -11382,7 +11382,7 @@ static int ZEND_FASTCALL ZEND_NEW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
} else { | |
OBJ_RELEASE(Z_OBJ(object_zval)); | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
/* We are not handling overloaded classes right now */ | |
EX(call) = zend_vm_stack_push_call_frame( | |
@@ -11664,7 +11664,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
if (IS_VAR == IS_VAR && opline->extended_value & ZEND_FE_FETCH_BYREF) { | |
if (free_op1) {zval_ptr_dtor_nogc(free_op1);}; | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
p = fe_ht->arData + pos; | |
if (Z_TYPE(p->val) == IS_UNDEF || | |
@@ -11695,7 +11695,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
if (free_op1) {zval_ptr_dtor_nogc(free_op1);}; | |
} | |
if (is_empty) { | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
@@ -11730,7 +11730,7 @@ static int ZEND_FASTCALL ZEND_FE_FETCH_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
pos = ptr->pos; | |
if (UNEXPECTED(pos == INVALID_IDX)) { | |
/* reached end of iteration */ | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else if (UNEXPECTED(ptr->ht != fe_ht)) { | |
ptr->ht = fe_ht; | |
pos = 0; | |
@@ -11753,7 +11753,7 @@ static int ZEND_FASTCALL ZEND_FE_FETCH_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
while (1) { | |
if (UNEXPECTED(pos >= fe_ht->nNumUsed)) { | |
/* reached end of iteration */ | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
p = fe_ht->arData + pos; | |
value = &p->val; | |
@@ -11811,7 +11811,7 @@ static int ZEND_FASTCALL ZEND_FE_FETCH_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
pos = ptr->pos; | |
if (pos == INVALID_IDX) { | |
/* reached end of iteration */ | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else if (UNEXPECTED(ptr->ht != fe_ht)) { | |
ptr->ht = fe_ht; | |
pos = 0; | |
@@ -11834,7 +11834,7 @@ static int ZEND_FASTCALL ZEND_FE_FETCH_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
while (1) { | |
if (UNEXPECTED(pos >= fe_ht->nNumUsed)) { | |
/* reached end of iteration */ | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
p = fe_ht->arData + pos; | |
@@ -11914,7 +11914,7 @@ static int ZEND_FASTCALL ZEND_FE_FETCH_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
zval_ptr_dtor(array_ref); | |
HANDLE_EXCEPTION(); | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
value = iter->funcs->get_current_data(iter TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
@@ -11923,7 +11923,7 @@ static int ZEND_FASTCALL ZEND_FE_FETCH_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
} | |
if (!value) { | |
/* failure in get_current_data */ | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
if (opline->extended_value & ZEND_FE_FETCH_BYREF) { | |
ZVAL_MAKE_REF(value); | |
@@ -11948,7 +11948,7 @@ static int ZEND_FASTCALL ZEND_FE_FETCH_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
} | |
} else { | |
zend_error(E_WARNING, "Invalid argument supplied for foreach()"); | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
} | |
@@ -11978,7 +11978,7 @@ static int ZEND_FASTCALL ZEND_JMP_SET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS | |
if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value); | |
zval_ptr_dtor_nogc(free_op1); | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
zval_ptr_dtor_nogc(free_op1); | |
@@ -12013,7 +12013,7 @@ static int ZEND_FASTCALL ZEND_COALESCE_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value); | |
zval_ptr_dtor_nogc(free_op1); | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
zval_ptr_dtor_nogc(free_op1); | |
@@ -12101,7 +12101,7 @@ static int ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_H | |
SAVE_OPLINE(); | |
fast_is_identical_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -12117,7 +12117,7 @@ static int ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCO | |
SAVE_OPLINE(); | |
fast_is_not_identical_function(result, | |
_get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -12129,7 +12129,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(int (*b | |
USE_OPLINE | |
zend_free_op free_op1, free_op_data1; | |
zval *object = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1); | |
- zval *property = opline->op2.zv; | |
+ zval *property = EX_CONSTANT(opline->op2); | |
zval *value; | |
zval *zptr; | |
@@ -12152,7 +12152,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(int (*b | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -12166,7 +12166,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(int (*b | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && | |
- (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
+ (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC); | |
@@ -12179,7 +12179,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(int (*b | |
ZVAL_DEREF(z); | |
SEPARATE_ZVAL_NOREF(z); | |
binary_op(z, z, value TSRMLS_CC); | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(EX_VAR(opline->result.var), z); | |
} | |
@@ -12213,7 +12213,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(int (*b | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- dim = opline->op2.zv; | |
+ dim = EX_CONSTANT(opline->op2); | |
do { | |
if (IS_VAR == IS_UNUSED || UNEXPECTED(Z_TYPE_P(container) != IS_ARRAY)) { | |
@@ -12269,7 +12269,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_helper_SPEC_VAR_CONST(int (*binar | |
zval *value; | |
SAVE_OPLINE(); | |
- value = opline->op2.zv; | |
+ value = EX_CONSTANT(opline->op2); | |
var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1); | |
if (IS_VAR == IS_VAR && UNEXPECTED(var_ptr == NULL)) { | |
@@ -12527,7 +12527,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_CONST(incdec_t | |
SAVE_OPLINE(); | |
object = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
retval = EX_VAR(opline->result.var); | |
if (IS_VAR == IS_VAR && UNEXPECTED(object == NULL)) { | |
@@ -12548,7 +12548,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_CONST(incdec_t | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -12561,7 +12561,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_CONST(incdec_t | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
@@ -12578,7 +12578,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_CONST(incdec_t | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(retval, z); | |
} | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(z); | |
} else { | |
zend_error(E_WARNING, "Attempt to increment/decrement property of non-object"); | |
@@ -12615,7 +12615,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_CONST(incdec_ | |
SAVE_OPLINE(); | |
object = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
retval = EX_VAR(opline->result.var); | |
if (IS_VAR == IS_VAR && UNEXPECTED(object == NULL)) { | |
@@ -12634,7 +12634,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_CONST(incdec_ | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
ZVAL_COPY_VALUE(retval, zptr); | |
@@ -12644,7 +12644,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_CONST(incdec_ | |
} else { | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
zval rv; | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
zval z_copy; | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
@@ -12660,7 +12660,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_CONST(incdec_ | |
ZVAL_DUP(&z_copy, z); | |
incdec_op(&z_copy); | |
if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z); | |
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(&z_copy); | |
zval_ptr_dtor(z); | |
} else { | |
@@ -12697,7 +12697,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HA | |
if (IS_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -12719,7 +12719,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_H | |
if (IS_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_fetch_dimension_address_RW(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ zend_fetch_dimension_address_RW(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -12745,7 +12745,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OP | |
if (IS_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
} | |
@@ -12756,7 +12756,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OP | |
zend_error_noreturn(E_ERROR, "Cannot use [] for reading"); | |
} | |
container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1); | |
- zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
} | |
@@ -12776,7 +12776,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCOD | |
if (IS_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_fetch_dimension_address_UNSET(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ zend_fetch_dimension_address_UNSET(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -12796,7 +12796,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HA | |
SAVE_OPLINE(); | |
container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1); | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) { | |
@@ -12837,7 +12837,7 @@ fetch_obj_r_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -12858,14 +12858,14 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HA | |
zval *container; | |
SAVE_OPLINE(); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
container = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1); | |
if (IS_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -12883,13 +12883,13 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_H | |
zval *container; | |
SAVE_OPLINE(); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
container = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1); | |
if (IS_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -12910,7 +12910,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OP | |
zval *property; | |
SAVE_OPLINE(); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
container = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1); | |
if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR) { | |
@@ -12919,7 +12919,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OP | |
if (IS_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -12940,12 +12940,12 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCOD | |
SAVE_OPLINE(); | |
container = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
if (IS_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -12964,12 +12964,12 @@ static int ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HAN | |
SAVE_OPLINE(); | |
object = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1); | |
- property_name = opline->op2.zv; | |
+ property_name = EX_CONSTANT(opline->op2); | |
if (IS_VAR == IS_VAR && UNEXPECTED(object == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_VAR, property_name, IS_CONST, (opline+1)->op1_type, (opline+1)->op1, execute_data, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
+ zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_VAR, property_name, IS_CONST, (opline+1)->op1_type, (opline+1)->op1, execute_data, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
if (free_op1) {zval_ptr_dtor_nogc(free_op1);}; | |
/* assign_obj has two opcodes! */ | |
@@ -12999,7 +12999,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HAN | |
try_assign_dim: | |
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) { | |
try_assign_dim_array: | |
- dim = opline->op2.zv; | |
+ dim = EX_CONSTANT(opline->op2); | |
zend_fetch_dimension_address_W(&rv, object_ptr, dim, IS_CONST TSRMLS_CC); | |
value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R); | |
@@ -13021,14 +13021,14 @@ try_assign_dim_array: | |
} | |
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { | |
- zval *property_name = opline->op2.zv; | |
+ zval *property_name = EX_CONSTANT(opline->op2); | |
zend_assign_to_object_dim(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object_ptr, property_name, (opline+1)->op1_type, (opline+1)->op1, execute_data TSRMLS_CC); | |
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING) && | |
EXPECTED(Z_STRLEN_P(object_ptr) != 0)) { | |
- dim = opline->op2.zv; | |
+ dim = EX_CONSTANT(opline->op2); | |
zend_long offset = zend_fetch_string_offset(object_ptr, dim, BP_VAR_W TSRMLS_CC); | |
value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R); | |
@@ -13055,7 +13055,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER | |
zval *variable_ptr; | |
SAVE_OPLINE(); | |
- value = opline->op2.zv; | |
+ value = EX_CONSTANT(opline->op2); | |
variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1); | |
if (IS_VAR == IS_VAR && UNEXPECTED(variable_ptr == &EG(error_zval))) { | |
@@ -13091,17 +13091,17 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZE | |
if (IS_VAR == IS_CONST) { | |
/* no function found. try a static method in class */ | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op1))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op1.var)); | |
@@ -13109,16 +13109,16 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZE | |
if (IS_VAR == IS_CONST && | |
IS_CONST == IS_CONST && | |
- CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- fbc = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else if (IS_VAR != IS_CONST && | |
IS_CONST == IS_CONST && | |
- (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce))) { | |
+ (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { | |
/* do nothing */ | |
} else if (IS_CONST != IS_UNUSED) { | |
- function_name = opline->op2.zv; | |
+ function_name = EX_CONSTANT(opline->op2); | |
if (IS_CONST != IS_CONST) { | |
if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
@@ -13131,7 +13131,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZE | |
if (ce->get_static_method) { | |
fbc = ce->get_static_method(ce, Z_STR_P(function_name) TSRMLS_CC); | |
} else { | |
- fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
} | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name->val, Z_STRVAL_P(function_name)); | |
@@ -13212,17 +13212,17 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE | |
zend_constant *c; | |
zval *retval; | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- c = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
- } else if ((c = zend_quick_get_constant(opline->op2.zv + 1, opline->extended_value TSRMLS_CC)) == NULL) { | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ c = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
+ } else if ((c = zend_quick_get_constant(EX_CONSTANT(opline->op2) + 1, opline->extended_value TSRMLS_CC)) == NULL) { | |
if ((opline->extended_value & IS_CONSTANT_UNQUALIFIED) != 0) { | |
- char *actual = (char *)zend_memrchr(Z_STRVAL_P(opline->op2.zv), '\\', Z_STRLEN_P(opline->op2.zv)); | |
+ char *actual = (char *)zend_memrchr(Z_STRVAL_P(EX_CONSTANT(opline->op2)), '\\', Z_STRLEN_P(EX_CONSTANT(opline->op2))); | |
if (!actual) { | |
- ZVAL_STR(EX_VAR(opline->result.var), zend_string_copy(Z_STR_P(opline->op2.zv))); | |
+ ZVAL_STR(EX_VAR(opline->result.var), zend_string_copy(Z_STR_P(EX_CONSTANT(opline->op2)))); | |
} else { | |
actual++; | |
ZVAL_STRINGL(EX_VAR(opline->result.var), | |
- actual, Z_STRLEN_P(opline->op2.zv) - (actual - Z_STRVAL_P(opline->op2.zv))); | |
+ actual, Z_STRLEN_P(EX_CONSTANT(opline->op2)) - (actual - Z_STRVAL_P(EX_CONSTANT(opline->op2)))); | |
} | |
/* non-qualified constant - allow text substitution */ | |
zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'", | |
@@ -13230,10 +13230,10 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} else { | |
- zend_error_noreturn(E_ERROR, "Undefined constant '%s'", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Undefined constant '%s'", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
} else { | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), c); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), c); | |
} | |
retval = EX_VAR(opline->result.var); | |
ZVAL_COPY_VALUE(retval, &c->value); | |
@@ -13250,33 +13250,33 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE | |
zval *value; | |
if (IS_VAR == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- value = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
ZVAL_DEREF(value); | |
ZVAL_DUP(EX_VAR(opline->result.var), value); | |
goto constant_fetch_end; | |
- } else if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ } else if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op1))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op1.var)); | |
- if ((value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce)) != NULL) { | |
+ if ((value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce)) != NULL) { | |
ZVAL_DEREF(value); | |
ZVAL_DUP(EX_VAR(opline->result.var), value); | |
goto constant_fetch_end; | |
} | |
} | |
- if (EXPECTED((value = zend_hash_find(&ce->constants_table, Z_STR_P(opline->op2.zv))) != NULL)) { | |
+ if (EXPECTED((value = zend_hash_find(&ce->constants_table, Z_STR_P(EX_CONSTANT(opline->op2)))) != NULL)) { | |
ZVAL_DEREF(value); | |
if (Z_CONSTANT_P(value)) { | |
EG(scope) = ce; | |
@@ -13284,16 +13284,16 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE | |
EG(scope) = EX(func)->op_array.scope; | |
} | |
if (IS_VAR == IS_CONST) { | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), value); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), value); | |
} else { | |
- CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce, value); | |
+ CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce, value); | |
} | |
ZVAL_DUP(EX_VAR(opline->result.var), value); | |
- } else if (Z_STRLEN_P(opline->op2.zv) == sizeof("class")-1 && memcmp(Z_STRVAL_P(opline->op2.zv), "class", sizeof("class") - 1) == 0) { | |
+ } else if (Z_STRLEN_P(EX_CONSTANT(opline->op2)) == sizeof("class")-1 && memcmp(Z_STRVAL_P(EX_CONSTANT(opline->op2)), "class", sizeof("class") - 1) == 0) { | |
/* "class" is assigned as a case-sensitive keyword from zend_do_resolve_class_name */ | |
ZVAL_STR_COPY(EX_VAR(opline->result.var), ce->name); | |
} else { | |
- zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
} | |
constant_fetch_end: | |
@@ -13338,7 +13338,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER(ZEND_OPC | |
if (IS_CONST != IS_UNUSED) { | |
- zval *offset = opline->op2.zv; | |
+ zval *offset = EX_CONSTANT(opline->op2); | |
zend_string *str; | |
zend_ulong hval; | |
@@ -13433,7 +13433,7 @@ static int ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HAND | |
if (IS_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot unset string offsets"); | |
} | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
unset_dim_again: | |
if (IS_VAR != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) { | |
@@ -13520,7 +13520,7 @@ static int ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HAND | |
if (IS_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot unset string offsets"); | |
} | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
do { | |
if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
@@ -13534,7 +13534,7 @@ static int ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HAND | |
} | |
} | |
if (Z_OBJ_HT_P(container)->unset_property) { | |
- Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
} else { | |
zend_error(E_NOTICE, "Trying to unset property of non-object"); | |
} | |
@@ -13629,7 +13629,7 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ | |
/* Set the new yielded key */ | |
if (IS_CONST != IS_UNUSED) { | |
- zval *key = opline->op2.zv; | |
+ zval *key = EX_CONSTANT(opline->op2); | |
/* Consts, temporary variables and references need copying */ | |
if (IS_CONST == IS_CONST) { | |
@@ -14579,17 +14579,17 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER(Z | |
if (IS_VAR == IS_CONST) { | |
/* no function found. try a static method in class */ | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op1))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op1.var)); | |
@@ -14597,11 +14597,11 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER(Z | |
if (IS_VAR == IS_CONST && | |
IS_UNUSED == IS_CONST && | |
- CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- fbc = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else if (IS_VAR != IS_CONST && | |
IS_UNUSED == IS_CONST && | |
- (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce))) { | |
+ (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { | |
/* do nothing */ | |
} else if (IS_UNUSED != IS_UNUSED) { | |
@@ -14619,7 +14619,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER(Z | |
if (ce->get_static_method) { | |
fbc = ce->get_static_method(ce, Z_STR_P(function_name) TSRMLS_CC); | |
} else { | |
- fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
} | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name->val, Z_STRVAL_P(function_name)); | |
@@ -15019,7 +15019,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_CV(int (*bina | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -15033,7 +15033,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_CV(int (*bina | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && | |
- (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
+ (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC); | |
@@ -15046,7 +15046,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_CV(int (*bina | |
ZVAL_DEREF(z); | |
SEPARATE_ZVAL_NOREF(z); | |
binary_op(z, z, value TSRMLS_CC); | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(EX_VAR(opline->result.var), z); | |
} | |
@@ -15415,7 +15415,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_CV(incdec_t in | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -15428,7 +15428,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_CV(incdec_t in | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
@@ -15445,7 +15445,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_CV(incdec_t in | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(retval, z); | |
} | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(z); | |
} else { | |
zend_error(E_WARNING, "Attempt to increment/decrement property of non-object"); | |
@@ -15501,7 +15501,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_CV(incdec_t i | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
ZVAL_COPY_VALUE(retval, zptr); | |
@@ -15511,7 +15511,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_CV(incdec_t i | |
} else { | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
zval rv; | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
zval z_copy; | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
@@ -15527,7 +15527,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_CV(incdec_t i | |
ZVAL_DUP(&z_copy, z); | |
incdec_op(&z_copy); | |
if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z); | |
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(&z_copy); | |
zval_ptr_dtor(z); | |
} else { | |
@@ -15704,7 +15704,7 @@ fetch_obj_r_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -15732,7 +15732,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDL | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -15756,7 +15756,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HAND | |
if (IS_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -15786,7 +15786,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV_HANDLER(ZEND_OPCOD | |
if (IS_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -15812,7 +15812,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_H | |
if (IS_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -15836,7 +15836,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLE | |
if (IS_VAR == IS_VAR && UNEXPECTED(object == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_VAR, property_name, IS_CV, (opline+1)->op1_type, (opline+1)->op1, execute_data, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
+ zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_VAR, property_name, IS_CV, (opline+1)->op1_type, (opline+1)->op1, execute_data, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
if (free_op1) {zval_ptr_dtor_nogc(free_op1);}; | |
/* assign_obj has two opcodes! */ | |
@@ -16022,17 +16022,17 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_ | |
if (IS_VAR == IS_CONST) { | |
/* no function found. try a static method in class */ | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op1))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op1.var)); | |
@@ -16040,11 +16040,11 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_ | |
if (IS_VAR == IS_CONST && | |
IS_CV == IS_CONST && | |
- CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- fbc = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else if (IS_VAR != IS_CONST && | |
IS_CV == IS_CONST && | |
- (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce))) { | |
+ (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { | |
/* do nothing */ | |
} else if (IS_CV != IS_UNUSED) { | |
@@ -16062,7 +16062,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_ | |
if (ce->get_static_method) { | |
fbc = ce->get_static_method(ce, Z_STR_P(function_name) TSRMLS_CC); | |
} else { | |
- fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
} | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name->val, Z_STRVAL_P(function_name)); | |
@@ -16367,7 +16367,7 @@ static int ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER | |
} | |
} | |
if (Z_OBJ_HT_P(container)->unset_property) { | |
- Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
} else { | |
zend_error(E_NOTICE, "Trying to unset property of non-object"); | |
} | |
@@ -16543,7 +16543,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_TMPVAR(int (* | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -16557,7 +16557,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_TMPVAR(int (* | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && | |
- (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
+ (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC); | |
@@ -16570,7 +16570,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_TMPVAR(int (* | |
ZVAL_DEREF(z); | |
SEPARATE_ZVAL_NOREF(z); | |
binary_op(z, z, value TSRMLS_CC); | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(EX_VAR(opline->result.var), z); | |
} | |
@@ -16941,7 +16941,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_TMPVAR(incdec_ | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -16954,7 +16954,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_TMPVAR(incdec_ | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
@@ -16971,7 +16971,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_TMPVAR(incdec_ | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(retval, z); | |
} | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(z); | |
} else { | |
zend_error(E_WARNING, "Attempt to increment/decrement property of non-object"); | |
@@ -17028,7 +17028,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_TMPVAR(incdec | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
ZVAL_COPY_VALUE(retval, zptr); | |
@@ -17038,7 +17038,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_TMPVAR(incdec | |
} else { | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
zval rv; | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
zval z_copy; | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
@@ -17054,7 +17054,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_TMPVAR(incdec | |
ZVAL_DUP(&z_copy, z); | |
incdec_op(&z_copy); | |
if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z); | |
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(&z_copy); | |
zval_ptr_dtor(z); | |
} else { | |
@@ -17232,7 +17232,7 @@ fetch_obj_r_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -17261,7 +17261,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_H | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -17285,7 +17285,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_ | |
if (IS_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -17315,7 +17315,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR_HANDLER(ZEND_O | |
if (IS_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -17341,7 +17341,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCO | |
if (IS_VAR == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -17365,7 +17365,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HA | |
if (IS_VAR == IS_VAR && UNEXPECTED(object == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_VAR, property_name, (IS_TMP_VAR|IS_VAR), (opline+1)->op1_type, (opline+1)->op1, execute_data, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
+ zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_VAR, property_name, (IS_TMP_VAR|IS_VAR), (opline+1)->op1_type, (opline+1)->op1, execute_data, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
if (free_op1) {zval_ptr_dtor_nogc(free_op1);}; | |
/* assign_obj has two opcodes! */ | |
@@ -17455,17 +17455,17 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR_HANDLER(Z | |
if (IS_VAR == IS_CONST) { | |
/* no function found. try a static method in class */ | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op1))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op1.var)); | |
@@ -17473,11 +17473,11 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR_HANDLER(Z | |
if (IS_VAR == IS_CONST && | |
(IS_TMP_VAR|IS_VAR) == IS_CONST && | |
- CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- fbc = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else if (IS_VAR != IS_CONST && | |
(IS_TMP_VAR|IS_VAR) == IS_CONST && | |
- (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce))) { | |
+ (fbc = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce))) { | |
/* do nothing */ | |
} else if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) { | |
zend_free_op free_op2; | |
@@ -17495,7 +17495,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR_HANDLER(Z | |
if (ce->get_static_method) { | |
fbc = ce->get_static_method(ce, Z_STR_P(function_name) TSRMLS_CC); | |
} else { | |
- fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
} | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name->val, Z_STRVAL_P(function_name)); | |
@@ -17800,7 +17800,7 @@ static int ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HAN | |
} | |
} | |
if (Z_OBJ_HT_P(container)->unset_property) { | |
- Z_OBJ_HT_P(container)->unset_property(container, offset, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(container)->unset_property(container, offset, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
} else { | |
zend_error(E_NOTICE, "Trying to unset property of non-object"); | |
} | |
@@ -17919,7 +17919,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CONST(int | |
USE_OPLINE | |
zend_free_op free_op_data1; | |
zval *object = _get_obj_zval_ptr_unused(execute_data); | |
- zval *property = opline->op2.zv; | |
+ zval *property = EX_CONSTANT(opline->op2); | |
zval *value; | |
zval *zptr; | |
@@ -17942,7 +17942,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CONST(int | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -17956,7 +17956,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CONST(int | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && | |
- (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
+ (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC); | |
@@ -17969,7 +17969,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CONST(int | |
ZVAL_DEREF(z); | |
SEPARATE_ZVAL_NOREF(z); | |
binary_op(z, z, value TSRMLS_CC); | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(EX_VAR(opline->result.var), z); | |
} | |
@@ -18002,7 +18002,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_UNUSED_CONST(int | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- dim = opline->op2.zv; | |
+ dim = EX_CONSTANT(opline->op2); | |
do { | |
if (IS_UNUSED == IS_UNUSED || UNEXPECTED(Z_TYPE_P(container) != IS_ARRAY)) { | |
@@ -18281,7 +18281,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_CONST(incde | |
SAVE_OPLINE(); | |
object = _get_obj_zval_ptr_unused(execute_data); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
retval = EX_VAR(opline->result.var); | |
if (IS_UNUSED == IS_VAR && UNEXPECTED(object == NULL)) { | |
@@ -18302,7 +18302,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_CONST(incde | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -18315,7 +18315,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_CONST(incde | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
@@ -18332,7 +18332,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_CONST(incde | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(retval, z); | |
} | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(z); | |
} else { | |
zend_error(E_WARNING, "Attempt to increment/decrement property of non-object"); | |
@@ -18369,7 +18369,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_CONST(incd | |
SAVE_OPLINE(); | |
object = _get_obj_zval_ptr_unused(execute_data); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
retval = EX_VAR(opline->result.var); | |
if (IS_UNUSED == IS_VAR && UNEXPECTED(object == NULL)) { | |
@@ -18388,7 +18388,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_CONST(incd | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
ZVAL_COPY_VALUE(retval, zptr); | |
@@ -18398,7 +18398,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_CONST(incd | |
} else { | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
zval rv; | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
zval z_copy; | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
@@ -18414,7 +18414,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_CONST(incd | |
ZVAL_DUP(&z_copy, z); | |
incdec_op(&z_copy); | |
if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z); | |
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(&z_copy); | |
zval_ptr_dtor(z); | |
} else { | |
@@ -18449,7 +18449,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE | |
SAVE_OPLINE(); | |
container = _get_obj_zval_ptr_unused(execute_data); | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) { | |
@@ -18490,7 +18490,7 @@ fetch_obj_r_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -18511,14 +18511,14 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE | |
zval *container; | |
SAVE_OPLINE(); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
container = _get_obj_zval_ptr_unused(execute_data); | |
if (IS_UNUSED == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -18536,13 +18536,13 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCOD | |
zval *container; | |
SAVE_OPLINE(); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
container = _get_obj_zval_ptr_unused(execute_data); | |
if (IS_UNUSED == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -18562,7 +18562,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCOD | |
SAVE_OPLINE(); | |
container = _get_obj_zval_ptr_unused(execute_data); | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) { | |
@@ -18602,7 +18602,7 @@ fetch_obj_is_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -18626,7 +18626,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER(ZEND | |
zval *property; | |
SAVE_OPLINE(); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
container = _get_obj_zval_ptr_unused(execute_data); | |
if (IS_UNUSED == IS_CONST || IS_UNUSED == IS_TMP_VAR) { | |
@@ -18635,7 +18635,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER(ZEND | |
if (IS_UNUSED == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -18656,12 +18656,12 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST_HANDLER(ZEND_OP | |
SAVE_OPLINE(); | |
container = _get_obj_zval_ptr_unused(execute_data); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
if (IS_UNUSED == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -18680,12 +18680,12 @@ static int ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_ | |
SAVE_OPLINE(); | |
object = _get_obj_zval_ptr_unused(execute_data); | |
- property_name = opline->op2.zv; | |
+ property_name = EX_CONSTANT(opline->op2); | |
if (IS_UNUSED == IS_VAR && UNEXPECTED(object == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_UNUSED, property_name, IS_CONST, (opline+1)->op1_type, (opline+1)->op1, execute_data, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
+ zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_UNUSED, property_name, IS_CONST, (opline+1)->op1_type, (opline+1)->op1, execute_data, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
/* assign_obj has two opcodes! */ | |
@@ -18706,7 +18706,7 @@ static int ZEND_FASTCALL ZEND_ADD_CHAR_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HA | |
ZVAL_EMPTY_STRING(str); | |
} | |
- add_char_to_string(str, str, opline->op2.zv); | |
+ add_char_to_string(str, str, EX_CONSTANT(opline->op2)); | |
/* FREE_OP is missing intentionally here - we're always working on the same temporary variable */ | |
/*CHECK_EXCEPTION();*/ | |
@@ -18725,7 +18725,7 @@ static int ZEND_FASTCALL ZEND_ADD_STRING_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_ | |
ZVAL_EMPTY_STRING(str); | |
} | |
- add_string_to_string(str, str, opline->op2.zv); | |
+ add_string_to_string(str, str, EX_CONSTANT(opline->op2)); | |
/* FREE_OP is missing intentionally here - we're always working on the same temporary variable */ | |
/*CHECK_EXCEPTION();*/ | |
@@ -18744,7 +18744,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_O | |
SAVE_OPLINE(); | |
- function_name = opline->op2.zv; | |
+ function_name = EX_CONSTANT(opline->op2); | |
if (IS_CONST != IS_CONST && | |
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { | |
@@ -18821,7 +18821,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_O | |
} | |
/* First, locate the function. */ | |
- fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", obj->ce->name->val, Z_STRVAL_P(function_name)); | |
} | |
@@ -18856,17 +18856,17 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPC | |
zend_constant *c; | |
zval *retval; | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- c = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
- } else if ((c = zend_quick_get_constant(opline->op2.zv + 1, opline->extended_value TSRMLS_CC)) == NULL) { | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ c = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
+ } else if ((c = zend_quick_get_constant(EX_CONSTANT(opline->op2) + 1, opline->extended_value TSRMLS_CC)) == NULL) { | |
if ((opline->extended_value & IS_CONSTANT_UNQUALIFIED) != 0) { | |
- char *actual = (char *)zend_memrchr(Z_STRVAL_P(opline->op2.zv), '\\', Z_STRLEN_P(opline->op2.zv)); | |
+ char *actual = (char *)zend_memrchr(Z_STRVAL_P(EX_CONSTANT(opline->op2)), '\\', Z_STRLEN_P(EX_CONSTANT(opline->op2))); | |
if (!actual) { | |
- ZVAL_STR(EX_VAR(opline->result.var), zend_string_copy(Z_STR_P(opline->op2.zv))); | |
+ ZVAL_STR(EX_VAR(opline->result.var), zend_string_copy(Z_STR_P(EX_CONSTANT(opline->op2)))); | |
} else { | |
actual++; | |
ZVAL_STRINGL(EX_VAR(opline->result.var), | |
- actual, Z_STRLEN_P(opline->op2.zv) - (actual - Z_STRVAL_P(opline->op2.zv))); | |
+ actual, Z_STRLEN_P(EX_CONSTANT(opline->op2)) - (actual - Z_STRVAL_P(EX_CONSTANT(opline->op2)))); | |
} | |
/* non-qualified constant - allow text substitution */ | |
zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'", | |
@@ -18874,10 +18874,10 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPC | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} else { | |
- zend_error_noreturn(E_ERROR, "Undefined constant '%s'", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Undefined constant '%s'", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
} else { | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), c); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), c); | |
} | |
retval = EX_VAR(opline->result.var); | |
ZVAL_COPY_VALUE(retval, &c->value); | |
@@ -18894,33 +18894,33 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPC | |
zval *value; | |
if (IS_UNUSED == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- value = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
ZVAL_DEREF(value); | |
ZVAL_DUP(EX_VAR(opline->result.var), value); | |
goto constant_fetch_end; | |
- } else if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); | |
+ } else if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op1.zv), opline->op1.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op1))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op1.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op1.var)); | |
- if ((value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce)) != NULL) { | |
+ if ((value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce)) != NULL) { | |
ZVAL_DEREF(value); | |
ZVAL_DUP(EX_VAR(opline->result.var), value); | |
goto constant_fetch_end; | |
} | |
} | |
- if (EXPECTED((value = zend_hash_find(&ce->constants_table, Z_STR_P(opline->op2.zv))) != NULL)) { | |
+ if (EXPECTED((value = zend_hash_find(&ce->constants_table, Z_STR_P(EX_CONSTANT(opline->op2)))) != NULL)) { | |
ZVAL_DEREF(value); | |
if (Z_CONSTANT_P(value)) { | |
EG(scope) = ce; | |
@@ -18928,16 +18928,16 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPC | |
EG(scope) = EX(func)->op_array.scope; | |
} | |
if (IS_UNUSED == IS_CONST) { | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), value); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), value); | |
} else { | |
- CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce, value); | |
+ CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce, value); | |
} | |
ZVAL_DUP(EX_VAR(opline->result.var), value); | |
- } else if (Z_STRLEN_P(opline->op2.zv) == sizeof("class")-1 && memcmp(Z_STRVAL_P(opline->op2.zv), "class", sizeof("class") - 1) == 0) { | |
+ } else if (Z_STRLEN_P(EX_CONSTANT(opline->op2)) == sizeof("class")-1 && memcmp(Z_STRVAL_P(EX_CONSTANT(opline->op2)), "class", sizeof("class") - 1) == 0) { | |
/* "class" is assigned as a case-sensitive keyword from zend_do_resolve_class_name */ | |
ZVAL_STR_COPY(EX_VAR(opline->result.var), ce->name); | |
} else { | |
- zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
} | |
constant_fetch_end: | |
@@ -18989,7 +18989,7 @@ static int ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_H | |
if (IS_UNUSED == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot unset string offsets"); | |
} | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
unset_dim_again: | |
if (IS_UNUSED != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) { | |
@@ -19076,7 +19076,7 @@ static int ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_H | |
if (IS_UNUSED == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot unset string offsets"); | |
} | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
do { | |
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
@@ -19090,7 +19090,7 @@ static int ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_H | |
} | |
} | |
if (Z_OBJ_HT_P(container)->unset_property) { | |
- Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
} else { | |
zend_error(E_NOTICE, "Trying to unset property of non-object"); | |
} | |
@@ -19112,7 +19112,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_UNUSED_CONST_HANDLER(Z | |
SAVE_OPLINE(); | |
container = _get_obj_zval_ptr_unused(execute_data); | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
isset_dim_obj_again: | |
if (IS_UNUSED != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) { | |
@@ -19228,7 +19228,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST_HANDLER( | |
SAVE_OPLINE(); | |
container = _get_obj_zval_ptr_unused(execute_data); | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) { | |
@@ -19245,7 +19245,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST_HANDLER( | |
isset_no_object: | |
result = ((opline->extended_value & ZEND_ISSET) == 0); | |
} else { | |
- result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
if ((opline->extended_value & ZEND_ISSET) == 0) { | |
result = !result; | |
} | |
@@ -19340,7 +19340,7 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDL | |
/* Set the new yielded key */ | |
if (IS_CONST != IS_UNUSED) { | |
- zval *key = opline->op2.zv; | |
+ zval *key = EX_CONSTANT(opline->op2); | |
/* Consts, temporary variables and references need copying */ | |
if (IS_CONST == IS_CONST) { | |
@@ -20121,7 +20121,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CV(int (*b | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -20135,7 +20135,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CV(int (*b | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && | |
- (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
+ (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC); | |
@@ -20148,7 +20148,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CV(int (*b | |
ZVAL_DEREF(z); | |
SEPARATE_ZVAL_NOREF(z); | |
binary_op(z, z, value TSRMLS_CC); | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(EX_VAR(opline->result.var), z); | |
} | |
@@ -20481,7 +20481,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_CV(incdec_t | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -20494,7 +20494,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_CV(incdec_t | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
@@ -20511,7 +20511,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_CV(incdec_t | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(retval, z); | |
} | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(z); | |
} else { | |
zend_error(E_WARNING, "Attempt to increment/decrement property of non-object"); | |
@@ -20567,7 +20567,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_CV(incdec_ | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
ZVAL_COPY_VALUE(retval, zptr); | |
@@ -20577,7 +20577,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_CV(incdec_ | |
} else { | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
zval rv; | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
zval z_copy; | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
@@ -20593,7 +20593,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_CV(incdec_ | |
ZVAL_DUP(&z_copy, z); | |
incdec_op(&z_copy); | |
if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z); | |
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(&z_copy); | |
zval_ptr_dtor(z); | |
} else { | |
@@ -20669,7 +20669,7 @@ fetch_obj_r_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -20697,7 +20697,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HA | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -20721,7 +20721,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_H | |
if (IS_UNUSED == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -20781,7 +20781,7 @@ fetch_obj_is_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -20814,7 +20814,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_HANDLER(ZEND_OP | |
if (IS_UNUSED == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -20840,7 +20840,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV_HANDLER(ZEND_OPCOD | |
if (IS_UNUSED == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -20864,7 +20864,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HAN | |
if (IS_UNUSED == IS_VAR && UNEXPECTED(object == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_UNUSED, property_name, IS_CV, (opline+1)->op1_type, (opline+1)->op1, execute_data, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
+ zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_UNUSED, property_name, IS_CV, (opline+1)->op1_type, (opline+1)->op1, execute_data, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
/* assign_obj has two opcodes! */ | |
@@ -21002,7 +21002,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCO | |
} | |
/* First, locate the function. */ | |
- fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", obj->ce->name->val, Z_STRVAL_P(function_name)); | |
} | |
@@ -21173,7 +21173,7 @@ static int ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HAND | |
} | |
} | |
if (Z_OBJ_HT_P(container)->unset_property) { | |
- Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
} else { | |
zend_error(E_NOTICE, "Trying to unset property of non-object"); | |
} | |
@@ -21328,7 +21328,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV_HANDLER(ZEN | |
isset_no_object: | |
result = ((opline->extended_value & ZEND_ISSET) == 0); | |
} else { | |
- result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
if ((opline->extended_value & ZEND_ISSET) == 0) { | |
result = !result; | |
} | |
@@ -21499,7 +21499,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_TMPVAR(int | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -21513,7 +21513,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_TMPVAR(int | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && | |
- (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
+ (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC); | |
@@ -21526,7 +21526,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_TMPVAR(int | |
ZVAL_DEREF(z); | |
SEPARATE_ZVAL_NOREF(z); | |
binary_op(z, z, value TSRMLS_CC); | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(EX_VAR(opline->result.var), z); | |
} | |
@@ -21860,7 +21860,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_TMPVAR(incd | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -21873,7 +21873,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_TMPVAR(incd | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
@@ -21890,7 +21890,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_TMPVAR(incd | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(retval, z); | |
} | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(z); | |
} else { | |
zend_error(E_WARNING, "Attempt to increment/decrement property of non-object"); | |
@@ -21947,7 +21947,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_TMPVAR(inc | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
ZVAL_COPY_VALUE(retval, zptr); | |
@@ -21957,7 +21957,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_TMPVAR(inc | |
} else { | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
zval rv; | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
zval z_copy; | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
@@ -21973,7 +21973,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_TMPVAR(inc | |
ZVAL_DUP(&z_copy, z); | |
incdec_op(&z_copy); | |
if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z); | |
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(&z_copy); | |
zval_ptr_dtor(z); | |
} else { | |
@@ -22050,7 +22050,7 @@ fetch_obj_r_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -22079,7 +22079,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCOD | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -22103,7 +22103,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCO | |
if (IS_UNUSED == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -22163,7 +22163,7 @@ fetch_obj_is_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -22197,7 +22197,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR_HANDLER(ZEN | |
if (IS_UNUSED == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -22223,7 +22223,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_O | |
if (IS_UNUSED == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -22247,7 +22247,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE | |
if (IS_UNUSED == IS_VAR && UNEXPECTED(object == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_UNUSED, property_name, (IS_TMP_VAR|IS_VAR), (opline+1)->op1_type, (opline+1)->op1, execute_data, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
+ zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_UNUSED, property_name, (IS_TMP_VAR|IS_VAR), (opline+1)->op1_type, (opline+1)->op1, execute_data, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
/* assign_obj has two opcodes! */ | |
@@ -22386,7 +22386,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_ | |
} | |
/* First, locate the function. */ | |
- fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", obj->ce->name->val, Z_STRVAL_P(function_name)); | |
} | |
@@ -22558,7 +22558,7 @@ static int ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_ | |
} | |
} | |
if (Z_OBJ_HT_P(container)->unset_property) { | |
- Z_OBJ_HT_P(container)->unset_property(container, offset, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(container)->unset_property(container, offset, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
} else { | |
zend_error(E_NOTICE, "Trying to unset property of non-object"); | |
} | |
@@ -22715,7 +22715,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR_HANDLER | |
isset_no_object: | |
result = ((opline->extended_value & ZEND_ISSET) == 0); | |
} else { | |
- result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
if ((opline->extended_value & ZEND_ISSET) == 0) { | |
result = !result; | |
} | |
@@ -22965,9 +22965,9 @@ static int ZEND_FASTCALL ZEND_JMPZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
ZEND_VM_CONTINUE(); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
if (IS_CV == IS_CV) { | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} | |
} | |
@@ -22975,7 +22975,7 @@ static int ZEND_FASTCALL ZEND_JMPZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
if (i_zend_is_true(val TSRMLS_CC)) { | |
opline++; | |
} else { | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
@@ -22994,7 +22994,7 @@ static int ZEND_FASTCALL ZEND_JMPNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
val = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); | |
if (Z_TYPE_P(val) == IS_TRUE) { | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
if (IS_CV == IS_CV) { | |
@@ -23006,7 +23006,7 @@ static int ZEND_FASTCALL ZEND_JMPNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
} | |
if (i_zend_is_true(val TSRMLS_CC)) { | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} else { | |
opline++; | |
} | |
@@ -23031,17 +23031,17 @@ static int ZEND_FASTCALL ZEND_JMPZNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
ZEND_VM_CONTINUE(); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
if (IS_CV == IS_CV) { | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} | |
} | |
if (i_zend_is_true(val TSRMLS_CC)) { | |
- opline = (zend_op*)(((char*)opline) + opline->extended_value); | |
+ opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value); | |
} else { | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
@@ -23066,9 +23066,9 @@ static int ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
if (IS_CV == IS_CV) { | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} | |
} | |
@@ -23080,7 +23080,7 @@ static int ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
} else { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
HANDLE_EXCEPTION(); | |
@@ -23099,7 +23099,7 @@ static int ZEND_FASTCALL ZEND_JMPNZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS | |
if (Z_TYPE_P(val) == IS_TRUE) { | |
ZVAL_TRUE(EX_VAR(opline->result.var)); | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
@@ -23112,7 +23112,7 @@ static int ZEND_FASTCALL ZEND_JMPNZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS | |
} | |
if (i_zend_is_true(val TSRMLS_CC)) { | |
ZVAL_TRUE(EX_VAR(opline->result.var)); | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} else { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
opline++; | |
@@ -23915,7 +23915,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS | |
if (IS_CV == IS_VAR && opline->extended_value & ZEND_FE_FETCH_BYREF) { | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
p = fe_ht->arData + pos; | |
if (Z_TYPE(p->val) == IS_UNDEF || | |
@@ -23946,7 +23946,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS | |
} | |
if (is_empty) { | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
@@ -24010,7 +24010,7 @@ static int ZEND_FASTCALL ZEND_JMP_SET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) | |
if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value); | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
CHECK_EXCEPTION(); | |
@@ -24044,7 +24044,7 @@ static int ZEND_FASTCALL ZEND_COALESCE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS | |
if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value); | |
} | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} | |
CHECK_EXCEPTION(); | |
@@ -24175,7 +24175,7 @@ static int ZEND_FASTCALL ZEND_ADD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
SAVE_OPLINE(); | |
fast_add_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24190,7 +24190,7 @@ static int ZEND_FASTCALL ZEND_SUB_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
SAVE_OPLINE(); | |
fast_sub_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24205,7 +24205,7 @@ static int ZEND_FASTCALL ZEND_MUL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
SAVE_OPLINE(); | |
fast_mul_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24220,7 +24220,7 @@ static int ZEND_FASTCALL ZEND_DIV_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
SAVE_OPLINE(); | |
fast_div_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24235,7 +24235,7 @@ static int ZEND_FASTCALL ZEND_MOD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
SAVE_OPLINE(); | |
fast_mod_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24250,7 +24250,7 @@ static int ZEND_FASTCALL ZEND_SL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS | |
SAVE_OPLINE(); | |
shift_left_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24265,7 +24265,7 @@ static int ZEND_FASTCALL ZEND_SR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS | |
SAVE_OPLINE(); | |
shift_right_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24280,7 +24280,7 @@ static int ZEND_FASTCALL ZEND_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ | |
SAVE_OPLINE(); | |
concat_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24295,7 +24295,7 @@ static int ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HA | |
SAVE_OPLINE(); | |
fast_is_identical_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24311,7 +24311,7 @@ static int ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CV_CONST_HANDLER(ZEND_OPCOD | |
SAVE_OPLINE(); | |
fast_is_not_identical_function(result, | |
_get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24327,7 +24327,7 @@ static int ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLE | |
SAVE_OPLINE(); | |
fast_equal_function(result, | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24343,7 +24343,7 @@ static int ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HA | |
SAVE_OPLINE(); | |
fast_not_equal_function(result, | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24359,7 +24359,7 @@ static int ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAND | |
SAVE_OPLINE(); | |
fast_is_smaller_function(result, | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24375,7 +24375,7 @@ static int ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OP | |
SAVE_OPLINE(); | |
fast_is_smaller_or_equal_function(result, | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24390,7 +24390,7 @@ static int ZEND_FASTCALL ZEND_BW_OR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_A | |
SAVE_OPLINE(); | |
bitwise_or_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24405,7 +24405,7 @@ static int ZEND_FASTCALL ZEND_BW_AND_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ | |
SAVE_OPLINE(); | |
bitwise_and_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24420,7 +24420,7 @@ static int ZEND_FASTCALL ZEND_BW_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ | |
SAVE_OPLINE(); | |
bitwise_xor_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24435,7 +24435,7 @@ static int ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLE | |
SAVE_OPLINE(); | |
boolean_xor_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -24447,7 +24447,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_CONST(int (*bi | |
USE_OPLINE | |
zend_free_op free_op_data1; | |
zval *object = _get_zval_ptr_cv_BP_VAR_RW(execute_data, opline->op1.var TSRMLS_CC); | |
- zval *property = opline->op2.zv; | |
+ zval *property = EX_CONSTANT(opline->op2); | |
zval *value; | |
zval *zptr; | |
@@ -24470,7 +24470,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_CONST(int (*bi | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -24484,7 +24484,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_CONST(int (*bi | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && | |
- (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
+ (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC); | |
@@ -24497,7 +24497,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_CONST(int (*bi | |
ZVAL_DEREF(z); | |
SEPARATE_ZVAL_NOREF(z); | |
binary_op(z, z, value TSRMLS_CC); | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(EX_VAR(opline->result.var), z); | |
} | |
@@ -24530,7 +24530,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_CV_CONST(int (*bi | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- dim = opline->op2.zv; | |
+ dim = EX_CONSTANT(opline->op2); | |
do { | |
if (IS_CV == IS_UNUSED || UNEXPECTED(Z_TYPE_P(container) != IS_ARRAY)) { | |
@@ -24586,7 +24586,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_helper_SPEC_CV_CONST(int (*binary | |
zval *value; | |
SAVE_OPLINE(); | |
- value = opline->op2.zv; | |
+ value = EX_CONSTANT(opline->op2); | |
var_ptr = _get_zval_ptr_cv_BP_VAR_RW(execute_data, opline->op1.var TSRMLS_CC); | |
if (IS_CV == IS_VAR && UNEXPECTED(var_ptr == NULL)) { | |
@@ -24844,7 +24844,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_CONST(incdec_t | |
SAVE_OPLINE(); | |
object = _get_zval_ptr_cv_BP_VAR_RW(execute_data, opline->op1.var TSRMLS_CC); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
retval = EX_VAR(opline->result.var); | |
if (IS_CV == IS_VAR && UNEXPECTED(object == NULL)) { | |
@@ -24865,7 +24865,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_CONST(incdec_t | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -24878,7 +24878,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_CONST(incdec_t | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
@@ -24895,7 +24895,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_CONST(incdec_t | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(retval, z); | |
} | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(z); | |
} else { | |
zend_error(E_WARNING, "Attempt to increment/decrement property of non-object"); | |
@@ -24932,7 +24932,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_CONST(incdec_t | |
SAVE_OPLINE(); | |
object = _get_zval_ptr_cv_BP_VAR_RW(execute_data, opline->op1.var TSRMLS_CC); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
retval = EX_VAR(opline->result.var); | |
if (IS_CV == IS_VAR && UNEXPECTED(object == NULL)) { | |
@@ -24951,7 +24951,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_CONST(incdec_t | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
ZVAL_COPY_VALUE(retval, zptr); | |
@@ -24961,7 +24961,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_CONST(incdec_t | |
} else { | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
zval rv; | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
zval z_copy; | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
@@ -24977,7 +24977,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_CONST(incdec_t | |
ZVAL_DUP(&z_copy, z); | |
incdec_op(&z_copy); | |
if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z); | |
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(&z_copy); | |
zval_ptr_dtor(z); | |
} else { | |
@@ -25027,10 +25027,10 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_CONST(int type, Z | |
zend_class_entry *ce; | |
if (IS_CONST == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
if (IS_CV != IS_CONST) { | |
zend_string_release(name); | |
@@ -25039,12 +25039,12 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_CONST(int type, Z | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- retval = zend_std_get_static_property(ce, name, 0, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
@@ -25158,7 +25158,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAN | |
SAVE_OPLINE(); | |
container = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); | |
- zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -25177,7 +25177,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAN | |
if (IS_CV == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -25199,7 +25199,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HA | |
if (IS_CV == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_fetch_dimension_address_RW(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ zend_fetch_dimension_address_RW(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -25217,7 +25217,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HA | |
SAVE_OPLINE(); | |
container = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC); | |
- zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -25240,7 +25240,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPC | |
if (IS_CV == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
} | |
@@ -25251,7 +25251,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPC | |
zend_error_noreturn(E_ERROR, "Cannot use [] for reading"); | |
} | |
container = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); | |
- zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
} | |
@@ -25271,7 +25271,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE | |
if (IS_CV == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_fetch_dimension_address_UNSET(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ zend_fetch_dimension_address_UNSET(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -25291,7 +25291,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAN | |
SAVE_OPLINE(); | |
container = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) { | |
@@ -25332,7 +25332,7 @@ fetch_obj_r_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -25353,14 +25353,14 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAN | |
zval *container; | |
SAVE_OPLINE(); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
container = _get_zval_ptr_cv_undef_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC); | |
if (IS_CV == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -25378,13 +25378,13 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HA | |
zval *container; | |
SAVE_OPLINE(); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
container = _get_zval_ptr_cv_BP_VAR_RW(execute_data, opline->op1.var TSRMLS_CC); | |
if (IS_CV == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -25404,7 +25404,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HA | |
SAVE_OPLINE(); | |
container = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC); | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) { | |
@@ -25444,7 +25444,7 @@ fetch_obj_is_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -25468,7 +25468,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPC | |
zval *property; | |
SAVE_OPLINE(); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
container = _get_zval_ptr_cv_undef_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC); | |
if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR) { | |
@@ -25477,7 +25477,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPC | |
if (IS_CV == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -25498,12 +25498,12 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE | |
SAVE_OPLINE(); | |
container = _get_zval_ptr_cv_BP_VAR_UNSET(execute_data, opline->op1.var TSRMLS_CC); | |
- property = opline->op2.zv; | |
+ property = EX_CONSTANT(opline->op2); | |
if (IS_CV == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -25525,13 +25525,13 @@ static int ZEND_FASTCALL ZEND_FETCH_LIST_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAND | |
try_fetch_list: | |
if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) { | |
- zval *value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); | |
+ zval *value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), EX_CONSTANT(opline->op2), IS_CONST, BP_VAR_R TSRMLS_CC); | |
ZVAL_COPY(EX_VAR(opline->result.var), value); | |
} else if (UNEXPECTED(Z_TYPE_P(container) == IS_OBJECT) && | |
EXPECTED(Z_OBJ_HT_P(container)->read_dimension)) { | |
zval *result = EX_VAR(opline->result.var); | |
- zval *retval = Z_OBJ_HT_P(container)->read_dimension(container, opline->op2.zv, BP_VAR_R, result TSRMLS_CC); | |
+ zval *retval = Z_OBJ_HT_P(container)->read_dimension(container, EX_CONSTANT(opline->op2), BP_VAR_R, result TSRMLS_CC); | |
if (retval) { | |
if (result != retval) { | |
@@ -25559,12 +25559,12 @@ static int ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAND | |
SAVE_OPLINE(); | |
object = _get_zval_ptr_cv_undef_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC); | |
- property_name = opline->op2.zv; | |
+ property_name = EX_CONSTANT(opline->op2); | |
if (IS_CV == IS_VAR && UNEXPECTED(object == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_CV, property_name, IS_CONST, (opline+1)->op1_type, (opline+1)->op1, execute_data, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
+ zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_CV, property_name, IS_CONST, (opline+1)->op1_type, (opline+1)->op1, execute_data, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
/* assign_obj has two opcodes! */ | |
@@ -25594,7 +25594,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAND | |
try_assign_dim: | |
if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) { | |
try_assign_dim_array: | |
- dim = opline->op2.zv; | |
+ dim = EX_CONSTANT(opline->op2); | |
zend_fetch_dimension_address_W(&rv, object_ptr, dim, IS_CONST TSRMLS_CC); | |
value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R); | |
@@ -25616,14 +25616,14 @@ try_assign_dim_array: | |
} | |
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { | |
- zval *property_name = opline->op2.zv; | |
+ zval *property_name = EX_CONSTANT(opline->op2); | |
zend_assign_to_object_dim(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object_ptr, property_name, (opline+1)->op1_type, (opline+1)->op1, execute_data TSRMLS_CC); | |
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING) && | |
EXPECTED(Z_STRLEN_P(object_ptr) != 0)) { | |
- dim = opline->op2.zv; | |
+ dim = EX_CONSTANT(opline->op2); | |
zend_long offset = zend_fetch_string_offset(object_ptr, dim, BP_VAR_W TSRMLS_CC); | |
value = get_zval_ptr_deref((opline+1)->op1_type, (opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R); | |
@@ -25650,7 +25650,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ | |
zval *variable_ptr; | |
SAVE_OPLINE(); | |
- value = opline->op2.zv; | |
+ value = EX_CONSTANT(opline->op2); | |
variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC); | |
if (IS_CV == IS_VAR && UNEXPECTED(variable_ptr == &EG(error_zval))) { | |
@@ -25686,7 +25686,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCOD | |
SAVE_OPLINE(); | |
- function_name = opline->op2.zv; | |
+ function_name = EX_CONSTANT(opline->op2); | |
if (IS_CONST != IS_CONST && | |
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { | |
@@ -25763,7 +25763,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCOD | |
} | |
/* First, locate the function. */ | |
- fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", obj->ce->name->val, Z_STRVAL_P(function_name)); | |
} | |
@@ -25798,7 +25798,7 @@ static int ZEND_FASTCALL ZEND_CASE_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_AR | |
SAVE_OPLINE(); | |
fast_equal_function(result, | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
@@ -25841,7 +25841,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER(ZEND_OPCO | |
if (IS_CONST != IS_UNUSED) { | |
- zval *offset = opline->op2.zv; | |
+ zval *offset = EX_CONSTANT(opline->op2); | |
zend_string *str; | |
zend_ulong hval; | |
@@ -25965,10 +25965,10 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDL | |
zend_class_entry *ce; | |
if (IS_CONST == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) { | |
zend_string_release(Z_STR(tmp)); | |
@@ -25977,14 +25977,14 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDL | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- zend_std_unset_static_property(ce, Z_STR_P(varname), ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ zend_std_unset_static_property(ce, Z_STR_P(varname), ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
zend_hash_del_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -26011,7 +26011,7 @@ static int ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDL | |
if (IS_CV == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot unset string offsets"); | |
} | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
unset_dim_again: | |
if (IS_CV != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) { | |
@@ -26098,7 +26098,7 @@ static int ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDL | |
if (IS_CV == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot unset string offsets"); | |
} | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
do { | |
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
@@ -26112,7 +26112,7 @@ static int ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDL | |
} | |
} | |
if (Z_OBJ_HT_P(container)->unset_property) { | |
- Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
} else { | |
zend_error(E_NOTICE, "Trying to unset property of non-object"); | |
} | |
@@ -26157,20 +26157,20 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_CONST_HANDLER(ZEND_OPCO | |
zend_class_entry *ce; | |
if (IS_CONST == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
HashTable *target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
value = zend_hash_find_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -26205,7 +26205,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST_HANDLER(ZEND_ | |
SAVE_OPLINE(); | |
container = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC); | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
isset_dim_obj_again: | |
if (IS_CV != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) { | |
@@ -26321,7 +26321,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST_HANDLER(ZEND | |
SAVE_OPLINE(); | |
container = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var TSRMLS_CC); | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) { | |
@@ -26338,7 +26338,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST_HANDLER(ZEND | |
isset_no_object: | |
result = ((opline->extended_value & ZEND_ISSET) == 0); | |
} else { | |
- result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
if ((opline->extended_value & ZEND_ISSET) == 0) { | |
result = !result; | |
} | |
@@ -26365,17 +26365,17 @@ try_instanceof: | |
zend_class_entry *ce; | |
if (IS_CONST == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
@@ -26476,7 +26476,7 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_A | |
/* Set the new yielded key */ | |
if (IS_CONST != IS_UNUSED) { | |
- zval *key = opline->op2.zv; | |
+ zval *key = EX_CONSTANT(opline->op2); | |
/* Consts, temporary variables and references need copying */ | |
if (IS_CONST == IS_CONST) { | |
@@ -26532,7 +26532,7 @@ static int ZEND_FASTCALL ZEND_POW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
SAVE_OPLINE(); | |
pow_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
@@ -26554,7 +26554,7 @@ static int ZEND_FASTCALL ZEND_BIND_GLOBAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAN | |
uint32_t idx; | |
SAVE_OPLINE(); | |
- varname = opline->op2.zv; | |
+ varname = EX_CONSTANT(opline->op2); | |
/* We store "hash slot index" + 1 (NULL is a mark of uninitialized cache slot) */ | |
idx = (uint32_t)(uintptr_t)CACHED_PTR(Z_CACHE_SLOT_P(varname)) - 1; | |
@@ -26850,10 +26850,10 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_VAR(int type, ZEN | |
zend_class_entry *ce; | |
if (IS_VAR == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
if (IS_CV != IS_CONST) { | |
zend_string_release(name); | |
@@ -26862,12 +26862,12 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_VAR(int type, ZEN | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- retval = zend_std_get_static_property(ce, name, 0, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
@@ -27112,10 +27112,10 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER | |
zend_class_entry *ce; | |
if (IS_VAR == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) { | |
zend_string_release(Z_STR(tmp)); | |
@@ -27124,14 +27124,14 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- zend_std_unset_static_property(ce, Z_STR_P(varname), ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ zend_std_unset_static_property(ce, Z_STR_P(varname), ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
zend_hash_del_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -27179,20 +27179,20 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_VAR_HANDLER(ZEND_OPCODE | |
zend_class_entry *ce; | |
if (IS_VAR == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
HashTable *target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
value = zend_hash_find_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -27231,17 +27231,17 @@ try_instanceof: | |
zend_class_entry *ce; | |
if (IS_VAR == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
@@ -27696,10 +27696,10 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_UNUSED(int type, | |
zend_class_entry *ce; | |
if (IS_UNUSED == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
if (IS_CV != IS_CONST) { | |
zend_string_release(name); | |
@@ -27708,12 +27708,12 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_UNUSED(int type, | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- retval = zend_std_get_static_property(ce, name, 0, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ retval = zend_std_get_static_property(ce, name, 0, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
@@ -28128,10 +28128,10 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HAND | |
zend_class_entry *ce; | |
if (IS_UNUSED == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) { | |
zend_string_release(Z_STR(tmp)); | |
@@ -28140,14 +28140,14 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HAND | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- zend_std_unset_static_property(ce, Z_STR_P(varname), ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ zend_std_unset_static_property(ce, Z_STR_P(varname), ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
zend_hash_del_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -28195,20 +28195,20 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPC | |
zend_class_entry *ce; | |
if (IS_UNUSED == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
HashTable *target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
value = zend_hash_find_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -28666,7 +28666,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_CV(int (*binar | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -28680,7 +28680,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_CV(int (*binar | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && | |
- (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
+ (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC); | |
@@ -28693,7 +28693,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_CV(int (*binar | |
ZVAL_DEREF(z); | |
SEPARATE_ZVAL_NOREF(z); | |
binary_op(z, z, value TSRMLS_CC); | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(EX_VAR(opline->result.var), z); | |
} | |
@@ -29061,7 +29061,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_CV(incdec_t inc | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -29074,7 +29074,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_CV(incdec_t inc | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
@@ -29091,7 +29091,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_CV(incdec_t inc | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(retval, z); | |
} | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(z); | |
} else { | |
zend_error(E_WARNING, "Attempt to increment/decrement property of non-object"); | |
@@ -29147,7 +29147,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_CV(incdec_t in | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
ZVAL_COPY_VALUE(retval, zptr); | |
@@ -29157,7 +29157,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_CV(incdec_t in | |
} else { | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
zval rv; | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
zval z_copy; | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
@@ -29173,7 +29173,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_CV(incdec_t in | |
ZVAL_DUP(&z_copy, z); | |
incdec_op(&z_copy); | |
if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z); | |
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(&z_copy); | |
zval_ptr_dtor(z); | |
} else { | |
@@ -29380,7 +29380,7 @@ fetch_obj_r_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -29408,7 +29408,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLE | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -29432,7 +29432,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDL | |
if (IS_CV == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -29492,7 +29492,7 @@ fetch_obj_is_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -29525,7 +29525,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE | |
if (IS_CV == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -29551,7 +29551,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HA | |
if (IS_CV == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -29575,7 +29575,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER | |
if (IS_CV == IS_VAR && UNEXPECTED(object == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_CV, property_name, IS_CV, (opline+1)->op1_type, (opline+1)->op1, execute_data, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
+ zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_CV, property_name, IS_CV, (opline+1)->op1_type, (opline+1)->op1, execute_data, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
/* assign_obj has two opcodes! */ | |
@@ -29837,7 +29837,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_H | |
} | |
/* First, locate the function. */ | |
- fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", obj->ce->name->val, Z_STRVAL_P(function_name)); | |
} | |
@@ -30111,7 +30111,7 @@ static int ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ | |
} | |
} | |
if (Z_OBJ_HT_P(container)->unset_property) { | |
- Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
} else { | |
zend_error(E_NOTICE, "Trying to unset property of non-object"); | |
} | |
@@ -30266,7 +30266,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV_HANDLER(ZEND_OP | |
isset_no_object: | |
result = ((opline->extended_value & ZEND_ISSET) == 0); | |
} else { | |
- result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
if ((opline->extended_value & ZEND_ISSET) == 0) { | |
result = !result; | |
} | |
@@ -30701,7 +30701,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_TMPVAR(int (*b | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -30715,7 +30715,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_TMPVAR(int (*b | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && | |
- (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
+ (z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC)) != NULL) { | |
if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
zval *value = Z_OBJ_HT_P(z)->get(z, &rv TSRMLS_CC); | |
@@ -30728,7 +30728,7 @@ static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_TMPVAR(int (*b | |
ZVAL_DEREF(z); | |
SEPARATE_ZVAL_NOREF(z); | |
binary_op(z, z, value TSRMLS_CC); | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(EX_VAR(opline->result.var), z); | |
} | |
@@ -31098,7 +31098,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_TMPVAR(incdec_t | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
SEPARATE_ZVAL_NOREF(zptr); | |
@@ -31111,7 +31111,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_TMPVAR(incdec_t | |
zval rv; | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
zval rv; | |
@@ -31128,7 +31128,7 @@ static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_TMPVAR(incdec_t | |
if (UNEXPECTED(RETURN_VALUE_USED(opline))) { | |
ZVAL_COPY(retval, z); | |
} | |
- Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, z, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(z); | |
} else { | |
zend_error(E_WARNING, "Attempt to increment/decrement property of non-object"); | |
@@ -31185,7 +31185,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_TMPVAR(incdec_ | |
/* here we are sure we are dealing with an object */ | |
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr) | |
- && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
+ && EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC)) != NULL)) { | |
ZVAL_DEREF(zptr); | |
ZVAL_COPY_VALUE(retval, zptr); | |
@@ -31195,7 +31195,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_TMPVAR(incdec_ | |
} else { | |
if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) { | |
zval rv; | |
- zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
+ zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), &rv TSRMLS_CC); | |
zval z_copy; | |
if (UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && Z_OBJ_HT_P(z)->get) { | |
@@ -31211,7 +31211,7 @@ static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_TMPVAR(incdec_ | |
ZVAL_DUP(&z_copy, z); | |
incdec_op(&z_copy); | |
if (Z_REFCOUNTED_P(z)) Z_ADDREF_P(z); | |
- Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(object)->write_property(object, property, &z_copy, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor(&z_copy); | |
zval_ptr_dtor(z); | |
} else { | |
@@ -31419,7 +31419,7 @@ fetch_obj_r_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -31448,7 +31448,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HA | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -31472,7 +31472,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_H | |
if (IS_CV == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -31532,7 +31532,7 @@ fetch_obj_is_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -31566,7 +31566,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR_HANDLER(ZEND_OP | |
if (IS_CV == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -31592,7 +31592,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCOD | |
if (IS_CV == IS_VAR && UNEXPECTED(container == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an object"); | |
} | |
- zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
+ zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) { | |
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var)); | |
@@ -31616,7 +31616,7 @@ static int ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HAN | |
if (IS_CV == IS_VAR && UNEXPECTED(object == NULL)) { | |
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array"); | |
} | |
- zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_CV, property_name, (IS_TMP_VAR|IS_VAR), (opline+1)->op1_type, (opline+1)->op1, execute_data, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
+ zend_assign_to_object(UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, object, IS_CV, property_name, (IS_TMP_VAR|IS_VAR), (opline+1)->op1_type, (opline+1)->op1, execute_data, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(property_name)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op2); | |
/* assign_obj has two opcodes! */ | |
@@ -31783,7 +31783,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCO | |
} | |
/* First, locate the function. */ | |
- fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", obj->ce->name->val, Z_STRVAL_P(function_name)); | |
} | |
@@ -32059,7 +32059,7 @@ static int ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HAND | |
} | |
} | |
if (Z_OBJ_HT_P(container)->unset_property) { | |
- Z_OBJ_HT_P(container)->unset_property(container, offset, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ Z_OBJ_HT_P(container)->unset_property(container, offset, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
} else { | |
zend_error(E_NOTICE, "Trying to unset property of non-object"); | |
} | |
@@ -32216,7 +32216,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEN | |
isset_no_object: | |
result = ((opline->extended_value & ZEND_ISSET) == 0); | |
} else { | |
- result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
if ((opline->extended_value & ZEND_ISSET) == 0) { | |
result = !result; | |
} | |
@@ -32333,9 +32333,9 @@ static int ZEND_FASTCALL ZEND_JMPZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS | |
ZEND_VM_CONTINUE(); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
if ((IS_TMP_VAR|IS_VAR) == IS_CV) { | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} | |
} | |
@@ -32343,7 +32343,7 @@ static int ZEND_FASTCALL ZEND_JMPZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS | |
if (i_zend_is_true(val TSRMLS_CC)) { | |
opline++; | |
} else { | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} | |
zval_ptr_dtor_nogc(free_op1); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
@@ -32362,7 +32362,7 @@ static int ZEND_FASTCALL ZEND_JMPNZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
val = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1); | |
if (Z_TYPE_P(val) == IS_TRUE) { | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
if ((IS_TMP_VAR|IS_VAR) == IS_CV) { | |
@@ -32374,7 +32374,7 @@ static int ZEND_FASTCALL ZEND_JMPNZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARG | |
} | |
if (i_zend_is_true(val TSRMLS_CC)) { | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} else { | |
opline++; | |
} | |
@@ -32399,17 +32399,17 @@ static int ZEND_FASTCALL ZEND_JMPZNZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_AR | |
ZEND_VM_CONTINUE(); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
if ((IS_TMP_VAR|IS_VAR) == IS_CV) { | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} | |
} | |
if (i_zend_is_true(val TSRMLS_CC)) { | |
- opline = (zend_op*)(((char*)opline) + opline->extended_value); | |
+ opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value); | |
} else { | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} | |
zval_ptr_dtor_nogc(free_op1); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
@@ -32434,9 +32434,9 @@ static int ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_A | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
if ((IS_TMP_VAR|IS_VAR) == IS_CV) { | |
- ZEND_VM_JMP(opline->op2.jmp_addr); | |
+ ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2)); | |
} else { | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} | |
} | |
@@ -32448,7 +32448,7 @@ static int ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_A | |
} else { | |
zval_ptr_dtor_nogc(free_op1); | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
HANDLE_EXCEPTION(); | |
@@ -32467,7 +32467,7 @@ static int ZEND_FASTCALL ZEND_JMPNZ_EX_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ | |
if (Z_TYPE_P(val) == IS_TRUE) { | |
ZVAL_TRUE(EX_VAR(opline->result.var)); | |
- ZEND_VM_SET_OPCODE(opline->op2.jmp_addr); | |
+ ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2)); | |
ZEND_VM_CONTINUE(); | |
} else if (EXPECTED(Z_TYPE_P(val) <= IS_TRUE)) { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
@@ -32480,7 +32480,7 @@ static int ZEND_FASTCALL ZEND_JMPNZ_EX_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ | |
} | |
if (i_zend_is_true(val TSRMLS_CC)) { | |
ZVAL_TRUE(EX_VAR(opline->result.var)); | |
- opline = opline->op2.jmp_addr; | |
+ opline = OP_JMP_ADDR(opline, opline->op2); | |
} else { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
opline++; | |
@@ -32797,7 +32797,7 @@ static int ZEND_FASTCALL ZEND_ADD_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER | |
SAVE_OPLINE(); | |
fast_add_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -32812,7 +32812,7 @@ static int ZEND_FASTCALL ZEND_SUB_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER | |
SAVE_OPLINE(); | |
fast_sub_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -32827,7 +32827,7 @@ static int ZEND_FASTCALL ZEND_MUL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER | |
SAVE_OPLINE(); | |
fast_mul_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -32842,7 +32842,7 @@ static int ZEND_FASTCALL ZEND_DIV_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER | |
SAVE_OPLINE(); | |
fast_div_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -32857,7 +32857,7 @@ static int ZEND_FASTCALL ZEND_MOD_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER | |
SAVE_OPLINE(); | |
fast_mod_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -32872,7 +32872,7 @@ static int ZEND_FASTCALL ZEND_SL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ | |
SAVE_OPLINE(); | |
shift_left_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -32887,7 +32887,7 @@ static int ZEND_FASTCALL ZEND_SR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ | |
SAVE_OPLINE(); | |
shift_right_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -32902,7 +32902,7 @@ static int ZEND_FASTCALL ZEND_CONCAT_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HAND | |
SAVE_OPLINE(); | |
concat_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -32918,7 +32918,7 @@ static int ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HA | |
SAVE_OPLINE(); | |
fast_equal_function(result, | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -32934,7 +32934,7 @@ static int ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCOD | |
SAVE_OPLINE(); | |
fast_not_equal_function(result, | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -32950,7 +32950,7 @@ static int ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_ | |
SAVE_OPLINE(); | |
fast_is_smaller_function(result, | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -32966,7 +32966,7 @@ static int ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEN | |
SAVE_OPLINE(); | |
fast_is_smaller_or_equal_function(result, | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -32981,7 +32981,7 @@ static int ZEND_FASTCALL ZEND_BW_OR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDL | |
SAVE_OPLINE(); | |
bitwise_or_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -32996,7 +32996,7 @@ static int ZEND_FASTCALL ZEND_BW_AND_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HAND | |
SAVE_OPLINE(); | |
bitwise_and_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -33011,7 +33011,7 @@ static int ZEND_FASTCALL ZEND_BW_XOR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HAND | |
SAVE_OPLINE(); | |
bitwise_xor_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -33026,7 +33026,7 @@ static int ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HA | |
SAVE_OPLINE(); | |
boolean_xor_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -33058,10 +33058,10 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMPVAR_CONST(int typ | |
zend_class_entry *ce; | |
if (IS_CONST == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { | |
zend_string_release(name); | |
@@ -33070,12 +33070,12 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMPVAR_CONST(int typ | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- retval = zend_std_get_static_property(ce, name, 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ retval = zend_std_get_static_property(ce, name, 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
@@ -33189,7 +33189,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE | |
SAVE_OPLINE(); | |
container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1); | |
- zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -33204,7 +33204,7 @@ static int ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCOD | |
SAVE_OPLINE(); | |
container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1); | |
- zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC); | |
+ zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -33221,7 +33221,7 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCOD | |
SAVE_OPLINE(); | |
container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1); | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) { | |
@@ -33261,7 +33261,7 @@ fetch_obj_is_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -33286,13 +33286,13 @@ static int ZEND_FASTCALL ZEND_FETCH_LIST_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_ | |
try_fetch_list: | |
if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) { | |
- zval *value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); | |
+ zval *value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), EX_CONSTANT(opline->op2), IS_CONST, BP_VAR_R TSRMLS_CC); | |
ZVAL_COPY(EX_VAR(opline->result.var), value); | |
} else if (UNEXPECTED(Z_TYPE_P(container) == IS_OBJECT) && | |
EXPECTED(Z_OBJ_HT_P(container)->read_dimension)) { | |
zval *result = EX_VAR(opline->result.var); | |
- zval *retval = Z_OBJ_HT_P(container)->read_dimension(container, opline->op2.zv, BP_VAR_R, result TSRMLS_CC); | |
+ zval *retval = Z_OBJ_HT_P(container)->read_dimension(container, EX_CONSTANT(opline->op2), BP_VAR_R, result TSRMLS_CC); | |
if (retval) { | |
if (result != retval) { | |
@@ -33323,7 +33323,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST_HANDLER(ZEND_O | |
SAVE_OPLINE(); | |
- function_name = opline->op2.zv; | |
+ function_name = EX_CONSTANT(opline->op2); | |
if (IS_CONST != IS_CONST && | |
UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { | |
@@ -33401,7 +33401,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST_HANDLER(ZEND_O | |
} | |
/* First, locate the function. */ | |
- fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", obj->ce->name->val, Z_STRVAL_P(function_name)); | |
} | |
@@ -33437,7 +33437,7 @@ static int ZEND_FASTCALL ZEND_CASE_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLE | |
SAVE_OPLINE(); | |
fast_equal_function(result, | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
@@ -33485,10 +33485,10 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_H | |
zend_class_entry *ce; | |
if (IS_CONST == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) { | |
zend_string_release(Z_STR(tmp)); | |
@@ -33497,14 +33497,14 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_H | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- zend_std_unset_static_property(ce, Z_STR_P(varname), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ zend_std_unset_static_property(ce, Z_STR_P(varname), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
zend_hash_del_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -33552,20 +33552,20 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_CONST_HANDLER(ZEND_ | |
zend_class_entry *ce; | |
if (IS_CONST == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
HashTable *target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
value = zend_hash_find_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -33601,7 +33601,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST_HANDLER(Z | |
SAVE_OPLINE(); | |
container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1); | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
isset_dim_obj_again: | |
if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) { | |
@@ -33717,7 +33717,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST_HANDLER( | |
SAVE_OPLINE(); | |
container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1); | |
- offset = opline->op2.zv; | |
+ offset = EX_CONSTANT(opline->op2); | |
if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { | |
if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) { | |
@@ -33734,7 +33734,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST_HANDLER( | |
isset_no_object: | |
result = ((opline->extended_value & ZEND_ISSET) == 0); | |
} else { | |
- result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CONST == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CONST == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
if ((opline->extended_value & ZEND_ISSET) == 0) { | |
result = !result; | |
} | |
@@ -33761,17 +33761,17 @@ try_instanceof: | |
zend_class_entry *ce; | |
if (IS_CONST == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
@@ -33797,7 +33797,7 @@ static int ZEND_FASTCALL ZEND_POW_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER | |
SAVE_OPLINE(); | |
pow_function(EX_VAR(opline->result.var), | |
_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1), | |
- opline->op2.zv TSRMLS_CC); | |
+ EX_CONSTANT(opline->op2) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
@@ -33829,10 +33829,10 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMPVAR_VAR(int type, | |
zend_class_entry *ce; | |
if (IS_VAR == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { | |
zend_string_release(name); | |
@@ -33841,12 +33841,12 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMPVAR_VAR(int type, | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- retval = zend_std_get_static_property(ce, name, 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ retval = zend_std_get_static_property(ce, name, 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
@@ -33994,10 +33994,10 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HAN | |
zend_class_entry *ce; | |
if (IS_VAR == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) { | |
zend_string_release(Z_STR(tmp)); | |
@@ -34006,14 +34006,14 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HAN | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- zend_std_unset_static_property(ce, Z_STR_P(varname), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ zend_std_unset_static_property(ce, Z_STR_P(varname), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
zend_hash_del_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -34061,20 +34061,20 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_VAR_HANDLER(ZEND_OP | |
zend_class_entry *ce; | |
if (IS_VAR == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
HashTable *target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
value = zend_hash_find_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -34114,17 +34114,17 @@ try_instanceof: | |
zend_class_entry *ce; | |
if (IS_VAR == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
ZVAL_FALSE(EX_VAR(opline->result.var)); | |
zval_ptr_dtor_nogc(free_op1); | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
@@ -34167,10 +34167,10 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(int ty | |
zend_class_entry *ce; | |
if (IS_UNUSED == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) { | |
zend_string_release(name); | |
@@ -34179,12 +34179,12 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(int ty | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- retval = zend_std_get_static_property(ce, name, 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ retval = zend_std_get_static_property(ce, name, 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
zval_ptr_dtor_nogc(free_op1); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
@@ -34332,10 +34332,10 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_ | |
zend_class_entry *ce; | |
if (IS_UNUSED == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(EG(exception) != NULL)) { | |
if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) { | |
zend_string_release(Z_STR(tmp)); | |
@@ -34344,14 +34344,14 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_ | |
HANDLE_EXCEPTION(); | |
} | |
if (UNEXPECTED(ce == NULL)) { | |
- zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv)); | |
+ zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(EX_CONSTANT(opline->op2))); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- zend_std_unset_static_property(ce, Z_STR_P(varname), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ zend_std_unset_static_property(ce, Z_STR_P(varname), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
zend_hash_del_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -34399,20 +34399,20 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED_HANDLER(ZEND | |
zend_class_entry *ce; | |
if (IS_UNUSED == IS_CONST) { | |
- if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { | |
- ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); | |
+ if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) { | |
+ ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))); | |
} else { | |
- ce = zend_fetch_class_by_name(Z_STR_P(opline->op2.zv), opline->op2.zv + 1, 0 TSRMLS_CC); | |
+ ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, 0 TSRMLS_CC); | |
if (UNEXPECTED(ce == NULL)) { | |
CHECK_EXCEPTION(); | |
ZEND_VM_NEXT_OPCODE(); | |
} | |
- CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce); | |
+ CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce); | |
} | |
} else { | |
ce = Z_CE_P(EX_VAR(opline->op2.var)); | |
} | |
- value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
+ value = zend_std_get_static_property(ce, Z_STR_P(varname), 1, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(varname)) : NULL) TSRMLS_CC); | |
} else { | |
HashTable *target_symbol_table = zend_get_target_symbol_table(execute_data, opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC); | |
value = zend_hash_find_ind(target_symbol_table, Z_STR_P(varname)); | |
@@ -34761,7 +34761,7 @@ fetch_obj_is_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -34864,7 +34864,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCO | |
} | |
/* First, locate the function. */ | |
- fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", obj->ce->name->val, Z_STRVAL_P(function_name)); | |
} | |
@@ -35050,7 +35050,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV_HANDLER(ZEN | |
isset_no_object: | |
result = ((opline->extended_value & ZEND_ISSET) == 0); | |
} else { | |
- result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CV == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CV == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
if ((opline->extended_value & ZEND_ISSET) == 0) { | |
result = !result; | |
} | |
@@ -35401,7 +35401,7 @@ fetch_obj_is_no_object: | |
} | |
} | |
- retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var) TSRMLS_CC); | |
if (retval != EX_VAR(opline->result.var)) { | |
ZVAL_COPY(EX_VAR(opline->result.var), retval); | |
@@ -35505,7 +35505,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_ | |
} | |
/* First, locate the function. */ | |
- fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (opline->op2.zv + 1) : NULL) TSRMLS_CC); | |
+ fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL) TSRMLS_CC); | |
if (UNEXPECTED(fbc == NULL)) { | |
zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", obj->ce->name->val, Z_STRVAL_P(function_name)); | |
} | |
@@ -35694,7 +35694,7 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER | |
isset_no_object: | |
result = ((opline->extended_value & ZEND_ISSET) == 0); | |
} else { | |
- result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX(run_time_cache) + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_RUN_TIME_CACHE() + Z_CACHE_SLOT_P(offset)) : NULL) TSRMLS_CC); | |
if ((opline->extended_value & ZEND_ISSET) == 0) { | |
result = !result; | |
} | |
diff --git a/Zend/zend_vm_gen.php b/Zend/zend_vm_gen.php | |
index f72531d..331286b 100644 | |
--- a/Zend/zend_vm_gen.php | |
+++ b/Zend/zend_vm_gen.php | |
@@ -137,7 +137,7 @@ $op1_get_zval_ptr = array( | |
"ANY" => "get_zval_ptr(opline->op1_type, opline->op1, execute_data, &free_op1, \\1)", | |
"TMP" => "_get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1)", | |
"VAR" => "_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1)", | |
- "CONST" => "opline->op1.zv", | |
+ "CONST" => "EX_CONSTANT(opline->op1)", | |
"UNUSED" => "NULL", | |
"CV" => "_get_zval_ptr_cv_\\1(execute_data, opline->op1.var TSRMLS_CC)", | |
"TMPVAR" => "_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1)", | |
@@ -147,7 +147,7 @@ $op2_get_zval_ptr = array( | |
"ANY" => "get_zval_ptr(opline->op2_type, opline->op2, execute_data, &free_op2, \\1)", | |
"TMP" => "_get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2)", | |
"VAR" => "_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2)", | |
- "CONST" => "opline->op2.zv", | |
+ "CONST" => "EX_CONSTANT(opline->op2)", | |
"UNUSED" => "NULL", | |
"CV" => "_get_zval_ptr_cv_\\1(execute_data, opline->op2.var TSRMLS_CC)", | |
"TMPVAR" => "_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2)", | |
@@ -177,7 +177,7 @@ $op1_get_zval_ptr_deref = array( | |
"ANY" => "get_zval_ptr_deref(opline->op1_type, opline->op1, execute_data, &free_op1, \\1)", | |
"TMP" => "_get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1)", | |
"VAR" => "_get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1)", | |
- "CONST" => "opline->op1.zv", | |
+ "CONST" => "EX_CONSTANT(opline->op1)", | |
"UNUSED" => "NULL", | |
"CV" => "_get_zval_ptr_cv_deref_\\1(execute_data, opline->op1.var TSRMLS_CC)", | |
"TMPVAR" => "???", | |
@@ -187,7 +187,7 @@ $op2_get_zval_ptr_deref = array( | |
"ANY" => "get_zval_ptr_deref(opline->op2_type, opline->op2, execute_data, &free_op2, \\1)", | |
"TMP" => "_get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2)", | |
"VAR" => "_get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2)", | |
- "CONST" => "opline->op2.zv", | |
+ "CONST" => "EX_CONSTANT(opline->op2)", | |
"UNUSED" => "NULL", | |
"CV" => "_get_zval_ptr_cv_deref_\\1(execute_data, opline->op2.var TSRMLS_CC)", | |
"TMPVAR" => "???", | |
@@ -217,7 +217,7 @@ $op1_get_obj_zval_ptr = array( | |
"ANY" => "get_obj_zval_ptr(opline->op1_type, opline->op1, execute_data, &free_op1, \\1)", | |
"TMP" => "_get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1)", | |
"VAR" => "_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1)", | |
- "CONST" => "opline->op1.zv", | |
+ "CONST" => "EX_CONSTANT(opline->op1)", | |
"UNUSED" => "_get_obj_zval_ptr_unused(execute_data)", | |
"CV" => "_get_zval_ptr_cv_\\1(execute_data, opline->op1.var TSRMLS_CC)", | |
"TMPVAR" => "_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1)", | |
@@ -227,7 +227,7 @@ $op2_get_obj_zval_ptr = array( | |
"ANY" => "get_obj_zval_ptr(opline->op2_type, opline->op2, execute_data, &free_op2, \\1)", | |
"TMP" => "_get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2)", | |
"VAR" => "_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2)", | |
- "CONST" => "opline->op2.zv", | |
+ "CONST" => "EX_CONSTANT(opline->op2)", | |
"UNUSED" => "_get_obj_zval_ptr_unused(execute_data)", | |
"CV" => "_get_zval_ptr_cv_\\1(execute_data, opline->op2.var TSRMLS_CC)", | |
"TMPVAR" => "_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2)", | |
@@ -237,7 +237,7 @@ $op1_get_obj_zval_ptr_deref = array( | |
"ANY" => "get_obj_zval_ptr(opline->op1_type, opline->op1, execute_data, &free_op1, \\1)", | |
"TMP" => "_get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1)", | |
"VAR" => "_get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1)", | |
- "CONST" => "opline->op1.zv", | |
+ "CONST" => "EX_CONSTANT(opline->op1)", | |
"UNUSED" => "_get_obj_zval_ptr_unused(execute_data)", | |
"CV" => "_get_zval_ptr_cv_deref_\\1(execute_data, opline->op1.var TSRMLS_CC)", | |
"TMPVAR" => "???", | |
@@ -247,7 +247,7 @@ $op2_get_obj_zval_ptr_deref = array( | |
"ANY" => "get_obj_zval_ptr(opline->op2_type, opline->op2, execute_data, &free_op2, \\1)", | |
"TMP" => "_get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2)", | |
"VAR" => "_get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2)", | |
- "CONST" => "opline->op2.zv", | |
+ "CONST" => "EX_CONSTANT(opline->op2)", | |
"UNUSED" => "_get_obj_zval_ptr_unused(execute_data)", | |
"CV" => "_get_zval_ptr_cv_deref_\\1(execute_data, opline->op2.var TSRMLS_CC)", | |
"TMPVAR" => "???", | |
diff --git a/ext/opcache/Optimizer/pass1_5.c b/ext/opcache/Optimizer/pass1_5.c | |
index 15bca2a..6eb6a4c 100644 | |
--- a/ext/opcache/Optimizer/pass1_5.c | |
+++ b/ext/opcache/Optimizer/pass1_5.c | |
@@ -401,7 +401,7 @@ void zend_optimizer_pass1(zend_op_array *op_array, zend_optimizer_ctx *ctx TSRML | |
opline->result_type = IS_UNUSED; | |
opline->op1.constant = send1_opline->op1.constant; | |
opline->op2.constant = send2_opline->op1.constant; | |
- opline->result.zv = NULL; | |
+ opline->result.num = 0; | |
literal_dtor(&ZEND_OP2_LITERAL(init_opline)); | |
MAKE_NOP(init_opline); | |
diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c | |
index 3200979..a36b658 100644 | |
--- a/ext/opcache/Optimizer/zend_optimizer.c | |
+++ b/ext/opcache/Optimizer/zend_optimizer.c | |
@@ -428,20 +428,20 @@ static void zend_accel_optimize(zend_op_array *op_array, | |
end = opline + op_array->last; | |
while (opline < end) { | |
if (opline->op1_type == IS_CONST) { | |
- opline->op1.constant = opline->op1.zv - op_array->literals; | |
+ ZEND_PASS_TWO_UNDO_CONSTANT(op_array, opline->op1); | |
} | |
if (opline->op2_type == IS_CONST) { | |
- opline->op2.constant = opline->op2.zv - op_array->literals; | |
+ ZEND_PASS_TWO_UNDO_CONSTANT(op_array, opline->op2); | |
} | |
switch (opline->opcode) { | |
case ZEND_JMP: | |
case ZEND_GOTO: | |
case ZEND_FAST_CALL: | |
- ZEND_OP1(opline).opline_num = ZEND_OP1(opline).jmp_addr - op_array->opcodes; | |
+ ZEND_PASS_TWO_UNDO_JMP_TARGET(op_array, opline, ZEND_OP1(opline)); | |
break; | |
case ZEND_JMPZNZ: | |
/* relative offset into absolute index */ | |
- opline->extended_value = (zend_op*)(((char*)opline) + opline->extended_value) - op_array->opcodes; | |
+ opline->extended_value = ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value); | |
/* break omitted intentionally */ | |
case ZEND_JMPZ: | |
case ZEND_JMPNZ: | |
@@ -452,7 +452,7 @@ static void zend_accel_optimize(zend_op_array *op_array, | |
case ZEND_NEW: | |
case ZEND_FE_RESET: | |
case ZEND_FE_FETCH: | |
- ZEND_OP2(opline).opline_num = ZEND_OP2(opline).jmp_addr - op_array->opcodes; | |
+ ZEND_PASS_TWO_UNDO_JMP_TARGET(op_array, opline, ZEND_OP2(opline)); | |
break; | |
} | |
opline++; | |
@@ -466,20 +466,20 @@ static void zend_accel_optimize(zend_op_array *op_array, | |
end = opline + op_array->last; | |
while (opline < end) { | |
if (opline->op1_type == IS_CONST) { | |
- opline->op1.zv = &op_array->literals[opline->op1.constant]; | |
+ ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline->op1); | |
} | |
if (opline->op2_type == IS_CONST) { | |
- opline->op2.zv = &op_array->literals[opline->op2.constant]; | |
+ ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline->op2); | |
} | |
switch (opline->opcode) { | |
case ZEND_JMP: | |
case ZEND_GOTO: | |
case ZEND_FAST_CALL: | |
- ZEND_OP1(opline).jmp_addr = &op_array->opcodes[ZEND_OP1(opline).opline_num]; | |
+ ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, ZEND_OP1(opline)); | |
break; | |
case ZEND_JMPZNZ: | |
/* absolute index to relative offset */ | |
- opline->extended_value = (char*)(op_array->opcodes + opline->extended_value) - (char*)opline; | |
+ opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, opline->extended_value); | |
/* break omitted intentionally */ | |
case ZEND_JMPZ: | |
case ZEND_JMPNZ: | |
@@ -490,7 +490,7 @@ static void zend_accel_optimize(zend_op_array *op_array, | |
case ZEND_NEW: | |
case ZEND_FE_RESET: | |
case ZEND_FE_FETCH: | |
- ZEND_OP2(opline).jmp_addr = &op_array->opcodes[ZEND_OP2(opline).opline_num]; | |
+ ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, ZEND_OP2(opline)); | |
break; | |
} | |
ZEND_VM_SET_OPCODE_HANDLER(opline); | |
diff --git a/ext/opcache/zend_persist.c b/ext/opcache/zend_persist.c | |
index f6ade86..f790a5d 100644 | |
--- a/ext/opcache/zend_persist.c | |
+++ b/ext/opcache/zend_persist.c | |
@@ -345,18 +345,21 @@ static void zend_persist_op_array_ex(zend_op_array *op_array, zend_persistent_sc | |
op_array->opcodes = persist_ptr; | |
} else { | |
zend_op *new_opcodes = zend_accel_memdup(op_array->opcodes, sizeof(zend_op) * op_array->last); | |
+#if ZEND_USE_ABS_CONST_ADDR || ZEND_USE_ABS_JMP_ADDR | |
zend_op *opline = new_opcodes; | |
zend_op *end = new_opcodes + op_array->last; | |
int offset = 0; | |
for (; opline < end ; opline++, offset++) { | |
+# if ZEND_USE_ABS_CONST_ADDR | |
if (ZEND_OP1_TYPE(opline) == IS_CONST) { | |
opline->op1.zv = (zval*)((char*)opline->op1.zv + ((char*)op_array->literals - (char*)orig_literals)); | |
} | |
if (ZEND_OP2_TYPE(opline) == IS_CONST) { | |
opline->op2.zv = (zval*)((char*)opline->op2.zv + ((char*)op_array->literals - (char*)orig_literals)); | |
} | |
- | |
+# endif | |
+# if ZEND_USE_ABS_JMP_ADDR | |
if (ZEND_DONE_PASS_TWO(op_array)) { | |
/* fix jumps to point to new array */ | |
switch (opline->opcode) { | |
@@ -381,7 +384,9 @@ static void zend_persist_op_array_ex(zend_op_array *op_array, zend_persistent_sc | |
break; | |
} | |
} | |
+# endif | |
} | |
+#endif | |
efree(op_array->opcodes); | |
op_array->opcodes = new_opcodes; | |
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c | |
index 7d8f2b4..18906d6 100644 | |
--- a/ext/reflection/php_reflection.c | |
+++ b/ext/reflection/php_reflection.c | |
@@ -722,7 +722,7 @@ static void _parameter_string(string *str, zend_function *fptr, struct _zend_arg | |
zend_class_entry *old_scope; | |
string_write(str, " = ", sizeof(" = ")-1); | |
- ZVAL_DUP(&zv, precv->op2.zv); | |
+ ZVAL_DUP(&zv, RT_CONSTANT(&fptr->op_array, precv->op2)); | |
old_scope = EG(scope); | |
EG(scope) = fptr->common.scope; | |
zval_update_constant_ex(&zv, 1, NULL TSRMLS_CC); | |
@@ -2618,7 +2618,7 @@ ZEND_METHOD(reflection_parameter, getDefaultValue) | |
return; | |
} | |
- ZVAL_COPY_VALUE(return_value, precv->op2.zv); | |
+ ZVAL_COPY_VALUE(return_value, RT_CONSTANT(¶m->fptr->op_array, precv->op2)); | |
if (Z_CONSTANT_P(return_value)) { | |
zend_class_entry *old_scope = EG(scope); | |
@@ -2648,7 +2648,7 @@ ZEND_METHOD(reflection_parameter, isDefaultValueConstant) | |
} | |
precv = _reflection_param_get_default_precv(INTERNAL_FUNCTION_PARAM_PASSTHRU, param); | |
- if (precv && Z_TYPE_P(precv->op2.zv) == IS_CONSTANT) { | |
+ if (precv && Z_TYPE_P(RT_CONSTANT(¶m->fptr->op_array, precv->op2)) == IS_CONSTANT) { | |
RETURN_TRUE; | |
} | |
@@ -2673,8 +2673,8 @@ ZEND_METHOD(reflection_parameter, getDefaultValueConstantName) | |
} | |
precv = _reflection_param_get_default_precv(INTERNAL_FUNCTION_PARAM_PASSTHRU, param); | |
- if (precv && Z_TYPE_P(precv->op2.zv) == IS_CONSTANT) { | |
- RETURN_STR(zend_string_copy(Z_STR_P(precv->op2.zv))); | |
+ if (precv && Z_TYPE_P(RT_CONSTANT(¶m->fptr->op_array, precv->op2)) == IS_CONSTANT) { | |
+ RETURN_STR(zend_string_copy(Z_STR_P(RT_CONSTANT(¶m->fptr->op_array, precv->op2)))); | |
} | |
} | |
/* }}} */ | |
diff --git a/sapi/phpdbg/phpdbg_opcode.c b/sapi/phpdbg/phpdbg_opcode.c | |
index 99f4334..20841cb 100644 | |
--- a/sapi/phpdbg/phpdbg_opcode.c | |
+++ b/sapi/phpdbg/phpdbg_opcode.c | |
@@ -64,7 +64,7 @@ static inline char *phpdbg_decode_op(zend_op_array *ops, znode_op *op, uint32_t | |
} break; | |
case IS_CONST: | |
- asprintf(&decode, "C%u", phpdbg_decode_literal(ops, op->zv TSRMLS_CC)); | |
+ asprintf(&decode, "C%u", phpdbg_decode_literal(ops, RT_CONSTANT(ops, *op) TSRMLS_CC)); | |
break; | |
case IS_UNUSED: | |
@@ -86,7 +86,7 @@ char *phpdbg_decode_opline(zend_op_array *ops, zend_op *op, HashTable *vars TSRM | |
#ifdef ZEND_FAST_CALL | |
case ZEND_FAST_CALL: | |
#endif | |
- asprintf(&decode[1], "J%ld", op->op1.jmp_addr - ops->opcodes); | |
+ asprintf(&decode[1], "J%ld", OP_JMP_ADDR(op, op->op1) - ops->opcodes); | |
goto format; | |
case ZEND_JMPZNZ: | |
@@ -103,7 +103,7 @@ char *phpdbg_decode_opline(zend_op_array *ops, zend_op *op, HashTable *vars TSRM | |
case ZEND_JMP_SET: | |
#endif | |
decode[1] = phpdbg_decode_op(ops, &op->op1, op->op1_type, vars TSRMLS_CC); | |
- asprintf(&decode[2], "J%ld", op->op2.jmp_addr - ops->opcodes); | |
+ asprintf(&decode[2], "J%ld", OP_JMP_ADDR(op, op->op2) - ops->opcodes); | |
goto result; | |
case ZEND_RECV_INIT: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment