#define RETURN_VALUE_USED(opline) (!((opline)->result.u.EA.type & EXT_TYPE_UNUSED))
+#define EX_T(offset) EX(Ts)[offset]
+#define T(offset) Ts[offset]
+
static inline zval *_get_zval_ptr(znode *node, temp_variable *Ts, zval **should_free TSRMLS_DC)
{
switch(node->op_type) {
return &node->u.constant;
break;
case IS_TMP_VAR:
- return *should_free = &Ts[node->u.var].tmp_var;
+ return *should_free = &T(node->u.var).tmp_var;
break;
case IS_VAR:
- if (Ts[node->u.var].var.ptr) {
- PZVAL_UNLOCK(Ts[node->u.var].var.ptr);
+ if (T(node->u.var).var.ptr) {
+ PZVAL_UNLOCK(T(node->u.var).var.ptr);
*should_free = 0;
- return Ts[node->u.var].var.ptr;
+ return T(node->u.var).var.ptr;
} else {
- *should_free = &Ts[node->u.var].tmp_var;
+ *should_free = &T(node->u.var).tmp_var;
- switch (Ts[node->u.var].EA.type) {
+ switch (T(node->u.var).EA.type) {
case IS_STRING_OFFSET: {
- temp_variable *T = &Ts[node->u.var];
+ temp_variable *T = &T(node->u.var);
zval *str = T->EA.data.str_offset.str;
if (T->EA.data.str_offset.str->type != IS_STRING
static inline zval **_get_zval_ptr_ptr(znode *node, temp_variable *Ts TSRMLS_DC)
{
if (node->op_type==IS_VAR) {
- if (Ts[node->u.var].var.ptr_ptr) {
- PZVAL_UNLOCK(*Ts[node->u.var].var.ptr_ptr);
- } else if (Ts[node->u.var].EA.type==IS_STRING_OFFSET) {
- PZVAL_UNLOCK(Ts[node->u.var].EA.data.str_offset.str);
+ if (T(node->u.var).var.ptr_ptr) {
+ PZVAL_UNLOCK(*T(node->u.var).var.ptr_ptr);
+ } else if (T(node->u.var).EA.type==IS_STRING_OFFSET) {
+ PZVAL_UNLOCK(T(node->u.var).EA.data.str_offset.str);
}
- return Ts[node->u.var].var.ptr_ptr;
+ return T(node->u.var).var.ptr_ptr;
} else {
return NULL;
}
{
switch (opline->op1.op_type) {
case IS_VAR:
- if (!Ts[opline->op1.u.var].var.ptr_ptr) {
+ if (!T(opline->op1.u.var).var.ptr_ptr) {
get_zval_ptr(&opline->op1, Ts, &EG(free_op1), BP_VAR_R);
FREE_OP(Ts, &opline->op1, EG(free_op1));
} else {
- zval_ptr_dtor(&Ts[opline->op1.u.var].var.ptr);
+ zval_ptr_dtor(&T(opline->op1.u.var).var.ptr);
if (opline->extended_value) { /* foreach() free */
- zval_ptr_dtor(&Ts[opline->op1.u.var].var.ptr);
+ zval_ptr_dtor(&T(opline->op1.u.var).var.ptr);
}
}
break;
case IS_TMP_VAR:
- zendi_zval_dtor(Ts[opline->op1.u.var].tmp_var);
+ zendi_zval_dtor(T(opline->op1.u.var).tmp_var);
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
}
if (result && !(result->u.EA.type & EXT_TYPE_UNUSED)) {
- Ts[result->u.var].var.ptr_ptr = variable_ptr_ptr;
+ T(result->u.var).var.ptr_ptr = variable_ptr_ptr;
SELECTIVE_PZVAL_LOCK(*variable_ptr_ptr, result);
- AI_USE_PTR(Ts[result->u.var].var);
+ AI_USE_PTR(T(result->u.var).var);
}
}
zval *object;
zval *property = get_zval_ptr(op2, Ts, &EG(free_op2), BP_VAR_R);
zval tmp;
- zval **retval = &Ts[result->u.var].var.ptr;
+ zval **retval = &T(result->u.var).var.ptr;
make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
object = *object_ptr;
FREE_OP(Ts, op2, EG(free_op2));
if (result) {
- Ts[result->u.var].var.ptr = value;
- Ts[result->u.var].var.ptr_ptr = NULL; /* see if we can nuke this */
+ T(result->u.var).var.ptr = value;
+ T(result->u.var).var.ptr_ptr = NULL; /* see if we can nuke this */
SELECTIVE_PZVAL_LOCK(value, result);
}
}
zval *object;
zval *property = get_zval_ptr(op2, Ts, &EG(free_op2), BP_VAR_R);
zval tmp;
- zval **retval = &Ts[result->u.var].var.ptr;
+ zval **retval = &T(result->u.var).var.ptr;
int have_get_ptr = 0;
- Ts[result->u.var].var.ptr_ptr = NULL;
+ T(result->u.var).var.ptr_ptr = NULL;
make_real_object(object_ptr TSRMLS_CC);
object = *object_ptr;
zval *variable_ptr;
if (!variable_ptr_ptr) {
- switch (Ts[op1->u.var].EA.type) {
+ switch (T(op1->u.var).EA.type) {
case IS_STRING_OFFSET: {
- temp_variable *T = &Ts[op1->u.var];
+ temp_variable *T = &T(op1->u.var);
if (T->EA.data.str_offset.str->type == IS_STRING) do {
zval tmp;
T->EA.data.str_offset.str->value.str.val[T->EA.data.str_offset.offset] = final_value->value.str.val[0];
if (op2
&& op2->op_type == IS_VAR
- && value==&Ts[op2->u.var].tmp_var) {
+ && value==&T(op2->u.var).tmp_var) {
STR_FREE(value->value.str.val);
}
if (final_value == &tmp) {
}
/*
* the value of an assignment to a string offset is undefined
- Ts[result->u.var].var = &T->EA.data.str_offset.str;
+ T(result->u.var).var = &T->EA.data.str_offset.str;
*/
} while (0);
/* zval_ptr_dtor(&T->EA.data.str_offset.str); Nuke this line if it doesn't cause a leak */
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
- Ts[result->u.var].var.ptr_ptr = &EG(uninitialized_zval_ptr);
- SELECTIVE_PZVAL_LOCK(*Ts[result->u.var].var.ptr_ptr, result);
- AI_USE_PTR(Ts[result->u.var].var);
+ T(result->u.var).var.ptr_ptr = &EG(uninitialized_zval_ptr);
+ SELECTIVE_PZVAL_LOCK(*T(result->u.var).var.ptr_ptr, result);
+ AI_USE_PTR(T(result->u.var).var);
return;
}
if (variable_ptr == EG(error_zval_ptr)) {
if (result) {
- Ts[result->u.var].var.ptr_ptr = &EG(uninitialized_zval_ptr);
- SELECTIVE_PZVAL_LOCK(*Ts[result->u.var].var.ptr_ptr, result);
- AI_USE_PTR(Ts[result->u.var].var);
+ T(result->u.var).var.ptr_ptr = &EG(uninitialized_zval_ptr);
+ SELECTIVE_PZVAL_LOCK(*T(result->u.var).var.ptr_ptr, result);
+ AI_USE_PTR(T(result->u.var).var);
}
if (type==IS_TMP_VAR) {
zval_dtor(value);
(*variable_ptr_ptr)->is_ref=0;
}
if (result) {
- Ts[result->u.var].var.ptr_ptr = variable_ptr_ptr;
+ T(result->u.var).var.ptr_ptr = variable_ptr_ptr;
SELECTIVE_PZVAL_LOCK(*variable_ptr_ptr, result);
- AI_USE_PTR(Ts[result->u.var].var);
+ AI_USE_PTR(T(result->u.var).var);
}
}
return EG(active_op_array)->static_variables;
break;
case ZEND_FETCH_STATIC_MEMBER:
- if(Ts[opline->op2.u.var].EA.class_entry->parent) {
+ if(T(opline->op2.u.var).EA.class_entry->parent) {
/* if inherited, try to look up */
- return zend_find_inherited_static(Ts[opline->op2.u.var].EA.class_entry, variable);
+ return zend_find_inherited_static(T(opline->op2.u.var).EA.class_entry, variable);
} else {
/* if class is not inherited, no point in checking */
- return Ts[opline->op2.u.var].EA.class_entry->static_members;
+ return T(opline->op2.u.var).EA.class_entry->static_members;
}
break;
EMPTY_SWITCH_DEFAULT_CASE()
if (varname == &tmp_varname) {
zval_dtor(varname);
}
- Ts[opline->result.u.var].var.ptr_ptr = retval;
+ T(opline->result.u.var).var.ptr_ptr = retval;
SELECTIVE_PZVAL_LOCK(*retval, &opline->result);
}
{
zval **container_ptr = get_zval_ptr_ptr(op1, Ts, type);
zval *container;
- zval ***retval = &Ts[result->u.var].var.ptr_ptr;
+ zval ***retval = &T(result->u.var).var.ptr_ptr;
container = *container_ptr;
SEPARATE_ZVAL_IF_NOT_REF(container_ptr);
}
container = *container_ptr;
- Ts[result->u.var].EA.data.str_offset.str = container;
+ T(result->u.var).EA.data.str_offset.str = container;
PZVAL_LOCK(container);
- Ts[result->u.var].EA.data.str_offset.offset = offset->value.lval;
- Ts[result->u.var].EA.type = IS_STRING_OFFSET;
+ T(result->u.var).EA.data.str_offset.offset = offset->value.lval;
+ T(result->u.var).EA.type = IS_STRING_OFFSET;
FREE_OP(Ts, op2, EG(free_op2));
*retval = NULL;
return;
zval *container = get_zval_ptr(op1, Ts, &free_op1, BP_VAR_R);
if (container->type != IS_ARRAY) {
- Ts[result->u.var].var.ptr_ptr = &EG(uninitialized_zval_ptr);
- SELECTIVE_PZVAL_LOCK(*Ts[result->u.var].var.ptr_ptr, result);
+ T(result->u.var).var.ptr_ptr = &EG(uninitialized_zval_ptr);
+ SELECTIVE_PZVAL_LOCK(*T(result->u.var).var.ptr_ptr, result);
return;
}
- Ts[result->u.var].var.ptr_ptr = zend_fetch_dimension_address_inner(container->value.ht, op2, Ts, BP_VAR_R TSRMLS_CC);
- SELECTIVE_PZVAL_LOCK(*Ts[result->u.var].var.ptr_ptr, result);
+ T(result->u.var).var.ptr_ptr = zend_fetch_dimension_address_inner(container->value.ht, op2, Ts, BP_VAR_R TSRMLS_CC);
+ SELECTIVE_PZVAL_LOCK(*T(result->u.var).var.ptr_ptr, result);
}
static void zend_fetch_property_address(znode *result, znode *op1, znode *op2, temp_variable *Ts, int type TSRMLS_DC)
{
zval **container_ptr = get_obj_zval_ptr_ptr(op1, Ts, type TSRMLS_CC);
zval *container;
- zval ***retval = &Ts[result->u.var].var.ptr_ptr;
+ zval ***retval = &T(result->u.var).var.ptr_ptr;
container = *container_ptr;
if (container == EG(error_zval_ptr)) {
zval *container;
zval **retval;
- retval = &Ts[result->u.var].var.ptr;
- Ts[result->u.var].var.ptr_ptr = retval;
+ retval = &T(result->u.var).var.ptr;
+ T(result->u.var).var.ptr_ptr = retval;
container = get_obj_zval_ptr(op1, Ts, &EG(free_op1), type TSRMLS_CC);
zval **object_ptr = get_obj_zval_ptr_ptr(op1, Ts, BP_VAR_W TSRMLS_CC);
zval *object;
zval *property = get_zval_ptr(op2, Ts, &EG(free_op2), BP_VAR_R);
- zval **retval = &Ts[result->u.var].var.ptr;
+ zval **retval = &T(result->u.var).var.ptr;
int have_get_ptr = 0;
make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
zval **object_ptr = get_obj_zval_ptr_ptr(op1, Ts, BP_VAR_W TSRMLS_CC);
zval *object;
zval *property = get_zval_ptr(op2, Ts, &EG(free_op2), BP_VAR_R);
- zval *retval = &Ts[result->u.var].tmp_var;
+ zval *retval = &T(result->u.var).tmp_var;
int have_get_ptr = 0;
make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
int zend_add_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- add_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ add_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_sub_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- sub_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ sub_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_mul_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- mul_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ mul_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_div_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- div_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ div_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_mod_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- mod_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ mod_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_sl_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- shift_left_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ shift_left_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_sr_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- shift_right_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ shift_right_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_concat_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- concat_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ concat_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_is_identical_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- is_identical_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ is_identical_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_is_not_identical_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- is_not_identical_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ is_not_identical_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_is_equal_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- is_equal_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ is_equal_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_is_not_equal_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- is_not_equal_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ is_not_equal_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_is_smaller_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- is_smaller_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ is_smaller_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_is_smaller_or_equal_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- is_smaller_or_equal_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ is_smaller_or_equal_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_bw_or_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- bitwise_or_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ bitwise_or_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_bw_and_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- bitwise_and_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ bitwise_and_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_bw_xor_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- bitwise_xor_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ bitwise_xor_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_bool_xor_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- boolean_xor_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ boolean_xor_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
int zend_bw_not_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- bitwise_not_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ bitwise_not_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
NEXT_OPCODE();
int zend_bool_not_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- boolean_not_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ boolean_not_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R) TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
NEXT_OPCODE();
}
if (*var_ptr == EG(error_zval_ptr)) {
- EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr = &EG(uninitialized_zval_ptr);
- SELECTIVE_PZVAL_LOCK(*EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr, &EX(opline)->result);
- AI_USE_PTR(EX(Ts)[EX(opline)->result.u.var].var);
+ EX_T(EX(opline)->result.u.var).var.ptr_ptr = &EG(uninitialized_zval_ptr);
+ SELECTIVE_PZVAL_LOCK(*EX_T(EX(opline)->result.u.var).var.ptr_ptr, &EX(opline)->result);
+ AI_USE_PTR(EX_T(EX(opline)->result.u.var).var);
NEXT_OPCODE();
}
SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
binary_op(*var_ptr, *var_ptr, get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
- EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr = var_ptr;
+ EX_T(EX(opline)->result.u.var).var.ptr_ptr = var_ptr;
SELECTIVE_PZVAL_LOCK(*var_ptr, &EX(opline)->result);
FREE_OP(EX(Ts), &EX(opline)->op2, EG(free_op2));
- AI_USE_PTR(EX(Ts)[EX(opline)->result.u.var].var);
+ AI_USE_PTR(EX_T(EX(opline)->result.u.var).var);
NEXT_OPCODE();
}
int zend_assign_add_obj_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts)[EX(opline)->extended_value].var.ptr, EX(Ts), add_function TSRMLS_CC);
+ zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX_T(EX(opline)->extended_value).var.ptr, EX(Ts), add_function TSRMLS_CC);
NEXT_OPCODE();
}
int zend_assign_sub_obj_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts)[EX(opline)->extended_value].var.ptr, EX(Ts), sub_function TSRMLS_CC);
+ zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX_T(EX(opline)->extended_value).var.ptr, EX(Ts), sub_function TSRMLS_CC);
NEXT_OPCODE();
}
int zend_assign_mul_obj_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts)[EX(opline)->extended_value].var.ptr, EX(Ts), mul_function TSRMLS_CC);
+ zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX_T(EX(opline)->extended_value).var.ptr, EX(Ts), mul_function TSRMLS_CC);
NEXT_OPCODE();
}
int zend_assign_div_obj_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts)[EX(opline)->extended_value].var.ptr, EX(Ts), div_function TSRMLS_CC);
+ zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX_T(EX(opline)->extended_value).var.ptr, EX(Ts), div_function TSRMLS_CC);
NEXT_OPCODE();
}
int zend_assign_mod_obj_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts)[EX(opline)->extended_value].var.ptr, EX(Ts), mod_function TSRMLS_CC);
+ zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX_T(EX(opline)->extended_value).var.ptr, EX(Ts), mod_function TSRMLS_CC);
NEXT_OPCODE();
}
int zend_assign_sl_obj_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts)[EX(opline)->extended_value].var.ptr, EX(Ts), shift_left_function TSRMLS_CC);
+ zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX_T(EX(opline)->extended_value).var.ptr, EX(Ts), shift_left_function TSRMLS_CC);
NEXT_OPCODE();
}
int zend_assign_sr_obj_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts)[EX(opline)->extended_value].var.ptr, EX(Ts), shift_right_function TSRMLS_CC);
+ zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX_T(EX(opline)->extended_value).var.ptr, EX(Ts), shift_right_function TSRMLS_CC);
NEXT_OPCODE();
}
int zend_assign_concat_obj_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts)[EX(opline)->extended_value].var.ptr, EX(Ts), concat_function TSRMLS_CC);
+ zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX_T(EX(opline)->extended_value).var.ptr, EX(Ts), concat_function TSRMLS_CC);
NEXT_OPCODE();
}
int zend_assign_bw_or_obj_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts)[EX(opline)->extended_value].var.ptr, EX(Ts), bitwise_or_function TSRMLS_CC);
+ zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX_T(EX(opline)->extended_value).var.ptr, EX(Ts), bitwise_or_function TSRMLS_CC);
NEXT_OPCODE();
}
int zend_assign_bw_and_obj_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts)[EX(opline)->extended_value].var.ptr, EX(Ts), bitwise_and_function TSRMLS_CC);
+ zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX_T(EX(opline)->extended_value).var.ptr, EX(Ts), bitwise_and_function TSRMLS_CC);
NEXT_OPCODE();
}
int zend_assign_bw_xor_obj_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts)[EX(opline)->extended_value].var.ptr, EX(Ts), bitwise_xor_function TSRMLS_CC);
+ zend_assign_to_object_op(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX_T(EX(opline)->extended_value).var.ptr, EX(Ts), bitwise_xor_function TSRMLS_CC);
NEXT_OPCODE();
}
zend_error(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
}
if (*var_ptr == EG(error_zval_ptr)) {
- EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr = &EG(uninitialized_zval_ptr);
- SELECTIVE_PZVAL_LOCK(*EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr, &EX(opline)->result);
- AI_USE_PTR(EX(Ts)[EX(opline)->result.u.var].var);
+ EX_T(EX(opline)->result.u.var).var.ptr_ptr = &EG(uninitialized_zval_ptr);
+ SELECTIVE_PZVAL_LOCK(*EX_T(EX(opline)->result.u.var).var.ptr_ptr, &EX(opline)->result);
+ AI_USE_PTR(EX_T(EX(opline)->result.u.var).var);
NEXT_OPCODE();
}
switch (EX(opline)->opcode) {
case ZEND_POST_INC:
case ZEND_POST_DEC:
- EX(Ts)[EX(opline)->result.u.var].tmp_var = **var_ptr;
- zendi_zval_copy_ctor(EX(Ts)[EX(opline)->result.u.var].tmp_var);
+ EX_T(EX(opline)->result.u.var).tmp_var = **var_ptr;
+ zendi_zval_copy_ctor(EX_T(EX(opline)->result.u.var).tmp_var);
break;
}
switch (EX(opline)->opcode) {
case ZEND_PRE_INC:
case ZEND_PRE_DEC:
- EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr = var_ptr;
+ EX_T(EX(opline)->result.u.var).var.ptr_ptr = var_ptr;
SELECTIVE_PZVAL_LOCK(*var_ptr, &EX(opline)->result);
- AI_USE_PTR(EX(Ts)[EX(opline)->result.u.var].var);
+ AI_USE_PTR(EX_T(EX(opline)->result.u.var).var);
break;
}
NEXT_OPCODE();
int zend_print_handler(ZEND_OPCODE_HANDLER_ARGS)
{
zend_print_variable(get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R));
- EX(Ts)[EX(opline)->result.u.var].tmp_var.value.lval = 1;
- EX(Ts)[EX(opline)->result.u.var].tmp_var.type = IS_LONG;
+ EX_T(EX(opline)->result.u.var).tmp_var.value.lval = 1;
+ EX_T(EX(opline)->result.u.var).tmp_var.type = IS_LONG;
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
NEXT_OPCODE();
}
int zend_fetch_r_handler(ZEND_OPCODE_HANDLER_ARGS)
{
zend_fetch_var_address(EX(opline), EX(Ts), BP_VAR_R TSRMLS_CC);
- AI_USE_PTR(EX(Ts)[EX(opline)->result.u.var].var);
+ AI_USE_PTR(EX_T(EX(opline)->result.u.var).var);
NEXT_OPCODE();
}
} else {
/* Behave like FETCH_R */
zend_fetch_var_address(EX(opline), EX(Ts), BP_VAR_R TSRMLS_CC);
- AI_USE_PTR(EX(Ts)[EX(opline)->result.u.var].var);
+ AI_USE_PTR(EX_T(EX(opline)->result.u.var).var);
}
NEXT_OPCODE();
}
int zend_fetch_unset_handler(ZEND_OPCODE_HANDLER_ARGS)
{
zend_fetch_var_address(EX(opline), EX(Ts), BP_VAR_R TSRMLS_CC);
- PZVAL_UNLOCK(*EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr);
- if (EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
- SEPARATE_ZVAL_IF_NOT_REF(EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr);
+ PZVAL_UNLOCK(*EX_T(EX(opline)->result.u.var).var.ptr_ptr);
+ if (EX_T(EX(opline)->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
+ SEPARATE_ZVAL_IF_NOT_REF(EX_T(EX(opline)->result.u.var).var.ptr_ptr);
}
- PZVAL_LOCK(*EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr);
+ PZVAL_LOCK(*EX_T(EX(opline)->result.u.var).var.ptr_ptr);
NEXT_OPCODE();
}
int zend_fetch_is_handler(ZEND_OPCODE_HANDLER_ARGS)
{
zend_fetch_var_address(EX(opline), EX(Ts), BP_VAR_IS TSRMLS_CC);
- AI_USE_PTR(EX(Ts)[EX(opline)->result.u.var].var);
+ AI_USE_PTR(EX_T(EX(opline)->result.u.var).var);
NEXT_OPCODE();
}
int zend_fetch_dim_r_handler(ZEND_OPCODE_HANDLER_ARGS)
{
if (EX(opline)->extended_value == ZEND_FETCH_ADD_LOCK) {
- PZVAL_LOCK(*EX(Ts)[EX(opline)->op1.u.var].var.ptr_ptr);
+ PZVAL_LOCK(*EX_T(EX(opline)->op1.u.var).var.ptr_ptr);
}
zend_fetch_dimension_address(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
- AI_USE_PTR(EX(Ts)[EX(opline)->result.u.var].var);
+ AI_USE_PTR(EX_T(EX(opline)->result.u.var).var);
NEXT_OPCODE();
}
int zend_fetch_dim_is_handler(ZEND_OPCODE_HANDLER_ARGS)
{
zend_fetch_dimension_address(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts), BP_VAR_IS TSRMLS_CC);
- AI_USE_PTR(EX(Ts)[EX(opline)->result.u.var].var);
+ AI_USE_PTR(EX_T(EX(opline)->result.u.var).var);
NEXT_OPCODE();
}
} else {
/* Behave like FETCH_DIM_R, except for locking used for list() */
zend_fetch_dimension_address(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
- AI_USE_PTR(EX(Ts)[EX(opline)->result.u.var].var);
+ AI_USE_PTR(EX_T(EX(opline)->result.u.var).var);
}
NEXT_OPCODE();
}
{
/* Not needed in DIM_UNSET
if (EX(opline)->extended_value == ZEND_FETCH_ADD_LOCK) {
- PZVAL_LOCK(*EX(Ts)[EX(opline)->op1.u.var].var.ptr_ptr);
+ PZVAL_LOCK(*EX_T(EX(opline)->op1.u.var).var.ptr_ptr);
}
*/
zend_fetch_dimension_address(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
- PZVAL_UNLOCK(*EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr);
- if (EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
- SEPARATE_ZVAL_IF_NOT_REF(EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr);
+ PZVAL_UNLOCK(*EX_T(EX(opline)->result.u.var).var.ptr_ptr);
+ if (EX_T(EX(opline)->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
+ SEPARATE_ZVAL_IF_NOT_REF(EX_T(EX(opline)->result.u.var).var.ptr_ptr);
}
- PZVAL_LOCK(*EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr);
+ PZVAL_LOCK(*EX_T(EX(opline)->result.u.var).var.ptr_ptr);
NEXT_OPCODE();
}
int zend_fetch_obj_r_handler(ZEND_OPCODE_HANDLER_ARGS)
{
zend_fetch_property_address_read(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
- AI_USE_PTR(EX(Ts)[EX(opline)->result.u.var].var);
+ AI_USE_PTR(EX_T(EX(opline)->result.u.var).var);
NEXT_OPCODE();
}
int zend_fetch_obj_is_handler(ZEND_OPCODE_HANDLER_ARGS)
{
zend_fetch_property_address_read(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts), BP_VAR_IS TSRMLS_CC);
- AI_USE_PTR(EX(Ts)[EX(opline)->result.u.var].var);
+ AI_USE_PTR(EX_T(EX(opline)->result.u.var).var);
NEXT_OPCODE();
}
zend_fetch_property_address(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts), BP_VAR_W TSRMLS_CC);
} else {
zend_fetch_property_address_read(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
- AI_USE_PTR(EX(Ts)[EX(opline)->result.u.var].var);
+ AI_USE_PTR(EX_T(EX(opline)->result.u.var).var);
}
NEXT_OPCODE();
}
{
zend_fetch_property_address(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
- PZVAL_UNLOCK(*EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr);
- if (EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
- SEPARATE_ZVAL_IF_NOT_REF(EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr);
+ PZVAL_UNLOCK(*EX_T(EX(opline)->result.u.var).var.ptr_ptr);
+ if (EX_T(EX(opline)->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
+ SEPARATE_ZVAL_IF_NOT_REF(EX_T(EX(opline)->result.u.var).var.ptr_ptr);
}
- PZVAL_LOCK(*EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr);
+ PZVAL_LOCK(*EX_T(EX(opline)->result.u.var).var.ptr_ptr);
NEXT_OPCODE();
}
int zend_fetch_dim_tmp_var_handler(ZEND_OPCODE_HANDLER_ARGS)
{
zend_fetch_dimension_address_from_tmp_var(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts) TSRMLS_CC);
- AI_USE_PTR(EX(Ts)[EX(opline)->result.u.var].var);
+ AI_USE_PTR(EX_T(EX(opline)->result.u.var).var);
NEXT_OPCODE();
}
break;
}
- EX(Ts)[EX(opline)->result.u.var].var.ptr = value;
- PZVAL_LOCK(EX(Ts)[EX(opline)->result.u.var].var.ptr);
+ EX_T(EX(opline)->result.u.var).var.ptr = value;
+ PZVAL_LOCK(EX_T(EX(opline)->result.u.var).var.ptr);
NEXT_OPCODE();
}
int zend_assign_obj_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- zend_assign_to_object(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX(Ts)[EX(opline)->extended_value].var.ptr, EX(Ts) TSRMLS_CC);
+ zend_assign_to_object(&EX(opline)->result, &EX(opline)->op1, &EX(opline)->op2, EX_T(EX(opline)->extended_value).var.ptr, EX(Ts) TSRMLS_CC);
NEXT_OPCODE();
}
int retval = zend_is_true(get_zval_ptr(&original_opline->op1, EX(Ts), &EG(free_op1), BP_VAR_R));
FREE_OP(EX(Ts), &original_opline->op1, EG(free_op1));
- EX(Ts)[original_opline->result.u.var].tmp_var.value.lval = retval;
- EX(Ts)[original_opline->result.u.var].tmp_var.type = IS_BOOL;
+ EX_T(original_opline->result.u.var).tmp_var.value.lval = retval;
+ EX_T(original_opline->result.u.var).tmp_var.type = IS_BOOL;
if (!retval) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", EX(opline)->op2.u.opline_num);
int retval = zend_is_true(get_zval_ptr(&original_opline->op1, EX(Ts), &EG(free_op1), BP_VAR_R));
FREE_OP(EX(Ts), &original_opline->op1, EG(free_op1));
- EX(Ts)[original_opline->result.u.var].tmp_var.value.lval = retval;
- EX(Ts)[original_opline->result.u.var].tmp_var.type = IS_BOOL;
+ EX_T(original_opline->result.u.var).tmp_var.value.lval = retval;
+ EX_T(original_opline->result.u.var).tmp_var.type = IS_BOOL;
if (retval) {
#if DEBUG_ZEND>=2
printf("Conditional jmp to %d\n", EX(opline)->op2.u.opline_num);
int zend_free_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- zendi_zval_dtor(EX(Ts)[EX(opline)->op1.u.var].tmp_var);
+ zendi_zval_dtor(EX_T(EX(opline)->op1.u.var).tmp_var);
NEXT_OPCODE();
}
int zend_init_string_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- EX(Ts)[EX(opline)->result.u.var].tmp_var.value.str.val = emalloc(1);
- EX(Ts)[EX(opline)->result.u.var].tmp_var.value.str.val[0] = 0;
- EX(Ts)[EX(opline)->result.u.var].tmp_var.value.str.len = 0;
- EX(Ts)[EX(opline)->result.u.var].tmp_var.refcount = 1;
- EX(Ts)[EX(opline)->result.u.var].tmp_var.type = IS_STRING;
- EX(Ts)[EX(opline)->result.u.var].tmp_var.is_ref = 0;
+ EX_T(EX(opline)->result.u.var).tmp_var.value.str.val = emalloc(1);
+ EX_T(EX(opline)->result.u.var).tmp_var.value.str.val[0] = 0;
+ EX_T(EX(opline)->result.u.var).tmp_var.value.str.len = 0;
+ EX_T(EX(opline)->result.u.var).tmp_var.refcount = 1;
+ EX_T(EX(opline)->result.u.var).tmp_var.type = IS_STRING;
+ EX_T(EX(opline)->result.u.var).tmp_var.is_ref = 0;
NEXT_OPCODE();
}
int zend_add_char_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- add_char_to_string(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ add_char_to_string(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_NA),
&EX(opline)->op2.u.constant);
/* FREE_OP is missing intentionally here - we're always working on the same temporary variable */
int zend_add_string_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- add_string_to_string(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ add_string_to_string(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_NA),
&EX(opline)->op2.u.constant);
/* FREE_OP is missing intentionally here - we're always working on the same temporary variable */
if (use_copy) {
var = &var_copy;
}
- add_string_to_string( &EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ add_string_to_string( &EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_NA),
var);
if (use_copy) {
zend_class_entry *ce;
zend_function *function;
- ce = EX(Ts)[EX(opline)->op1.u.var].EA.class_entry;
+ ce = EX_T(EX(opline)->op1.u.var).EA.class_entry;
if (EX(opline)->op2.op_type != IS_UNUSED) {
char *function_name_strval;
zend_class_entry *ce;
zend_class_entry **import_ce;
- ce = EX(Ts)[EX(opline)->op1.u.var].EA.class_entry;
+ ce = EX_T(EX(opline)->op1.u.var).EA.class_entry;
if (EX(opline)->op2.op_type != IS_UNUSED) {
char *class_name_strval;
zval **import_constant;
zend_constant c;
- ce = EX(Ts)[EX(opline)->op1.u.var].EA.class_entry;
+ ce = EX_T(EX(opline)->op1.u.var).EA.class_entry;
if (EX(opline)->op2.op_type != IS_UNUSED) {
char *const_name_strval;
int const_name_strlen;
if (!EG(scope)) {
zend_error(E_ERROR, "Cannot fetch self:: when no class scope is active");
}
- EX(Ts)[EX(opline)->result.u.var].EA.class_entry = EG(scope);
+ EX_T(EX(opline)->result.u.var).EA.class_entry = EG(scope);
NEXT_OPCODE();
} else if (EX(opline)->extended_value == ZEND_FETCH_CLASS_MAIN) {
- EX(Ts)[EX(opline)->result.u.var].EA.class_entry = EG(main_class_ptr);
+ EX_T(EX(opline)->result.u.var).EA.class_entry = EG(main_class_ptr);
NEXT_OPCODE();
} else if (EX(opline)->extended_value == ZEND_FETCH_CLASS_PARENT) {
if (!EG(scope)) {
if (!EG(scope)->parent) {
zend_error(E_ERROR, "Cannot fetch parent:: as current class scope has no parent");
}
- EX(Ts)[EX(opline)->result.u.var].EA.class_entry = EG(scope)->parent;
+ EX_T(EX(opline)->result.u.var).EA.class_entry = EG(scope)->parent;
NEXT_OPCODE();
}
}
if (EX(opline)->op1.op_type == IS_UNUSED) {
retval = zend_lookup_class(class_name_strval, class_name_strlen, &pce TSRMLS_CC);
} else {
- retval = zend_hash_find(&EX(Ts)[EX(opline)->op1.u.var].EA.class_entry->class_table, class_name_strval, class_name_strlen+1, (void **)&pce);
+ retval = zend_hash_find(&EX_T(EX(opline)->op1.u.var).EA.class_entry->class_table, class_name_strval, class_name_strlen+1, (void **)&pce);
}
if (retval == FAILURE) {
zend_error(E_ERROR, "Class '%s' not found", class_name_strval);
} else {
- EX(Ts)[EX(opline)->result.u.var].EA.class_entry = *pce;
+ EX_T(EX(opline)->result.u.var).EA.class_entry = *pce;
}
if (!is_const) {
zval_dtor(&tmp);
zend_ptr_stack_n_push(&EG(arg_types_stack), 3, EX(fbc), EX(object), EX(calling_scope));
if (EX(opline)->op1.op_type == IS_VAR) {
- SELECTIVE_PZVAL_LOCK(*EX(Ts)[EX(opline)->op1.u.var].var.ptr_ptr, &EX(opline)->op1);
+ SELECTIVE_PZVAL_LOCK(*EX_T(EX(opline)->op1.u.var).var.ptr_ptr, &EX(opline)->op1);
}
/* We are not handling overloaded classes right now */
EX(object)->refcount++;
}
- ce = EX(Ts)[EX(opline)->op1.u.var].EA.class_entry;
+ ce = EX_T(EX(opline)->op1.u.var).EA.class_entry;
EX(calling_scope) = ce;
current_this = EG(This);
EG(This) = EX(object);
- EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr = &EX(Ts)[EX(opline)->result.u.var].var.ptr;
+ EX_T(EX(opline)->result.u.var).var.ptr_ptr = &EX_T(EX(opline)->result.u.var).var.ptr;
if (EX(function_state).function->type==ZEND_INTERNAL_FUNCTION) {
- ALLOC_ZVAL(EX(Ts)[EX(opline)->result.u.var].var.ptr);
- INIT_ZVAL(*(EX(Ts)[EX(opline)->result.u.var].var.ptr));
- ((zend_internal_function *) EX(function_state).function)->handler(EX(opline)->extended_value, EX(Ts)[EX(opline)->result.u.var].var.ptr, EX(object), return_value_used TSRMLS_CC);
+ ALLOC_ZVAL(EX_T(EX(opline)->result.u.var).var.ptr);
+ INIT_ZVAL(*(EX_T(EX(opline)->result.u.var).var.ptr));
+ ((zend_internal_function *) EX(function_state).function)->handler(EX(opline)->extended_value, EX_T(EX(opline)->result.u.var).var.ptr, EX(object), return_value_used TSRMLS_CC);
EG(current_execute_data) = execute_data;
- EX(Ts)[EX(opline)->result.u.var].var.ptr->is_ref = 0;
- EX(Ts)[EX(opline)->result.u.var].var.ptr->refcount = 1;
+ EX_T(EX(opline)->result.u.var).var.ptr->is_ref = 0;
+ EX_T(EX(opline)->result.u.var).var.ptr->refcount = 1;
if (!return_value_used) {
- zval_ptr_dtor(&EX(Ts)[EX(opline)->result.u.var].var.ptr);
+ zval_ptr_dtor(&EX_T(EX(opline)->result.u.var).var.ptr);
}
} else if (EX(function_state).function->type==ZEND_USER_FUNCTION) {
HashTable *calling_symbol_table;
- EX(Ts)[EX(opline)->result.u.var].var.ptr = NULL;
+ EX_T(EX(opline)->result.u.var).var.ptr = NULL;
if (EG(symtable_cache_ptr)>=EG(symtable_cache)) {
/*printf("Cache hit! Reusing %x\n", symtable_cache[symtable_cache_ptr]);*/
EX(function_state).function_symbol_table = *(EG(symtable_cache_ptr)--);
calling_symbol_table = EG(active_symbol_table);
EG(active_symbol_table) = EX(function_state).function_symbol_table;
original_return_value = EG(return_value_ptr_ptr);
- EG(return_value_ptr_ptr) = EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr;
+ EG(return_value_ptr_ptr) = EX_T(EX(opline)->result.u.var).var.ptr_ptr;
EG(active_op_array) = (zend_op_array *) EX(function_state).function;
zend_execute(EG(active_op_array) TSRMLS_CC);
- if (return_value_used && !EX(Ts)[EX(opline)->result.u.var].var.ptr) {
+ if (return_value_used && !EX_T(EX(opline)->result.u.var).var.ptr) {
if (!EG(exception)) {
- ALLOC_ZVAL(EX(Ts)[EX(opline)->result.u.var].var.ptr);
- INIT_ZVAL(*EX(Ts)[EX(opline)->result.u.var].var.ptr);
+ ALLOC_ZVAL(EX_T(EX(opline)->result.u.var).var.ptr);
+ INIT_ZVAL(*EX_T(EX(opline)->result.u.var).var.ptr);
}
- } else if (!return_value_used && EX(Ts)[EX(opline)->result.u.var].var.ptr) {
- zval_ptr_dtor(&EX(Ts)[EX(opline)->result.u.var].var.ptr);
+ } else if (!return_value_used && EX_T(EX(opline)->result.u.var).var.ptr) {
+ zval_ptr_dtor(&EX_T(EX(opline)->result.u.var).var.ptr);
}
EG(opline_ptr) = &EX(opline);
}
EG(active_symbol_table) = calling_symbol_table;
} else { /* ZEND_OVERLOADED_FUNCTION */
- ALLOC_ZVAL(EX(Ts)[EX(opline)->result.u.var].var.ptr);
- INIT_ZVAL(*(EX(Ts)[EX(opline)->result.u.var].var.ptr));
+ ALLOC_ZVAL(EX_T(EX(opline)->result.u.var).var.ptr);
+ INIT_ZVAL(*(EX_T(EX(opline)->result.u.var).var.ptr));
if (EX(object)) {
- Z_OBJ_HT_P(EX(object))->call_method(EX(fbc)->common.function_name, EX(opline)->extended_value, EX(Ts)[EX(opline)->result.u.var].var.ptr, EX(object), return_value_used TSRMLS_CC);
+ Z_OBJ_HT_P(EX(object))->call_method(EX(fbc)->common.function_name, EX(opline)->extended_value, EX_T(EX(opline)->result.u.var).var.ptr, EX(object), return_value_used TSRMLS_CC);
} else {
zend_error(E_ERROR, "Cannot call overloaded function for non-object");
}
efree(EX(fbc));
if (!return_value_used) {
- zval_ptr_dtor(&EX(Ts)[EX(opline)->result.u.var].var.ptr);
+ zval_ptr_dtor(&EX_T(EX(opline)->result.u.var).var.ptr);
}
}
zend_ptr_stack_n_pop(&EG(arg_types_stack), 3, &EX(calling_scope), &EX(object), &EX(fbc));
return 0; /* CHECK_ME */
}
ce = Z_OBJCE_P(EG(exception));
- if (ce != EX(Ts)[EX(opline)->op1.u.var].EA.class_entry) {
+ if (ce != EX_T(EX(opline)->op1.u.var).EA.class_entry) {
while (ce->parent) {
- if (ce->parent == EX(Ts)[EX(opline)->op1.u.var].EA.class_entry) {
+ if (ce->parent == EX_T(EX(opline)->op1.u.var).EA.class_entry) {
goto exception_should_be_taken;
}
ce = ce->parent;
if (zend_ptr_stack_get_arg(EX(opline)->op1.u.constant.value.lval, (void **) ¶m TSRMLS_CC)==FAILURE) {
zend_error(E_WARNING, "Missing argument %d for %s()\n", EX(opline)->op1.u.constant.value.lval, get_active_function_name(TSRMLS_C));
if (EX(opline)->result.op_type == IS_VAR) {
- PZVAL_UNLOCK(*EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr);
+ PZVAL_UNLOCK(*EX_T(EX(opline)->result.u.var).var.ptr_ptr);
}
} else if (PZVAL_IS_REF(*param)) {
zend_assign_to_variable_reference(NULL, get_zval_ptr_ptr(&EX(opline)->result, EX(Ts), BP_VAR_W), param, NULL TSRMLS_CC);
int zend_bool_handler(ZEND_OPCODE_HANDLER_ARGS)
{
/* PHP 3.0 returned "" for false and 1 for true, here we use 0 and 1 for now */
- EX(Ts)[EX(opline)->result.u.var].tmp_var.value.lval = zend_is_true(get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R));
- EX(Ts)[EX(opline)->result.u.var].tmp_var.type = IS_BOOL;
+ EX_T(EX(opline)->result.u.var).tmp_var.value.lval = zend_is_true(get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R));
+ EX_T(EX(opline)->result.u.var).tmp_var.type = IS_BOOL;
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
NEXT_OPCODE();
zend_switch_free(brk_opline, EX(Ts) TSRMLS_CC);
break;
case ZEND_FREE:
- zendi_zval_dtor(EX(Ts)[brk_opline->op1.u.var].tmp_var);
+ zendi_zval_dtor(EX_T(brk_opline->op1.u.var).tmp_var);
break;
}
}
int switch_expr_is_overloaded=0;
if (EX(opline)->op1.op_type==IS_VAR) {
- if (EX(Ts)[EX(opline)->op1.u.var].var.ptr_ptr) {
- PZVAL_LOCK(*EX(Ts)[EX(opline)->op1.u.var].var.ptr_ptr);
+ if (EX_T(EX(opline)->op1.u.var).var.ptr_ptr) {
+ PZVAL_LOCK(*EX_T(EX(opline)->op1.u.var).var.ptr_ptr);
} else {
switch_expr_is_overloaded = 1;
- if (EX(Ts)[EX(opline)->op1.u.var].EA.type==IS_STRING_OFFSET) {
- EX(Ts)[EX(opline)->op1.u.var].EA.data.str_offset.str->refcount++;
+ if (EX_T(EX(opline)->op1.u.var).EA.type==IS_STRING_OFFSET) {
+ EX_T(EX(opline)->op1.u.var).EA.data.str_offset.str->refcount++;
}
}
}
- is_equal_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var,
+ is_equal_function(&EX_T(EX(opline)->result.u.var).tmp_var,
get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R),
get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R) TSRMLS_CC);
* are allocated at each get_zval_ptr())
*/
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
- EX(Ts)[EX(opline)->op1.u.var].var.ptr_ptr = NULL;
- AI_USE_PTR(EX(Ts)[EX(opline)->op1.u.var].var);
+ EX_T(EX(opline)->op1.u.var).var.ptr_ptr = NULL;
+ AI_USE_PTR(EX_T(EX(opline)->op1.u.var).var);
}
NEXT_OPCODE();
}
int zend_new_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr = &EX(Ts)[EX(opline)->result.u.var].var.ptr;
- ALLOC_ZVAL(EX(Ts)[EX(opline)->result.u.var].var.ptr);
- object_init_ex(EX(Ts)[EX(opline)->result.u.var].var.ptr, EX(Ts)[EX(opline)->op1.u.var].EA.class_entry);
- EX(Ts)[EX(opline)->result.u.var].var.ptr->refcount=1;
- EX(Ts)[EX(opline)->result.u.var].var.ptr->is_ref=1;
+ EX_T(EX(opline)->result.u.var).var.ptr_ptr = &EX_T(EX(opline)->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(EX(opline)->result.u.var).var.ptr);
+ object_init_ex(EX_T(EX(opline)->result.u.var).var.ptr, EX_T(EX(opline)->op1.u.var).EA.class_entry);
+ EX_T(EX(opline)->result.u.var).var.ptr->refcount=1;
+ EX_T(EX(opline)->result.u.var).var.ptr->is_ref=1;
NEXT_OPCODE();
}
{
zval *obj = get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R);
- EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr = &EX(Ts)[EX(opline)->result.u.var].var.ptr;
- ALLOC_ZVAL(EX(Ts)[EX(opline)->result.u.var].var.ptr);
- EX(Ts)[EX(opline)->result.u.var].var.ptr->value.obj = Z_OBJ_HT_P(obj)->clone_obj(obj TSRMLS_CC);
- EX(Ts)[EX(opline)->result.u.var].var.ptr->type = IS_OBJECT;
- EX(Ts)[EX(opline)->result.u.var].var.ptr->refcount=1;
- EX(Ts)[EX(opline)->result.u.var].var.ptr->is_ref=1;
+ EX_T(EX(opline)->result.u.var).var.ptr_ptr = &EX_T(EX(opline)->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(EX(opline)->result.u.var).var.ptr);
+ EX_T(EX(opline)->result.u.var).var.ptr->value.obj = Z_OBJ_HT_P(obj)->clone_obj(obj TSRMLS_CC);
+ EX_T(EX(opline)->result.u.var).var.ptr->type = IS_OBJECT;
+ EX_T(EX(opline)->result.u.var).var.ptr->refcount=1;
+ EX_T(EX(opline)->result.u.var).var.ptr->is_ref=1;
NEXT_OPCODE();
}
ce = EG(scope);
if (zend_hash_find(&ce->constants_table, EX(opline)->op2.u.constant.value.str.val, EX(opline)->op2.u.constant.value.str.len+1, (void **) &value) == SUCCESS) {
zval_update_constant(value, (void *) 1 TSRMLS_CC);
- EX(Ts)[EX(opline)->result.u.var].tmp_var = **value;
- zval_copy_ctor(&EX(Ts)[EX(opline)->result.u.var].tmp_var);
+ EX_T(EX(opline)->result.u.var).tmp_var = **value;
+ zval_copy_ctor(&EX_T(EX(opline)->result.u.var).tmp_var);
NEXT_OPCODE();
}
}
- if (!zend_get_constant(EX(opline)->op2.u.constant.value.str.val, EX(opline)->op2.u.constant.value.str.len, &EX(Ts)[EX(opline)->result.u.var].tmp_var TSRMLS_CC)) {
+ if (!zend_get_constant(EX(opline)->op2.u.constant.value.str.val, EX(opline)->op2.u.constant.value.str.len, &EX_T(EX(opline)->result.u.var).tmp_var TSRMLS_CC)) {
zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
EX(opline)->op2.u.constant.value.str.val,
EX(opline)->op2.u.constant.value.str.val);
- EX(Ts)[EX(opline)->result.u.var].tmp_var = EX(opline)->op2.u.constant;
- zval_copy_ctor(&EX(Ts)[EX(opline)->result.u.var].tmp_var);
+ EX_T(EX(opline)->result.u.var).tmp_var = EX(opline)->op2.u.constant;
+ zval_copy_ctor(&EX_T(EX(opline)->result.u.var).tmp_var);
}
NEXT_OPCODE();
}
- ce = EX(Ts)[EX(opline)->op1.u.var].EA.class_entry;
+ ce = EX_T(EX(opline)->op1.u.var).EA.class_entry;
if (&ce->constants_table == &EG(main_class_ptr)->constants_table) {
- if (!zend_get_constant(EX(opline)->op2.u.constant.value.str.val, EX(opline)->op2.u.constant.value.str.len, &EX(Ts)[EX(opline)->result.u.var].tmp_var TSRMLS_CC)) {
+ if (!zend_get_constant(EX(opline)->op2.u.constant.value.str.val, EX(opline)->op2.u.constant.value.str.len, &EX_T(EX(opline)->result.u.var).tmp_var TSRMLS_CC)) {
zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
EX(opline)->op2.u.constant.value.str.val,
EX(opline)->op2.u.constant.value.str.val);
- EX(Ts)[EX(opline)->result.u.var].tmp_var = EX(opline)->op2.u.constant;
- zval_copy_ctor(&EX(Ts)[EX(opline)->result.u.var].tmp_var);
+ EX_T(EX(opline)->result.u.var).tmp_var = EX(opline)->op2.u.constant;
+ zval_copy_ctor(&EX_T(EX(opline)->result.u.var).tmp_var);
}
NEXT_OPCODE();
}
if (zend_hash_find(&ce->constants_table, EX(opline)->op2.u.constant.value.str.val, EX(opline)->op2.u.constant.value.str.len+1, (void **) &value) == SUCCESS) {
zval_update_constant(value, (void *) 1 TSRMLS_CC);
- EX(Ts)[EX(opline)->result.u.var].tmp_var = **value;
- zval_copy_ctor(&EX(Ts)[EX(opline)->result.u.var].tmp_var);
+ EX_T(EX(opline)->result.u.var).tmp_var = **value;
+ zval_copy_ctor(&EX_T(EX(opline)->result.u.var).tmp_var);
} else {
zend_error(E_ERROR, "Undefined class constant '%s'", EX(opline)->op2.u.constant.value.str.val);
}
inline int zend_init_add_array_helper(ZEND_OPCODE_HANDLER_ARGS)
{
- zval *array_ptr = &EX(Ts)[EX(opline)->result.u.var].tmp_var;
+ zval *array_ptr = &EX_T(EX(opline)->result.u.var).tmp_var;
zval *expr_ptr, **expr_ptr_ptr = NULL;
zval *offset=get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R);
int zend_cast_handler(ZEND_OPCODE_HANDLER_ARGS)
{
zval *expr = get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R);
- zval *result = &EX(Ts)[EX(opline)->result.u.var].tmp_var;
+ zval *result = &EX_T(EX(opline)->result.u.var).tmp_var;
*result = *expr;
if (!EG(free_op1)) {
zval_dtor(&tmp_inc_filename);
}
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
- EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr = &EX(Ts)[EX(opline)->result.u.var].var.ptr;
+ EX_T(EX(opline)->result.u.var).var.ptr_ptr = &EX_T(EX(opline)->result.u.var).var.ptr;
if (new_op_array) {
zval *saved_object;
zend_function *saved_function;
- EG(return_value_ptr_ptr) = EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr;
+ EG(return_value_ptr_ptr) = EX_T(EX(opline)->result.u.var).var.ptr_ptr;
EG(active_op_array) = new_op_array;
- EX(Ts)[EX(opline)->result.u.var].var.ptr = NULL;
+ EX_T(EX(opline)->result.u.var).var.ptr = NULL;
saved_object = EX(object);
saved_function = EX(function_state).function;
EX(object) = saved_object;
if (!return_value_used) {
- if (EX(Ts)[EX(opline)->result.u.var].var.ptr) {
- zval_ptr_dtor(&EX(Ts)[EX(opline)->result.u.var].var.ptr);
+ if (EX_T(EX(opline)->result.u.var).var.ptr) {
+ zval_ptr_dtor(&EX_T(EX(opline)->result.u.var).var.ptr);
}
} else { /* return value is used */
- if (!EX(Ts)[EX(opline)->result.u.var].var.ptr) { /* there was no return statement */
- ALLOC_ZVAL(EX(Ts)[EX(opline)->result.u.var].var.ptr);
- INIT_PZVAL(EX(Ts)[EX(opline)->result.u.var].var.ptr);
- EX(Ts)[EX(opline)->result.u.var].var.ptr->value.lval = 1;
- EX(Ts)[EX(opline)->result.u.var].var.ptr->type = IS_BOOL;
+ if (!EX_T(EX(opline)->result.u.var).var.ptr) { /* there was no return statement */
+ ALLOC_ZVAL(EX_T(EX(opline)->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(EX(opline)->result.u.var).var.ptr);
+ EX_T(EX(opline)->result.u.var).var.ptr->value.lval = 1;
+ EX_T(EX(opline)->result.u.var).var.ptr->type = IS_BOOL;
}
}
efree(new_op_array);
} else {
if (return_value_used) {
- ALLOC_ZVAL(EX(Ts)[EX(opline)->result.u.var].var.ptr);
- INIT_ZVAL(*EX(Ts)[EX(opline)->result.u.var].var.ptr);
- EX(Ts)[EX(opline)->result.u.var].var.ptr->value.lval = failure_retval;
- EX(Ts)[EX(opline)->result.u.var].var.ptr->type = IS_BOOL;
+ ALLOC_ZVAL(EX_T(EX(opline)->result.u.var).var.ptr);
+ INIT_ZVAL(*EX_T(EX(opline)->result.u.var).var.ptr);
+ EX_T(EX(opline)->result.u.var).var.ptr->value.lval = failure_retval;
+ EX_T(EX(opline)->result.u.var).var.ptr->type = IS_BOOL;
}
}
EG(return_value_ptr_ptr) = original_return_value;
}
}
PZVAL_LOCK(array_ptr);
- EX(Ts)[EX(opline)->result.u.var].var.ptr = array_ptr;
- EX(Ts)[EX(opline)->result.u.var].var.ptr_ptr = &EX(Ts)[EX(opline)->result.u.var].var.ptr;
+ EX_T(EX(opline)->result.u.var).var.ptr = array_ptr;
+ EX_T(EX(opline)->result.u.var).var.ptr_ptr = &EX_T(EX(opline)->result.u.var).var.ptr;
if ((fe_ht = HASH_OF(array_ptr)) != NULL) {
/* probably redundant */
int zend_fe_fetch_handler(ZEND_OPCODE_HANDLER_ARGS)
{
zval *array = get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R);
- zval *result = &EX(Ts)[EX(opline)->result.u.var].tmp_var;
+ zval *result = &EX_T(EX(opline)->result.u.var).tmp_var;
zval **value, *key;
char *str_key;
ulong int_key;
zend_function *constructor;
if (EX(opline)->op1.op_type == IS_VAR) {
- PZVAL_LOCK(*EX(Ts)[EX(opline)->op1.u.var].var.ptr_ptr);
+ PZVAL_LOCK(*EX_T(EX(opline)->op1.u.var).var.ptr_ptr);
}
object_zval = get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R);
isset = 0;
}
- EX(Ts)[EX(opline)->result.u.var].tmp_var.type = IS_BOOL;
+ EX_T(EX(opline)->result.u.var).tmp_var.type = IS_BOOL;
switch (EX(opline)->extended_value) {
case ZEND_ISSET:
if (isset && Z_TYPE_PP(value) == IS_NULL) {
- EX(Ts)[EX(opline)->result.u.var].tmp_var.value.lval = 0;
+ EX_T(EX(opline)->result.u.var).tmp_var.value.lval = 0;
} else {
- EX(Ts)[EX(opline)->result.u.var].tmp_var.value.lval = isset;
+ EX_T(EX(opline)->result.u.var).tmp_var.value.lval = isset;
}
break;
case ZEND_ISEMPTY:
if (!isset || !zend_is_true(*value)) {
- EX(Ts)[EX(opline)->result.u.var].tmp_var.value.lval = 1;
+ EX_T(EX(opline)->result.u.var).tmp_var.value.lval = 1;
} else {
- EX(Ts)[EX(opline)->result.u.var].tmp_var.value.lval = 0;
+ EX_T(EX(opline)->result.u.var).tmp_var.value.lval = 0;
}
break;
}
/* string offsets */
}
- EX(Ts)[EX(opline)->result.u.var].tmp_var.type = IS_BOOL;
+ EX_T(EX(opline)->result.u.var).tmp_var.type = IS_BOOL;
switch (EX(opline)->extended_value) {
case ZEND_ISSET:
- EX(Ts)[EX(opline)->result.u.var].tmp_var.value.lval = result;
+ EX_T(EX(opline)->result.u.var).tmp_var.value.lval = result;
break;
case ZEND_ISEMPTY:
- EX(Ts)[EX(opline)->result.u.var].tmp_var.value.lval = !result;
+ EX_T(EX(opline)->result.u.var).tmp_var.value.lval = !result;
break;
}
int zend_begin_silence_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- EX(Ts)[EX(opline)->result.u.var].tmp_var.value.lval = EG(error_reporting);
- EX(Ts)[EX(opline)->result.u.var].tmp_var.type = IS_LONG; /* shouldn't be necessary */
+ EX_T(EX(opline)->result.u.var).tmp_var.value.lval = EG(error_reporting);
+ EX_T(EX(opline)->result.u.var).tmp_var.type = IS_LONG; /* shouldn't be necessary */
EG(error_reporting) = 0;
NEXT_OPCODE();
}
int zend_end_silence_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- EG(error_reporting) = EX(Ts)[EX(opline)->op1.u.var].tmp_var.value.lval;
+ EG(error_reporting) = EX_T(EX(opline)->op1.u.var).tmp_var.value.lval;
NEXT_OPCODE();
}
{
zval *value = get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R);
- EX(Ts)[EX(opline)->result.u.var].tmp_var = *value;
+ EX_T(EX(opline)->result.u.var).tmp_var = *value;
if (!EG(free_op1)) {
- zval_copy_ctor(&EX(Ts)[EX(opline)->result.u.var].tmp_var);
+ zval_copy_ctor(&EX_T(EX(opline)->result.u.var).tmp_var);
}
NEXT_OPCODE();
}
int zend_declare_inherited_class_handler(ZEND_OPCODE_HANDLER_ARGS)
{
- do_bind_inherited_class(EX(opline), EG(function_table), EG(class_table), EX(Ts)[EX(opline)->extended_value].EA.class_entry);
+ do_bind_inherited_class(EX(opline), EG(function_table), EG(class_table), EX_T(EX(opline)->extended_value).EA.class_entry);
NEXT_OPCODE();
}
int zend_is_class_handler(ZEND_OPCODE_HANDLER_ARGS)
{
zval *expr = get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R);
- is_class_function(&EX(Ts)[EX(opline)->result.u.var].tmp_var, expr,
- EX(Ts)[EX(opline)->op2.u.var].EA.class_entry TSRMLS_CC);
+ is_class_function(&EX_T(EX(opline)->result.u.var).tmp_var, expr,
+ EX_T(EX(opline)->op2.u.var).EA.class_entry TSRMLS_CC);
FREE_OP(EX(Ts), &EX(opline)->op1, EG(free_op1));
NEXT_OPCODE();
}