mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Get rid of zend_free_op structure (use zval* instead).
Get rid of useless TSRMLS arguments.
This commit is contained in:
parent
96220027e1
commit
c746dcd7fd
5 changed files with 1934 additions and 1959 deletions
|
@ -99,13 +99,13 @@ static const zend_internal_function zend_pass_function = {
|
|||
} while (0)
|
||||
|
||||
#define FREE_OP(should_free) \
|
||||
if (should_free.var) { \
|
||||
zval_ptr_dtor_nogc(should_free.var); \
|
||||
if (should_free) { \
|
||||
zval_ptr_dtor_nogc(should_free); \
|
||||
}
|
||||
|
||||
#define FREE_OP_VAR_PTR(should_free) \
|
||||
if (should_free.var) { \
|
||||
zval_ptr_dtor_nogc(should_free.var); \
|
||||
if (should_free) { \
|
||||
zval_ptr_dtor_nogc(should_free); \
|
||||
}
|
||||
|
||||
/* End of zend_execute_locks.h */
|
||||
|
@ -183,29 +183,29 @@ ZEND_API zval* zend_get_compiled_variable_value(const zend_execute_data *execute
|
|||
return EX_VAR(var);
|
||||
}
|
||||
|
||||
static zend_always_inline zval *_get_zval_ptr_tmp(uint32_t var, const zend_execute_data *execute_data, zend_free_op *should_free TSRMLS_DC)
|
||||
static zend_always_inline zval *_get_zval_ptr_tmp(uint32_t var, const zend_execute_data *execute_data, zend_free_op *should_free)
|
||||
{
|
||||
zval *ret = EX_VAR(var);
|
||||
should_free->var = ret;
|
||||
*should_free = ret;
|
||||
|
||||
ZEND_ASSERT(Z_TYPE_P(ret) != IS_REFERENCE);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static zend_always_inline zval *_get_zval_ptr_var(uint32_t var, const zend_execute_data *execute_data, zend_free_op *should_free TSRMLS_DC)
|
||||
static zend_always_inline zval *_get_zval_ptr_var(uint32_t var, const zend_execute_data *execute_data, zend_free_op *should_free)
|
||||
{
|
||||
zval *ret = EX_VAR(var);
|
||||
|
||||
should_free->var = ret;
|
||||
*should_free = ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static zend_always_inline zval *_get_zval_ptr_var_deref(uint32_t var, const zend_execute_data *execute_data, zend_free_op *should_free TSRMLS_DC)
|
||||
static zend_always_inline zval *_get_zval_ptr_var_deref(uint32_t var, const zend_execute_data *execute_data, zend_free_op *should_free)
|
||||
{
|
||||
zval *ret = EX_VAR(var);
|
||||
|
||||
should_free->var = ret;
|
||||
*should_free = ret;
|
||||
ZVAL_DEREF(ret);
|
||||
return ret;
|
||||
}
|
||||
|
@ -392,75 +392,53 @@ static zend_always_inline zval *_get_zval_ptr_cv_deref_BP_VAR_W(const zend_execu
|
|||
|
||||
static inline zval *_get_zval_ptr(int op_type, const znode_op *node, const zend_execute_data *execute_data, zend_free_op *should_free, int type TSRMLS_DC)
|
||||
{
|
||||
zval *ret;
|
||||
|
||||
switch (op_type) {
|
||||
case IS_CONST:
|
||||
should_free->var = NULL;
|
||||
*should_free = NULL;
|
||||
return node->zv;
|
||||
break;
|
||||
case IS_TMP_VAR:
|
||||
ret = EX_VAR(node->var);
|
||||
should_free->var = ret;
|
||||
return ret;
|
||||
break;
|
||||
return _get_zval_ptr_tmp(node->var, execute_data, should_free);
|
||||
case IS_VAR:
|
||||
return _get_zval_ptr_var(node->var, execute_data, should_free TSRMLS_CC);
|
||||
break;
|
||||
case IS_UNUSED:
|
||||
should_free->var = NULL;
|
||||
return NULL;
|
||||
break;
|
||||
return _get_zval_ptr_var(node->var, execute_data, should_free);
|
||||
case IS_CV:
|
||||
default:
|
||||
should_free->var = NULL;
|
||||
*should_free = NULL;
|
||||
return _get_zval_ptr_cv(execute_data, node->var, type TSRMLS_CC);
|
||||
break;
|
||||
default:
|
||||
*should_free = NULL;
|
||||
return NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline zval *_get_zval_ptr_deref(int op_type, const znode_op *node, const zend_execute_data *execute_data, zend_free_op *should_free, int type TSRMLS_DC)
|
||||
{
|
||||
zval *ret;
|
||||
|
||||
switch (op_type) {
|
||||
case IS_CONST:
|
||||
should_free->var = NULL;
|
||||
*should_free = NULL;
|
||||
return node->zv;
|
||||
break;
|
||||
case IS_TMP_VAR:
|
||||
ret = EX_VAR(node->var);
|
||||
should_free->var = ret;
|
||||
return ret;
|
||||
break;
|
||||
return _get_zval_ptr_tmp(node->var, execute_data, should_free);
|
||||
case IS_VAR:
|
||||
return _get_zval_ptr_var_deref(node->var, execute_data, should_free TSRMLS_CC);
|
||||
break;
|
||||
case IS_UNUSED:
|
||||
should_free->var = NULL;
|
||||
return NULL;
|
||||
break;
|
||||
return _get_zval_ptr_var_deref(node->var, execute_data, should_free);
|
||||
case IS_CV:
|
||||
default:
|
||||
should_free->var = NULL;
|
||||
*should_free = NULL;
|
||||
return _get_zval_ptr_cv_deref(execute_data, node->var, type TSRMLS_CC);
|
||||
break;
|
||||
default:
|
||||
*should_free = NULL;
|
||||
return NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static zend_always_inline zval *_get_zval_ptr_ptr_var(uint32_t var, const zend_execute_data *execute_data, zend_free_op *should_free TSRMLS_DC)
|
||||
static zend_always_inline zval *_get_zval_ptr_ptr_var(uint32_t var, const zend_execute_data *execute_data, zend_free_op *should_free)
|
||||
{
|
||||
zval *ret = EX_VAR(var);
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(ret) == IS_INDIRECT)) {
|
||||
should_free->var = NULL;
|
||||
*should_free = NULL;
|
||||
ret = Z_INDIRECT_P(ret);
|
||||
} else {
|
||||
should_free->var = ret;
|
||||
*should_free = ret;
|
||||
if (Z_REFCOUNTED_P(ret) && Z_REFCOUNT_P(ret) > 1) {
|
||||
should_free->var = NULL;
|
||||
*should_free = NULL;
|
||||
Z_DELREF_P(ret);
|
||||
}
|
||||
}
|
||||
|
@ -470,15 +448,15 @@ static zend_always_inline zval *_get_zval_ptr_ptr_var(uint32_t var, const zend_e
|
|||
static inline zval *_get_zval_ptr_ptr(int op_type, const znode_op *node, const zend_execute_data *execute_data, zend_free_op *should_free, int type TSRMLS_DC)
|
||||
{
|
||||
if (op_type == IS_CV) {
|
||||
should_free->var = NULL;
|
||||
*should_free = NULL;
|
||||
return _get_zval_ptr_cv(execute_data, node->var, type TSRMLS_CC);
|
||||
} else /* if (op_type == IS_VAR) */ {
|
||||
ZEND_ASSERT(op_type == IS_VAR);
|
||||
return _get_zval_ptr_ptr_var(node->var, execute_data, should_free TSRMLS_CC);
|
||||
return _get_zval_ptr_ptr_var(node->var, execute_data, should_free);
|
||||
}
|
||||
}
|
||||
|
||||
static zend_always_inline zval *_get_obj_zval_ptr_unused(zend_execute_data *execute_data TSRMLS_DC)
|
||||
static zend_always_inline zval *_get_obj_zval_ptr_unused(zend_execute_data *execute_data)
|
||||
{
|
||||
if (EXPECTED(Z_OBJ(EX(This)) != NULL)) {
|
||||
return &EX(This);
|
||||
|
@ -492,7 +470,7 @@ static inline zval *_get_obj_zval_ptr(int op_type, znode_op *op, zend_execute_da
|
|||
{
|
||||
if (op_type == IS_UNUSED) {
|
||||
if (EXPECTED(Z_OBJ(EX(This)) != NULL)) {
|
||||
should_free->var = NULL;
|
||||
*should_free = NULL;
|
||||
return &EX(This);
|
||||
} else {
|
||||
zend_error_noreturn(E_ERROR, "Using $this when not in object context");
|
||||
|
@ -505,7 +483,7 @@ static inline zval *_get_obj_zval_ptr_ptr(int op_type, const znode_op *node, zen
|
|||
{
|
||||
if (op_type == IS_UNUSED) {
|
||||
if (EXPECTED(Z_OBJ(EX(This)) != NULL)) {
|
||||
should_free->var = NULL;
|
||||
*should_free = NULL;
|
||||
return &EX(This);
|
||||
} else {
|
||||
zend_error_noreturn(E_ERROR, "Using $this when not in object context");
|
||||
|
|
|
@ -261,10 +261,7 @@ ZEND_API int zend_set_user_opcode_handler(zend_uchar opcode, user_opcode_handler
|
|||
ZEND_API user_opcode_handler_t zend_get_user_opcode_handler(zend_uchar opcode);
|
||||
|
||||
/* former zend_execute_locks.h */
|
||||
typedef struct _zend_free_op {
|
||||
zval *var;
|
||||
/* int is_var; */
|
||||
} zend_free_op;
|
||||
typedef zval* zend_free_op;
|
||||
|
||||
ZEND_API zval *zend_get_zval_ptr(int op_type, const znode_op *node, const zend_execute_data *execute_data, zend_free_op *should_free, int type TSRMLS_DC);
|
||||
|
||||
|
|
|
@ -1199,7 +1199,7 @@ ZEND_VM_HANDLER(84, ZEND_FETCH_DIM_W, VAR|CV, CONST|TMP|VAR|UNUSED|CV)
|
|||
ZVAL_DEREF(container);
|
||||
zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, GET_OP2_ZVAL_PTR_DEREF(BP_VAR_R), OP2_TYPE TSRMLS_CC);
|
||||
FREE_OP2();
|
||||
if (OP1_TYPE == IS_VAR && READY_TO_DESTROY(free_op1.var)) {
|
||||
if (OP1_TYPE == IS_VAR && READY_TO_DESTROY(free_op1)) {
|
||||
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
|
||||
}
|
||||
FREE_OP1_VAR_PTR();
|
||||
|
@ -1222,7 +1222,7 @@ ZEND_VM_HANDLER(87, ZEND_FETCH_DIM_RW, VAR|CV, CONST|TMP|VAR|UNUSED|CV)
|
|||
ZVAL_DEREF(container);
|
||||
zend_fetch_dimension_address_RW(EX_VAR(opline->result.var), container, GET_OP2_ZVAL_PTR_DEREF(BP_VAR_R), OP2_TYPE TSRMLS_CC);
|
||||
FREE_OP2();
|
||||
if (OP1_TYPE == IS_VAR && READY_TO_DESTROY(free_op1.var)) {
|
||||
if (OP1_TYPE == IS_VAR && READY_TO_DESTROY(free_op1)) {
|
||||
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
|
||||
}
|
||||
FREE_OP1_VAR_PTR();
|
||||
|
@ -1263,7 +1263,7 @@ ZEND_VM_HANDLER(93, ZEND_FETCH_DIM_FUNC_ARG, CONST|TMP|VAR|CV, CONST|TMP|VAR|UNU
|
|||
}
|
||||
ZVAL_DEREF(container);
|
||||
zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, GET_OP2_ZVAL_PTR_DEREF(BP_VAR_R), OP2_TYPE TSRMLS_CC);
|
||||
if (OP1_TYPE == IS_VAR && READY_TO_DESTROY(free_op1.var)) {
|
||||
if (OP1_TYPE == IS_VAR && READY_TO_DESTROY(free_op1)) {
|
||||
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
|
||||
}
|
||||
FREE_OP2();
|
||||
|
@ -1296,7 +1296,7 @@ ZEND_VM_HANDLER(96, ZEND_FETCH_DIM_UNSET, VAR|CV, CONST|TMP|VAR|CV)
|
|||
ZVAL_DEREF(container);
|
||||
zend_fetch_dimension_address_UNSET(EX_VAR(opline->result.var), container, GET_OP2_ZVAL_PTR_DEREF(BP_VAR_R), OP2_TYPE TSRMLS_CC);
|
||||
FREE_OP2();
|
||||
if (OP1_TYPE == IS_VAR && READY_TO_DESTROY(free_op1.var)) {
|
||||
if (OP1_TYPE == IS_VAR && READY_TO_DESTROY(free_op1)) {
|
||||
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
|
||||
}
|
||||
FREE_OP1_VAR_PTR();
|
||||
|
@ -1376,7 +1376,7 @@ ZEND_VM_HANDLER(85, ZEND_FETCH_OBJ_W, VAR|UNUSED|CV, CONST|TMP|VAR|CV)
|
|||
|
||||
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.var)) {
|
||||
if (OP1_TYPE == IS_VAR && READY_TO_DESTROY(free_op1)) {
|
||||
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
|
||||
}
|
||||
FREE_OP1_VAR_PTR();
|
||||
|
@ -1400,7 +1400,7 @@ ZEND_VM_HANDLER(88, ZEND_FETCH_OBJ_RW, VAR|UNUSED|CV, CONST|TMP|VAR|CV)
|
|||
}
|
||||
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.var)) {
|
||||
if (OP1_TYPE == IS_VAR && READY_TO_DESTROY(free_op1)) {
|
||||
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
|
||||
}
|
||||
FREE_OP1_VAR_PTR();
|
||||
|
@ -1484,7 +1484,7 @@ ZEND_VM_HANDLER(94, ZEND_FETCH_OBJ_FUNC_ARG, CONST|TMP|VAR|UNUSED|CV, CONST|TMP|
|
|||
}
|
||||
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.var)) {
|
||||
if (OP1_TYPE == IS_VAR && READY_TO_DESTROY(free_op1)) {
|
||||
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
|
||||
}
|
||||
FREE_OP1_VAR_PTR();
|
||||
|
@ -1510,7 +1510,7 @@ ZEND_VM_HANDLER(97, ZEND_FETCH_OBJ_UNSET, VAR|UNUSED|CV, CONST|TMP|VAR|CV)
|
|||
}
|
||||
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.var)) {
|
||||
if (OP1_TYPE == IS_VAR && READY_TO_DESTROY(free_op1)) {
|
||||
EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
|
||||
}
|
||||
FREE_OP1_VAR_PTR();
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -100,18 +100,18 @@ $op2_type = array(
|
|||
);
|
||||
|
||||
$op1_free = array(
|
||||
"ANY" => "(free_op1.var != NULL)",
|
||||
"ANY" => "(free_op1 != NULL)",
|
||||
"TMP" => "1",
|
||||
"VAR" => "(free_op1.var != NULL)",
|
||||
"VAR" => "(free_op1 != NULL)",
|
||||
"CONST" => "0",
|
||||
"UNUSED" => "0",
|
||||
"CV" => "0",
|
||||
);
|
||||
|
||||
$op2_free = array(
|
||||
"ANY" => "(free_op2.var != NULL)",
|
||||
"ANY" => "(free_op2 != NULL)",
|
||||
"TMP" => "1",
|
||||
"VAR" => "(free_op2.var != NULL)",
|
||||
"VAR" => "(free_op2 != NULL)",
|
||||
"CONST" => "0",
|
||||
"UNUSED" => "0",
|
||||
"CV" => "0",
|
||||
|
@ -119,8 +119,8 @@ $op2_free = array(
|
|||
|
||||
$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 TSRMLS_CC)",
|
||||
"VAR" => "_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC)",
|
||||
"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",
|
||||
"UNUSED" => "NULL",
|
||||
"CV" => "_get_zval_ptr_cv_\\1(execute_data, opline->op1.var TSRMLS_CC)",
|
||||
|
@ -128,8 +128,8 @@ $op1_get_zval_ptr = array(
|
|||
|
||||
$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 TSRMLS_CC)",
|
||||
"VAR" => "_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC)",
|
||||
"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",
|
||||
"UNUSED" => "NULL",
|
||||
"CV" => "_get_zval_ptr_cv_\\1(execute_data, opline->op2.var TSRMLS_CC)",
|
||||
|
@ -138,7 +138,7 @@ $op2_get_zval_ptr = array(
|
|||
$op1_get_zval_ptr_ptr = array(
|
||||
"ANY" => "get_zval_ptr_ptr(opline->op1_type, &opline->op1, execute_data, &free_op1, \\1)",
|
||||
"TMP" => "NULL",
|
||||
"VAR" => "_get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC)",
|
||||
"VAR" => "_get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1)",
|
||||
"CONST" => "NULL",
|
||||
"UNUSED" => "NULL",
|
||||
"CV" => "_get_zval_ptr_cv_\\1(execute_data, opline->op1.var TSRMLS_CC)",
|
||||
|
@ -147,7 +147,7 @@ $op1_get_zval_ptr_ptr = array(
|
|||
$op2_get_zval_ptr_ptr = array(
|
||||
"ANY" => "get_zval_ptr_ptr(opline->op2_type, &opline->op2, execute_data, &free_op2, \\1)",
|
||||
"TMP" => "NULL",
|
||||
"VAR" => "_get_zval_ptr_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC)",
|
||||
"VAR" => "_get_zval_ptr_ptr_var(opline->op2.var, execute_data, &free_op2)",
|
||||
"CONST" => "NULL",
|
||||
"UNUSED" => "NULL",
|
||||
"CV" => "_get_zval_ptr_cv_\\1(execute_data, opline->op2.var TSRMLS_CC)",
|
||||
|
@ -155,8 +155,8 @@ $op2_get_zval_ptr_ptr = array(
|
|||
|
||||
$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 TSRMLS_CC)",
|
||||
"VAR" => "_get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC)",
|
||||
"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",
|
||||
"UNUSED" => "NULL",
|
||||
"CV" => "_get_zval_ptr_cv_deref_\\1(execute_data, opline->op1.var TSRMLS_CC)",
|
||||
|
@ -164,8 +164,8 @@ $op1_get_zval_ptr_deref = array(
|
|||
|
||||
$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 TSRMLS_CC)",
|
||||
"VAR" => "_get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2 TSRMLS_CC)",
|
||||
"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",
|
||||
"UNUSED" => "NULL",
|
||||
"CV" => "_get_zval_ptr_cv_deref_\\1(execute_data, opline->op2.var TSRMLS_CC)",
|
||||
|
@ -174,7 +174,7 @@ $op2_get_zval_ptr_deref = array(
|
|||
$op1_get_zval_ptr_ptr_undef = array(
|
||||
"ANY" => "get_zval_ptr_ptr_undef(opline->op1_type, &opline->op1, execute_data, &free_op1, \\1)",
|
||||
"TMP" => "NULL",
|
||||
"VAR" => "_get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC)",
|
||||
"VAR" => "_get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1)",
|
||||
"CONST" => "NULL",
|
||||
"UNUSED" => "NULL",
|
||||
"CV" => "_get_zval_ptr_cv_undef_\\1(execute_data, opline->op1.var TSRMLS_CC)",
|
||||
|
@ -183,7 +183,7 @@ $op1_get_zval_ptr_ptr_undef = array(
|
|||
$op2_get_zval_ptr_ptr_undef = array(
|
||||
"ANY" => "get_zval_ptr_ptr_undef(opline->op2_type, &opline->op2, execute_data, &free_op2, \\1)",
|
||||
"TMP" => "NULL",
|
||||
"VAR" => "_get_zval_ptr_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC)",
|
||||
"VAR" => "_get_zval_ptr_ptr_var(opline->op2.var, execute_data, &free_op2)",
|
||||
"CONST" => "NULL",
|
||||
"UNUSED" => "NULL",
|
||||
"CV" => "_get_zval_ptr_cv_undef_\\1(execute_data, opline->op2.var TSRMLS_CC)",
|
||||
|
@ -191,62 +191,62 @@ $op2_get_zval_ptr_ptr_undef = array(
|
|||
|
||||
$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 TSRMLS_CC)",
|
||||
"VAR" => "_get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC)",
|
||||
"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",
|
||||
"UNUSED" => "_get_obj_zval_ptr_unused(TSRMLS_C)",
|
||||
"UNUSED" => "_get_obj_zval_ptr_unused(execute_data)",
|
||||
"CV" => "_get_zval_ptr_cv_\\1(execute_data, opline->op1.var TSRMLS_CC)",
|
||||
);
|
||||
|
||||
$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 TSRMLS_CC)",
|
||||
"VAR" => "_get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC)",
|
||||
"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",
|
||||
"UNUSED" => "_get_obj_zval_ptr_unused(TSRMLS_C)",
|
||||
"UNUSED" => "_get_obj_zval_ptr_unused(execute_data)",
|
||||
"CV" => "_get_zval_ptr_cv_\\1(execute_data, opline->op2.var TSRMLS_CC)",
|
||||
);
|
||||
|
||||
$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 TSRMLS_CC)",
|
||||
"VAR" => "_get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC)",
|
||||
"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",
|
||||
"UNUSED" => "_get_obj_zval_ptr_unused(execute_data TSRMLS_CC)",
|
||||
"UNUSED" => "_get_obj_zval_ptr_unused(execute_data)",
|
||||
"CV" => "_get_zval_ptr_cv_deref_\\1(execute_data, opline->op1.var TSRMLS_CC)",
|
||||
);
|
||||
|
||||
$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 TSRMLS_CC)",
|
||||
"VAR" => "_get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2 TSRMLS_CC)",
|
||||
"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",
|
||||
"UNUSED" => "_get_obj_zval_ptr_unused(execute_data TSRMLS_CC)",
|
||||
"UNUSED" => "_get_obj_zval_ptr_unused(execute_data)",
|
||||
"CV" => "_get_zval_ptr_cv_deref_\\1(execute_data, opline->op2.var TSRMLS_CC)",
|
||||
);
|
||||
|
||||
$op1_get_obj_zval_ptr_ptr = array(
|
||||
"ANY" => "get_obj_zval_ptr_ptr(opline->op1_type, &opline->op1, execute_data, &free_op1, \\1)",
|
||||
"TMP" => "NULL",
|
||||
"VAR" => "_get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC)",
|
||||
"VAR" => "_get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1)",
|
||||
"CONST" => "NULL",
|
||||
"UNUSED" => "_get_obj_zval_ptr_unused(execute_data TSRMLS_CC)",
|
||||
"UNUSED" => "_get_obj_zval_ptr_unused(execute_data)",
|
||||
"CV" => "_get_zval_ptr_cv_\\1(execute_data, opline->op1.var TSRMLS_CC)",
|
||||
);
|
||||
|
||||
$op2_get_obj_zval_ptr_ptr = array(
|
||||
"ANY" => "get_obj_zval_ptr_ptr(opline->op2_type, &opline->op2, execute_data, &free_op2, \\1)",
|
||||
"TMP" => "NULL",
|
||||
"VAR" => "_get_zval_ptr_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC)",
|
||||
"VAR" => "_get_zval_ptr_ptr_var(opline->op2.var, execute_data, &free_op2)",
|
||||
"CONST" => "NULL",
|
||||
"UNUSED" => "_get_obj_zval_ptr_unused(execute_data TSRMLS_CC)",
|
||||
"UNUSED" => "_get_obj_zval_ptr_unused(execute_data)",
|
||||
"CV" => "_get_zval_ptr_cv_\\1(execute_data, opline->op2.var TSRMLS_CC)",
|
||||
);
|
||||
|
||||
$op1_free_op = array(
|
||||
"ANY" => "FREE_OP(free_op1)",
|
||||
"TMP" => "zval_ptr_dtor_nogc(free_op1.var)",
|
||||
"VAR" => "zval_ptr_dtor_nogc(free_op1.var)",
|
||||
"TMP" => "zval_ptr_dtor_nogc(free_op1)",
|
||||
"VAR" => "zval_ptr_dtor_nogc(free_op1)",
|
||||
"CONST" => "",
|
||||
"UNUSED" => "",
|
||||
"CV" => "",
|
||||
|
@ -254,44 +254,44 @@ $op1_free_op = array(
|
|||
|
||||
$op2_free_op = array(
|
||||
"ANY" => "FREE_OP(free_op2)",
|
||||
"TMP" => "zval_ptr_dtor_nogc(free_op2.var)",
|
||||
"VAR" => "zval_ptr_dtor_nogc(free_op2.var)",
|
||||
"TMP" => "zval_ptr_dtor_nogc(free_op2)",
|
||||
"VAR" => "zval_ptr_dtor_nogc(free_op2)",
|
||||
"CONST" => "",
|
||||
"UNUSED" => "",
|
||||
"CV" => "",
|
||||
);
|
||||
|
||||
$op1_free_op_if_var = array(
|
||||
"ANY" => "if (opline->op1_type == IS_VAR) {zval_ptr_dtor_nogc(free_op1.var);}",
|
||||
"ANY" => "if (opline->op1_type == IS_VAR) {zval_ptr_dtor_nogc(free_op1);}",
|
||||
"TMP" => "",
|
||||
"VAR" => "zval_ptr_dtor_nogc(free_op1.var)",
|
||||
"VAR" => "zval_ptr_dtor_nogc(free_op1)",
|
||||
"CONST" => "",
|
||||
"UNUSED" => "",
|
||||
"CV" => "",
|
||||
);
|
||||
|
||||
$op2_free_op_if_var = array(
|
||||
"ANY" => "if (opline->op1_type == IS_VAR) {zval_ptr_dtor_nogc(free_op1.var);}",
|
||||
"ANY" => "if (opline->op2_type == IS_VAR) {zval_ptr_dtor_nogc(free_op2);}",
|
||||
"TMP" => "",
|
||||
"VAR" => "zval_ptr_dtor_nogc(free_op2.var)",
|
||||
"VAR" => "zval_ptr_dtor_nogc(free_op2)",
|
||||
"CONST" => "",
|
||||
"UNUSED" => "",
|
||||
"CV" => "",
|
||||
);
|
||||
|
||||
$op1_free_op_var_ptr = array(
|
||||
"ANY" => "if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}",
|
||||
"ANY" => "if (free_op1) {zval_ptr_dtor_nogc(free_op1);}",
|
||||
"TMP" => "",
|
||||
"VAR" => "if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);}",
|
||||
"VAR" => "if (free_op1) {zval_ptr_dtor_nogc(free_op1);}",
|
||||
"CONST" => "",
|
||||
"UNUSED" => "",
|
||||
"CV" => "",
|
||||
);
|
||||
|
||||
$op2_free_op_var_ptr = array(
|
||||
"ANY" => "if (free_op2.var) {zval_ptr_dtor_nogc(free_op2.var);}",
|
||||
"ANY" => "if (free_op2) {zval_ptr_dtor_nogc(free_op2);}",
|
||||
"TMP" => "",
|
||||
"VAR" => "if (free_op2.var) {zval_ptr_dtor_nogc(free_op2.var);}",
|
||||
"VAR" => "if (free_op2) {zval_ptr_dtor_nogc(free_op2);}",
|
||||
"CONST" => "",
|
||||
"UNUSED" => "",
|
||||
"CV" => "",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue