mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Pack EX(frame_info) into EX(This).u1.v.reserved. Rename "frame"kind" into "call_kind" and VM_FRAME_... into ZEND_CALL_...
This commit is contained in:
parent
11384ba77b
commit
1da14c9f81
9 changed files with 123 additions and 122 deletions
|
@ -402,7 +402,7 @@ ZEND_FUNCTION(func_num_args)
|
||||||
{
|
{
|
||||||
zend_execute_data *ex = EX(prev_execute_data);
|
zend_execute_data *ex = EX(prev_execute_data);
|
||||||
|
|
||||||
if (VM_FRAME_KIND(ex->frame_info) == VM_FRAME_NESTED_FUNCTION || VM_FRAME_KIND(ex->frame_info) == VM_FRAME_TOP_FUNCTION) {
|
if (!(ZEND_CALL_INFO(ex) & ZEND_CALL_CODE)) {
|
||||||
RETURN_LONG(ZEND_CALL_NUM_ARGS(ex));
|
RETURN_LONG(ZEND_CALL_NUM_ARGS(ex));
|
||||||
} else {
|
} else {
|
||||||
zend_error(E_WARNING, "func_num_args(): Called from the global scope - no function context");
|
zend_error(E_WARNING, "func_num_args(): Called from the global scope - no function context");
|
||||||
|
@ -430,7 +430,7 @@ ZEND_FUNCTION(func_get_arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
ex = EX(prev_execute_data);
|
ex = EX(prev_execute_data);
|
||||||
if (VM_FRAME_KIND(ex->frame_info) != VM_FRAME_NESTED_FUNCTION && VM_FRAME_KIND(ex->frame_info) != VM_FRAME_TOP_FUNCTION) {
|
if (ZEND_CALL_INFO(ex) & ZEND_CALL_CODE) {
|
||||||
zend_error(E_WARNING, "func_get_arg(): Called from the global scope - no function context");
|
zend_error(E_WARNING, "func_get_arg(): Called from the global scope - no function context");
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
|
@ -464,7 +464,7 @@ ZEND_FUNCTION(func_get_args)
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
zend_execute_data *ex = EX(prev_execute_data);
|
zend_execute_data *ex = EX(prev_execute_data);
|
||||||
|
|
||||||
if (VM_FRAME_KIND(ex->frame_info) != VM_FRAME_NESTED_FUNCTION && VM_FRAME_KIND(ex->frame_info) != VM_FRAME_TOP_FUNCTION) {
|
if (ZEND_CALL_INFO(ex) & ZEND_CALL_CODE) {
|
||||||
zend_error(E_WARNING, "func_get_args(): Called from the global scope - no function context");
|
zend_error(E_WARNING, "func_get_args(): Called from the global scope - no function context");
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -357,12 +357,12 @@ union _zend_function {
|
||||||
zend_internal_function internal_function;
|
zend_internal_function internal_function;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum _vm_frame_kind {
|
typedef enum _zend_call_kind {
|
||||||
VM_FRAME_NESTED_FUNCTION, /* stackless VM call to function */
|
ZEND_CALL_NESTED_FUNCTION, /* stackless VM call to function */
|
||||||
VM_FRAME_NESTED_CODE, /* stackless VM call to include/require/eval */
|
ZEND_CALL_NESTED_CODE, /* stackless VM call to include/require/eval */
|
||||||
VM_FRAME_TOP_FUNCTION, /* direct VM call to function from external C code */
|
ZEND_CALL_TOP_FUNCTION, /* direct VM call to function from external C code */
|
||||||
VM_FRAME_TOP_CODE /* direct VM call to "main" code from external C code */
|
ZEND_CALL_TOP_CODE /* direct VM call to "main" code from external C code */
|
||||||
} vm_frame_kind;
|
} zend_call_kind;
|
||||||
|
|
||||||
struct _zend_execute_data {
|
struct _zend_execute_data {
|
||||||
const zend_op *opline; /* executed opline */
|
const zend_op *opline; /* executed opline */
|
||||||
|
@ -372,20 +372,33 @@ struct _zend_execute_data {
|
||||||
zval This;
|
zval This;
|
||||||
zend_class_entry *called_scope;
|
zend_class_entry *called_scope;
|
||||||
zend_execute_data *prev_execute_data;
|
zend_execute_data *prev_execute_data;
|
||||||
uint32_t frame_info;
|
|
||||||
zval *return_value;
|
zval *return_value;
|
||||||
zend_array *symbol_table;
|
zend_array *symbol_table;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define VM_FRAME_KIND_MASK 0x000000ff
|
#define ZEND_CALL_FUNCTION (0 << 0)
|
||||||
#define VM_FRAME_FLAGS_MASK 0xffffff00
|
#define ZEND_CALL_CODE (1 << 0)
|
||||||
|
#define ZEND_CALL_NESTED (0 << 1)
|
||||||
|
#define ZEND_CALL_TOP (1 << 1)
|
||||||
|
#define ZEND_CALL_CTOR (1 << 2)
|
||||||
|
#define ZEND_CALL_CTOR_RESULT_UNUSED (1 << 3)
|
||||||
|
|
||||||
#define ZEND_CALL_CTOR (1 << 8)
|
#define ZEND_CALL_INFO(call) \
|
||||||
#define ZEND_CALL_CTOR_RESULT_UNUSED (1 << 9)
|
(Z_TYPE_INFO((call)->This) >> 24)
|
||||||
|
|
||||||
#define VM_FRAME_INFO(kind, flags) ((kind) | (flags))
|
#define ZEND_CALL_KIND(call) \
|
||||||
#define VM_FRAME_KIND(info) ((info) & VM_FRAME_KIND_MASK)
|
(ZEND_CALL_INFO(call) & (ZEND_CALL_CODE | ZEND_CALL_TOP))
|
||||||
#define VM_FRAME_FLAGS(info) ((info) & VM_FRAME_FLAGS_MASK)
|
|
||||||
|
#define ZEND_SET_CALL_INFO(call, info) do { \
|
||||||
|
Z_TYPE_INFO((call)->This) = IS_OBJECT_EX | ((info) << 24); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define ZEND_ADD_CALL_FLAG(call, info) do { \
|
||||||
|
Z_TYPE_INFO((call)->This) |= ((info) << 24); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define ZEND_CALL_NUM_ARGS(call) \
|
||||||
|
(call)->This.u2.num_args
|
||||||
|
|
||||||
#define ZEND_CALL_FRAME_SLOT \
|
#define ZEND_CALL_FRAME_SLOT \
|
||||||
((ZEND_MM_ALIGNED_SIZE(sizeof(zend_execute_data)) + ZEND_MM_ALIGNED_SIZE(sizeof(zval)) - 1) / ZEND_MM_ALIGNED_SIZE(sizeof(zval)))
|
((ZEND_MM_ALIGNED_SIZE(sizeof(zend_execute_data)) + ZEND_MM_ALIGNED_SIZE(sizeof(zval)) - 1) / ZEND_MM_ALIGNED_SIZE(sizeof(zval)))
|
||||||
|
@ -393,11 +406,12 @@ struct _zend_execute_data {
|
||||||
#define ZEND_CALL_ARG(call, n) \
|
#define ZEND_CALL_ARG(call, n) \
|
||||||
(((zval*)(call)) + ((n) + (ZEND_CALL_FRAME_SLOT - 1)))
|
(((zval*)(call)) + ((n) + (ZEND_CALL_FRAME_SLOT - 1)))
|
||||||
|
|
||||||
#define ZEND_CALL_NUM_ARGS(call) \
|
|
||||||
(call)->This.u2.num_args
|
|
||||||
|
|
||||||
#define EX(element) ((execute_data)->element)
|
#define EX(element) ((execute_data)->element)
|
||||||
|
|
||||||
|
#define EX_CALL_INFO() ZEND_CALL_INFO(execute_data)
|
||||||
|
#define EX_CALL_KIND() ZEND_CALL_KIND(execute_data)
|
||||||
|
#define EX_NUM_ARGS() ZEND_CALL_NUM_ARGS(execute_data)
|
||||||
|
|
||||||
#define EX_VAR_2(ex, n) ((zval*)(((char*)(ex)) + ((int)(n))))
|
#define EX_VAR_2(ex, n) ((zval*)(((char*)(ex)) + ((int)(n))))
|
||||||
#define EX_VAR_NUM_2(ex, n) (((zval*)(ex)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
|
#define EX_VAR_NUM_2(ex, n) (((zval*)(ex)) + (ZEND_CALL_FRAME_SLOT + ((int)(n))))
|
||||||
|
|
||||||
|
@ -406,8 +420,6 @@ struct _zend_execute_data {
|
||||||
|
|
||||||
#define EX_VAR_TO_NUM(n) (EX_VAR_2(NULL, n) - EX_VAR_NUM_2(NULL, 0))
|
#define EX_VAR_TO_NUM(n) (EX_VAR_2(NULL, n) - EX_VAR_NUM_2(NULL, 0))
|
||||||
|
|
||||||
#define EX_NUM_ARGS() ZEND_CALL_NUM_ARGS(execute_data)
|
|
||||||
|
|
||||||
#define IS_CONST (1<<0)
|
#define IS_CONST (1<<0)
|
||||||
#define IS_TMP_VAR (1<<1)
|
#define IS_TMP_VAR (1<<1)
|
||||||
#define IS_VAR (1<<2)
|
#define IS_VAR (1<<2)
|
||||||
|
|
|
@ -1667,7 +1667,7 @@ ZEND_API zend_execute_data *zend_create_generator_execute_data(zend_execute_data
|
||||||
EG(vm_stack_end) = EG(vm_stack)->end;
|
EG(vm_stack_end) = EG(vm_stack)->end;
|
||||||
|
|
||||||
execute_data = zend_vm_stack_push_call_frame(
|
execute_data = zend_vm_stack_push_call_frame(
|
||||||
VM_FRAME_TOP_FUNCTION,
|
ZEND_CALL_TOP_FUNCTION,
|
||||||
(zend_function*)op_array,
|
(zend_function*)op_array,
|
||||||
num_args,
|
num_args,
|
||||||
call->called_scope,
|
call->called_scope,
|
||||||
|
|
|
@ -209,7 +209,7 @@ static zend_always_inline zval* zend_vm_stack_alloc(size_t size TSRMLS_DC)
|
||||||
return (zval*)top;
|
return (zval*)top;
|
||||||
}
|
}
|
||||||
|
|
||||||
static zend_always_inline zend_execute_data *zend_vm_stack_push_call_frame(uint32_t frame_info, zend_function *func, uint32_t num_args, zend_class_entry *called_scope, zend_object *object, zend_execute_data *prev TSRMLS_DC)
|
static zend_always_inline zend_execute_data *zend_vm_stack_push_call_frame(uint32_t call_info, zend_function *func, uint32_t num_args, zend_class_entry *called_scope, zend_object *object, zend_execute_data *prev TSRMLS_DC)
|
||||||
{
|
{
|
||||||
uint32_t used_stack = ZEND_CALL_FRAME_SLOT + num_args;
|
uint32_t used_stack = ZEND_CALL_FRAME_SLOT + num_args;
|
||||||
zend_execute_data *call;
|
zend_execute_data *call;
|
||||||
|
@ -219,11 +219,11 @@ static zend_always_inline zend_execute_data *zend_vm_stack_push_call_frame(uint3
|
||||||
}
|
}
|
||||||
call = (zend_execute_data*)zend_vm_stack_alloc(used_stack * sizeof(zval) TSRMLS_CC);
|
call = (zend_execute_data*)zend_vm_stack_alloc(used_stack * sizeof(zval) TSRMLS_CC);
|
||||||
call->func = func;
|
call->func = func;
|
||||||
ZVAL_OBJ(&call->This, object);
|
Z_OBJ(call->This) = object;
|
||||||
|
ZEND_SET_CALL_INFO(call, call_info);
|
||||||
|
ZEND_CALL_NUM_ARGS(call) = 0;
|
||||||
call->called_scope = called_scope;
|
call->called_scope = called_scope;
|
||||||
call->prev_execute_data = prev;
|
call->prev_execute_data = prev;
|
||||||
call->frame_info = frame_info;
|
|
||||||
ZEND_CALL_NUM_ARGS(call) = 0;
|
|
||||||
return call;
|
return call;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -736,7 +736,7 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS
|
||||||
}
|
}
|
||||||
|
|
||||||
func = fci_cache->function_handler;
|
func = fci_cache->function_handler;
|
||||||
call = zend_vm_stack_push_call_frame(VM_FRAME_TOP_FUNCTION,
|
call = zend_vm_stack_push_call_frame(ZEND_CALL_TOP_FUNCTION,
|
||||||
func, fci->param_count, fci_cache->called_scope, fci_cache->object, NULL TSRMLS_CC);
|
func, fci->param_count, fci_cache->called_scope, fci_cache->object, NULL TSRMLS_CC);
|
||||||
calling_scope = fci_cache->calling_scope;
|
calling_scope = fci_cache->calling_scope;
|
||||||
fci->object = fci_cache->object;
|
fci->object = fci_cache->object;
|
||||||
|
@ -835,9 +835,8 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS
|
||||||
}
|
}
|
||||||
if (!fci->object) {
|
if (!fci->object) {
|
||||||
Z_OBJ(call->This) = NULL;
|
Z_OBJ(call->This) = NULL;
|
||||||
Z_TYPE_INFO(call->This) = IS_UNDEF;
|
|
||||||
} else {
|
} else {
|
||||||
ZVAL_OBJ(&call->This, fci->object);
|
Z_OBJ(call->This) = fci->object;
|
||||||
GC_REFCOUNT(fci->object)++;
|
GC_REFCOUNT(fci->object)++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -112,7 +112,7 @@ struct _zval_struct {
|
||||||
zend_uchar type, /* active type */
|
zend_uchar type, /* active type */
|
||||||
zend_uchar type_flags,
|
zend_uchar type_flags,
|
||||||
zend_uchar const_flags,
|
zend_uchar const_flags,
|
||||||
zend_uchar reserved) /* various IS_VAR flags */
|
zend_uchar reserved) /* call info for EX(This) */
|
||||||
} v;
|
} v;
|
||||||
uint32_t type_info;
|
uint32_t type_info;
|
||||||
} u1;
|
} u1;
|
||||||
|
|
|
@ -1736,9 +1736,9 @@ ZEND_VM_HANDLER(39, ZEND_ASSIGN_REF, VAR|CV, VAR|CV)
|
||||||
|
|
||||||
ZEND_VM_HELPER(zend_leave_helper, ANY, ANY)
|
ZEND_VM_HELPER(zend_leave_helper, ANY, ANY)
|
||||||
{
|
{
|
||||||
vm_frame_kind frame_kind = VM_FRAME_KIND(EX(frame_info));
|
zend_call_kind call_kind = EX_CALL_KIND();
|
||||||
|
|
||||||
if (frame_kind == VM_FRAME_NESTED_FUNCTION) {
|
if (call_kind == ZEND_CALL_NESTED_FUNCTION) {
|
||||||
zend_object *object;
|
zend_object *object;
|
||||||
|
|
||||||
i_free_compiled_variables(execute_data TSRMLS_CC);
|
i_free_compiled_variables(execute_data TSRMLS_CC);
|
||||||
|
@ -1780,7 +1780,7 @@ ZEND_VM_HELPER(zend_leave_helper, ANY, ANY)
|
||||||
LOAD_OPLINE();
|
LOAD_OPLINE();
|
||||||
ZEND_VM_INC_OPCODE();
|
ZEND_VM_INC_OPCODE();
|
||||||
ZEND_VM_LEAVE();
|
ZEND_VM_LEAVE();
|
||||||
} else if (frame_kind == VM_FRAME_NESTED_CODE) {
|
} else if (call_kind == ZEND_CALL_NESTED_CODE) {
|
||||||
zend_detach_symbol_table(execute_data);
|
zend_detach_symbol_table(execute_data);
|
||||||
destroy_op_array(&EX(func)->op_array TSRMLS_CC);
|
destroy_op_array(&EX(func)->op_array TSRMLS_CC);
|
||||||
efree_size(EX(func), sizeof(zend_op_array));
|
efree_size(EX(func), sizeof(zend_op_array));
|
||||||
|
@ -1798,7 +1798,7 @@ ZEND_VM_HELPER(zend_leave_helper, ANY, ANY)
|
||||||
ZEND_VM_INC_OPCODE();
|
ZEND_VM_INC_OPCODE();
|
||||||
ZEND_VM_LEAVE();
|
ZEND_VM_LEAVE();
|
||||||
} else {
|
} else {
|
||||||
if (frame_kind == VM_FRAME_TOP_FUNCTION) {
|
if (call_kind == ZEND_CALL_TOP_FUNCTION) {
|
||||||
i_free_compiled_variables(execute_data TSRMLS_CC);
|
i_free_compiled_variables(execute_data TSRMLS_CC);
|
||||||
if (UNEXPECTED(EX(symbol_table) != NULL)) {
|
if (UNEXPECTED(EX(symbol_table) != NULL)) {
|
||||||
zend_clean_and_cache_symbol_table(EX(symbol_table) TSRMLS_CC);
|
zend_clean_and_cache_symbol_table(EX(symbol_table) TSRMLS_CC);
|
||||||
|
@ -1808,7 +1808,7 @@ ZEND_VM_HELPER(zend_leave_helper, ANY, ANY)
|
||||||
if ((EX(func)->op_array.fn_flags & ZEND_ACC_CLOSURE) && EX(func)->op_array.prototype) {
|
if ((EX(func)->op_array.fn_flags & ZEND_ACC_CLOSURE) && EX(func)->op_array.prototype) {
|
||||||
OBJ_RELEASE((zend_object*)EX(func)->op_array.prototype);
|
OBJ_RELEASE((zend_object*)EX(func)->op_array.prototype);
|
||||||
}
|
}
|
||||||
} else /* if (frame_kind == VM_FRAME_TOP_CODE) */ {
|
} else /* if (call_kind == ZEND_CALL_TOP_CODE) */ {
|
||||||
zend_array *symbol_table = EX(symbol_table);
|
zend_array *symbol_table = EX(symbol_table);
|
||||||
zend_execute_data *old_execute_data;
|
zend_execute_data *old_execute_data;
|
||||||
|
|
||||||
|
@ -2233,7 +2233,7 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV)
|
||||||
GC_REFCOUNT(obj)++; /* For $this pointer */
|
GC_REFCOUNT(obj)++; /* For $this pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
FREE_OP2();
|
FREE_OP2();
|
||||||
|
@ -2356,7 +2356,7 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, CONST|VAR, CONST|TMP|VAR|UNUS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
if (OP2_TYPE == IS_UNUSED) {
|
if (OP2_TYPE == IS_UNUSED) {
|
||||||
|
@ -2385,7 +2385,7 @@ ZEND_VM_HANDLER(59, ZEND_INIT_FCALL_BY_NAME, ANY, CONST|TMP|VAR|CV)
|
||||||
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc);
|
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc);
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
/*CHECK_EXCEPTION();*/
|
/*CHECK_EXCEPTION();*/
|
||||||
|
@ -2505,7 +2505,7 @@ ZEND_VM_HANDLER(59, ZEND_INIT_FCALL_BY_NAME, ANY, CONST|TMP|VAR|CV)
|
||||||
zend_error_noreturn(E_ERROR, "Function name must be a string");
|
zend_error_noreturn(E_ERROR, "Function name must be a string");
|
||||||
ZEND_VM_CONTINUE(); /* Never reached */
|
ZEND_VM_CONTINUE(); /* Never reached */
|
||||||
}
|
}
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
CHECK_EXCEPTION();
|
CHECK_EXCEPTION();
|
||||||
|
@ -2559,7 +2559,7 @@ ZEND_VM_HANDLER(118, ZEND_INIT_USER_CALL, CONST, CONST|TMP|VAR|CV)
|
||||||
object = NULL;
|
object = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
func, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
func, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
FREE_OP2();
|
FREE_OP2();
|
||||||
|
@ -2591,7 +2591,7 @@ ZEND_VM_HANDLER(69, ZEND_INIT_NS_FCALL_BY_NAME, ANY, CONST)
|
||||||
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc);
|
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc);
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
ZEND_VM_NEXT_OPCODE();
|
ZEND_VM_NEXT_OPCODE();
|
||||||
|
@ -2615,7 +2615,7 @@ ZEND_VM_HANDLER(61, ZEND_INIT_FCALL, ANY, CONST)
|
||||||
CACHE_PTR(Z_CACHE_SLOT_P(fname), fbc);
|
CACHE_PTR(Z_CACHE_SLOT_P(fname), fbc);
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
FREE_OP2();
|
FREE_OP2();
|
||||||
|
@ -2743,9 +2743,7 @@ ZEND_VM_HANDLER(60, ZEND_DO_FCALL, ANY, ANY)
|
||||||
if (EXPECTED(zend_execute_ex == execute_ex)) {
|
if (EXPECTED(zend_execute_ex == execute_ex)) {
|
||||||
ZEND_VM_ENTER();
|
ZEND_VM_ENTER();
|
||||||
} else {
|
} else {
|
||||||
call->frame_info = VM_FRAME_INFO(
|
ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
|
||||||
VM_FRAME_TOP_FUNCTION,
|
|
||||||
VM_FRAME_FLAGS(call->frame_info));
|
|
||||||
zend_execute_ex(call TSRMLS_CC);
|
zend_execute_ex(call TSRMLS_CC);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3716,10 +3714,8 @@ ZEND_VM_HANDLER(68, ZEND_NEW, CONST|VAR, ANY)
|
||||||
} else {
|
} else {
|
||||||
/* We are not handling overloaded classes right now */
|
/* We are not handling overloaded classes right now */
|
||||||
EX(call) = zend_vm_stack_push_call_frame(
|
EX(call) = zend_vm_stack_push_call_frame(
|
||||||
VM_FRAME_INFO(
|
ZEND_CALL_FUNCTION | ZEND_CALL_CTOR |
|
||||||
VM_FRAME_NESTED_FUNCTION,
|
(RETURN_VALUE_USED(opline) ? 0 : ZEND_CALL_CTOR_RESULT_UNUSED),
|
||||||
RETURN_VALUE_USED(opline) ?
|
|
||||||
ZEND_CALL_CTOR : (ZEND_CALL_CTOR | ZEND_CALL_CTOR_RESULT_UNUSED)),
|
|
||||||
constructor,
|
constructor,
|
||||||
opline->extended_value,
|
opline->extended_value,
|
||||||
ce,
|
ce,
|
||||||
|
@ -4210,7 +4206,7 @@ ZEND_VM_HANDLER(73, ZEND_INCLUDE_OR_EVAL, CONST|TMP|VAR|CV, ANY)
|
||||||
|
|
||||||
new_op_array->scope = EG(scope); /* ??? */
|
new_op_array->scope = EG(scope); /* ??? */
|
||||||
|
|
||||||
call = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_CODE,
|
call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_CODE,
|
||||||
(zend_function*)new_op_array, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC);
|
(zend_function*)new_op_array, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC);
|
||||||
|
|
||||||
if (EX(symbol_table)) {
|
if (EX(symbol_table)) {
|
||||||
|
@ -4224,7 +4220,7 @@ ZEND_VM_HANDLER(73, ZEND_INCLUDE_OR_EVAL, CONST|TMP|VAR|CV, ANY)
|
||||||
if (EXPECTED(zend_execute_ex == execute_ex)) {
|
if (EXPECTED(zend_execute_ex == execute_ex)) {
|
||||||
ZEND_VM_ENTER();
|
ZEND_VM_ENTER();
|
||||||
} else {
|
} else {
|
||||||
call->frame_info = VM_FRAME_TOP_CODE;
|
ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
|
||||||
zend_execute_ex(call TSRMLS_CC);
|
zend_execute_ex(call TSRMLS_CC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5487,8 +5483,8 @@ ZEND_VM_HANDLER(149, ZEND_HANDLE_EXCEPTION, ANY, ANY)
|
||||||
zend_vm_stack_free_args(EX(call) TSRMLS_CC);
|
zend_vm_stack_free_args(EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
if (Z_OBJ(call->This)) {
|
if (Z_OBJ(call->This)) {
|
||||||
if (call->frame_info & ZEND_CALL_CTOR) {
|
if (ZEND_CALL_INFO(call) & ZEND_CALL_CTOR) {
|
||||||
if (!(call->frame_info & ZEND_CALL_CTOR_RESULT_UNUSED)) {
|
if (!(ZEND_CALL_INFO(call) & ZEND_CALL_CTOR_RESULT_UNUSED)) {
|
||||||
GC_REFCOUNT(Z_OBJ(call->This))--;
|
GC_REFCOUNT(Z_OBJ(call->This))--;
|
||||||
}
|
}
|
||||||
if (GC_REFCOUNT(Z_OBJ(call->This)) == 1) {
|
if (GC_REFCOUNT(Z_OBJ(call->This)) == 1) {
|
||||||
|
|
|
@ -369,7 +369,7 @@ ZEND_API void zend_execute(zend_op_array *op_array, zval *return_value TSRMLS_DC
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
execute_data = zend_vm_stack_push_call_frame(VM_FRAME_TOP_CODE,
|
execute_data = zend_vm_stack_push_call_frame(ZEND_CALL_TOP_CODE,
|
||||||
(zend_function*)op_array, 0, EG(current_execute_data) ? EG(current_execute_data)->called_scope : NULL, EG(current_execute_data) ? Z_OBJ(EG(current_execute_data)->This) : NULL, NULL TSRMLS_CC);
|
(zend_function*)op_array, 0, EG(current_execute_data) ? EG(current_execute_data)->called_scope : NULL, EG(current_execute_data) ? Z_OBJ(EG(current_execute_data)->This) : NULL, NULL TSRMLS_CC);
|
||||||
if (EG(current_execute_data)) {
|
if (EG(current_execute_data)) {
|
||||||
execute_data->symbol_table = zend_rebuild_symbol_table(TSRMLS_C);
|
execute_data->symbol_table = zend_rebuild_symbol_table(TSRMLS_C);
|
||||||
|
@ -383,9 +383,9 @@ ZEND_API void zend_execute(zend_op_array *op_array, zval *return_value TSRMLS_DC
|
||||||
|
|
||||||
static int ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
|
static int ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
|
||||||
{
|
{
|
||||||
vm_frame_kind frame_kind = VM_FRAME_KIND(EX(frame_info));
|
zend_call_kind call_kind = EX_CALL_KIND();
|
||||||
|
|
||||||
if (frame_kind == VM_FRAME_NESTED_FUNCTION) {
|
if (call_kind == ZEND_CALL_NESTED_FUNCTION) {
|
||||||
zend_object *object;
|
zend_object *object;
|
||||||
|
|
||||||
i_free_compiled_variables(execute_data TSRMLS_CC);
|
i_free_compiled_variables(execute_data TSRMLS_CC);
|
||||||
|
@ -427,7 +427,7 @@ static int ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
|
||||||
LOAD_OPLINE();
|
LOAD_OPLINE();
|
||||||
ZEND_VM_INC_OPCODE();
|
ZEND_VM_INC_OPCODE();
|
||||||
ZEND_VM_LEAVE();
|
ZEND_VM_LEAVE();
|
||||||
} else if (frame_kind == VM_FRAME_NESTED_CODE) {
|
} else if (call_kind == ZEND_CALL_NESTED_CODE) {
|
||||||
zend_detach_symbol_table(execute_data);
|
zend_detach_symbol_table(execute_data);
|
||||||
destroy_op_array(&EX(func)->op_array TSRMLS_CC);
|
destroy_op_array(&EX(func)->op_array TSRMLS_CC);
|
||||||
efree_size(EX(func), sizeof(zend_op_array));
|
efree_size(EX(func), sizeof(zend_op_array));
|
||||||
|
@ -445,7 +445,7 @@ static int ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
|
||||||
ZEND_VM_INC_OPCODE();
|
ZEND_VM_INC_OPCODE();
|
||||||
ZEND_VM_LEAVE();
|
ZEND_VM_LEAVE();
|
||||||
} else {
|
} else {
|
||||||
if (frame_kind == VM_FRAME_TOP_FUNCTION) {
|
if (call_kind == ZEND_CALL_TOP_FUNCTION) {
|
||||||
i_free_compiled_variables(execute_data TSRMLS_CC);
|
i_free_compiled_variables(execute_data TSRMLS_CC);
|
||||||
if (UNEXPECTED(EX(symbol_table) != NULL)) {
|
if (UNEXPECTED(EX(symbol_table) != NULL)) {
|
||||||
zend_clean_and_cache_symbol_table(EX(symbol_table) TSRMLS_CC);
|
zend_clean_and_cache_symbol_table(EX(symbol_table) TSRMLS_CC);
|
||||||
|
@ -455,7 +455,7 @@ static int ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
|
||||||
if ((EX(func)->op_array.fn_flags & ZEND_ACC_CLOSURE) && EX(func)->op_array.prototype) {
|
if ((EX(func)->op_array.fn_flags & ZEND_ACC_CLOSURE) && EX(func)->op_array.prototype) {
|
||||||
OBJ_RELEASE((zend_object*)EX(func)->op_array.prototype);
|
OBJ_RELEASE((zend_object*)EX(func)->op_array.prototype);
|
||||||
}
|
}
|
||||||
} else /* if (frame_kind == VM_FRAME_TOP_CODE) */ {
|
} else /* if (call_kind == ZEND_CALL_TOP_CODE) */ {
|
||||||
zend_array *symbol_table = EX(symbol_table);
|
zend_array *symbol_table = EX(symbol_table);
|
||||||
zend_execute_data *old_execute_data;
|
zend_execute_data *old_execute_data;
|
||||||
|
|
||||||
|
@ -606,9 +606,7 @@ static int ZEND_FASTCALL ZEND_DO_FCALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||||
if (EXPECTED(zend_execute_ex == execute_ex)) {
|
if (EXPECTED(zend_execute_ex == execute_ex)) {
|
||||||
ZEND_VM_ENTER();
|
ZEND_VM_ENTER();
|
||||||
} else {
|
} else {
|
||||||
call->frame_info = VM_FRAME_INFO(
|
ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
|
||||||
VM_FRAME_TOP_FUNCTION,
|
|
||||||
VM_FRAME_FLAGS(call->frame_info));
|
|
||||||
zend_execute_ex(call TSRMLS_CC);
|
zend_execute_ex(call TSRMLS_CC);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1230,8 +1228,8 @@ static int ZEND_FASTCALL ZEND_HANDLE_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER
|
||||||
zend_vm_stack_free_args(EX(call) TSRMLS_CC);
|
zend_vm_stack_free_args(EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
if (Z_OBJ(call->This)) {
|
if (Z_OBJ(call->This)) {
|
||||||
if (call->frame_info & ZEND_CALL_CTOR) {
|
if (ZEND_CALL_INFO(call) & ZEND_CALL_CTOR) {
|
||||||
if (!(call->frame_info & ZEND_CALL_CTOR_RESULT_UNUSED)) {
|
if (!(ZEND_CALL_INFO(call) & ZEND_CALL_CTOR_RESULT_UNUSED)) {
|
||||||
GC_REFCOUNT(Z_OBJ(call->This))--;
|
GC_REFCOUNT(Z_OBJ(call->This))--;
|
||||||
}
|
}
|
||||||
if (GC_REFCOUNT(Z_OBJ(call->This)) == 1) {
|
if (GC_REFCOUNT(Z_OBJ(call->This)) == 1) {
|
||||||
|
@ -1475,7 +1473,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE
|
||||||
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc);
|
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc);
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
/*CHECK_EXCEPTION();*/
|
/*CHECK_EXCEPTION();*/
|
||||||
|
@ -1594,7 +1592,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE
|
||||||
zend_error_noreturn(E_ERROR, "Function name must be a string");
|
zend_error_noreturn(E_ERROR, "Function name must be a string");
|
||||||
ZEND_VM_CONTINUE(); /* Never reached */
|
ZEND_VM_CONTINUE(); /* Never reached */
|
||||||
}
|
}
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
CHECK_EXCEPTION();
|
CHECK_EXCEPTION();
|
||||||
|
@ -1626,7 +1624,7 @@ static int ZEND_FASTCALL ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPC
|
||||||
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc);
|
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc);
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
ZEND_VM_NEXT_OPCODE();
|
ZEND_VM_NEXT_OPCODE();
|
||||||
|
@ -1650,7 +1648,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER
|
||||||
CACHE_PTR(Z_CACHE_SLOT_P(fname), fbc);
|
CACHE_PTR(Z_CACHE_SLOT_P(fname), fbc);
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
ZEND_VM_NEXT_OPCODE();
|
ZEND_VM_NEXT_OPCODE();
|
||||||
|
@ -1811,7 +1809,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER(ZEND_OPCODE_H
|
||||||
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc);
|
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc);
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
/*CHECK_EXCEPTION();*/
|
/*CHECK_EXCEPTION();*/
|
||||||
|
@ -1931,7 +1929,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER(ZEND_OPCODE_H
|
||||||
zend_error_noreturn(E_ERROR, "Function name must be a string");
|
zend_error_noreturn(E_ERROR, "Function name must be a string");
|
||||||
ZEND_VM_CONTINUE(); /* Never reached */
|
ZEND_VM_CONTINUE(); /* Never reached */
|
||||||
}
|
}
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
CHECK_EXCEPTION();
|
CHECK_EXCEPTION();
|
||||||
|
@ -1997,7 +1995,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER(ZEND_OPCODE_H
|
||||||
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc);
|
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc);
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
/*CHECK_EXCEPTION();*/
|
/*CHECK_EXCEPTION();*/
|
||||||
|
@ -2117,7 +2115,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER(ZEND_OPCODE_H
|
||||||
zend_error_noreturn(E_ERROR, "Function name must be a string");
|
zend_error_noreturn(E_ERROR, "Function name must be a string");
|
||||||
ZEND_VM_CONTINUE(); /* Never reached */
|
ZEND_VM_CONTINUE(); /* Never reached */
|
||||||
}
|
}
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
CHECK_EXCEPTION();
|
CHECK_EXCEPTION();
|
||||||
|
@ -2221,7 +2219,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HA
|
||||||
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc);
|
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc);
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
/*CHECK_EXCEPTION();*/
|
/*CHECK_EXCEPTION();*/
|
||||||
|
@ -2340,7 +2338,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HA
|
||||||
zend_error_noreturn(E_ERROR, "Function name must be a string");
|
zend_error_noreturn(E_ERROR, "Function name must be a string");
|
||||||
ZEND_VM_CONTINUE(); /* Never reached */
|
ZEND_VM_CONTINUE(); /* Never reached */
|
||||||
}
|
}
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
CHECK_EXCEPTION();
|
CHECK_EXCEPTION();
|
||||||
|
@ -2778,10 +2776,8 @@ static int ZEND_FASTCALL ZEND_NEW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||||
} else {
|
} else {
|
||||||
/* We are not handling overloaded classes right now */
|
/* We are not handling overloaded classes right now */
|
||||||
EX(call) = zend_vm_stack_push_call_frame(
|
EX(call) = zend_vm_stack_push_call_frame(
|
||||||
VM_FRAME_INFO(
|
ZEND_CALL_FUNCTION | ZEND_CALL_CTOR |
|
||||||
VM_FRAME_NESTED_FUNCTION,
|
(RETURN_VALUE_USED(opline) ? 0 : ZEND_CALL_CTOR_RESULT_UNUSED),
|
||||||
RETURN_VALUE_USED(opline) ?
|
|
||||||
ZEND_CALL_CTOR : (ZEND_CALL_CTOR | ZEND_CALL_CTOR_RESULT_UNUSED)),
|
|
||||||
constructor,
|
constructor,
|
||||||
opline->extended_value,
|
opline->extended_value,
|
||||||
ce,
|
ce,
|
||||||
|
@ -3053,7 +3049,7 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HA
|
||||||
|
|
||||||
new_op_array->scope = EG(scope); /* ??? */
|
new_op_array->scope = EG(scope); /* ??? */
|
||||||
|
|
||||||
call = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_CODE,
|
call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_CODE,
|
||||||
(zend_function*)new_op_array, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC);
|
(zend_function*)new_op_array, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC);
|
||||||
|
|
||||||
if (EX(symbol_table)) {
|
if (EX(symbol_table)) {
|
||||||
|
@ -3067,7 +3063,7 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HA
|
||||||
if (EXPECTED(zend_execute_ex == execute_ex)) {
|
if (EXPECTED(zend_execute_ex == execute_ex)) {
|
||||||
ZEND_VM_ENTER();
|
ZEND_VM_ENTER();
|
||||||
} else {
|
} else {
|
||||||
call->frame_info = VM_FRAME_TOP_CODE;
|
ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
|
||||||
zend_execute_ex(call TSRMLS_CC);
|
zend_execute_ex(call TSRMLS_CC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4267,7 +4263,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
if (IS_CONST == IS_UNUSED) {
|
if (IS_CONST == IS_UNUSED) {
|
||||||
|
@ -4324,7 +4320,7 @@ static int ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCO
|
||||||
object = NULL;
|
object = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
func, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
func, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
CHECK_EXCEPTION();
|
CHECK_EXCEPTION();
|
||||||
|
@ -5629,7 +5625,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMP_HANDLER(ZE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
if (IS_TMP_VAR == IS_UNUSED) {
|
if (IS_TMP_VAR == IS_UNUSED) {
|
||||||
|
@ -5686,7 +5682,7 @@ static int ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE
|
||||||
object = NULL;
|
object = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
func, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
func, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
zval_ptr_dtor_nogc(free_op2);
|
zval_ptr_dtor_nogc(free_op2);
|
||||||
|
@ -6866,7 +6862,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_VAR_HANDLER(ZE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
if (IS_VAR == IS_UNUSED) {
|
if (IS_VAR == IS_UNUSED) {
|
||||||
|
@ -6923,7 +6919,7 @@ static int ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE
|
||||||
object = NULL;
|
object = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
func, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
func, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
zval_ptr_dtor_nogc(free_op2);
|
zval_ptr_dtor_nogc(free_op2);
|
||||||
|
@ -7802,7 +7798,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
if (IS_UNUSED == IS_UNUSED) {
|
if (IS_UNUSED == IS_UNUSED) {
|
||||||
|
@ -8828,7 +8824,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEN
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
if (IS_CV == IS_UNUSED) {
|
if (IS_CV == IS_UNUSED) {
|
||||||
|
@ -8885,7 +8881,7 @@ static int ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_
|
||||||
object = NULL;
|
object = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
func, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
func, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
CHECK_EXCEPTION();
|
CHECK_EXCEPTION();
|
||||||
|
@ -10020,7 +10016,7 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER(ZEND_OPCODE_HAND
|
||||||
|
|
||||||
new_op_array->scope = EG(scope); /* ??? */
|
new_op_array->scope = EG(scope); /* ??? */
|
||||||
|
|
||||||
call = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_CODE,
|
call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_CODE,
|
||||||
(zend_function*)new_op_array, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC);
|
(zend_function*)new_op_array, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC);
|
||||||
|
|
||||||
if (EX(symbol_table)) {
|
if (EX(symbol_table)) {
|
||||||
|
@ -10034,7 +10030,7 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER(ZEND_OPCODE_HAND
|
||||||
if (EXPECTED(zend_execute_ex == execute_ex)) {
|
if (EXPECTED(zend_execute_ex == execute_ex)) {
|
||||||
ZEND_VM_ENTER();
|
ZEND_VM_ENTER();
|
||||||
} else {
|
} else {
|
||||||
call->frame_info = VM_FRAME_TOP_CODE;
|
ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
|
||||||
zend_execute_ex(call TSRMLS_CC);
|
zend_execute_ex(call TSRMLS_CC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11252,7 +11248,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCO
|
||||||
GC_REFCOUNT(obj)++; /* For $this pointer */
|
GC_REFCOUNT(obj)++; /* For $this pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
|
|
||||||
|
@ -12496,7 +12492,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE
|
||||||
GC_REFCOUNT(obj)++; /* For $this pointer */
|
GC_REFCOUNT(obj)++; /* For $this pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
zval_ptr_dtor_nogc(free_op2);
|
zval_ptr_dtor_nogc(free_op2);
|
||||||
|
@ -13706,7 +13702,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE
|
||||||
GC_REFCOUNT(obj)++; /* For $this pointer */
|
GC_REFCOUNT(obj)++; /* For $this pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
zval_ptr_dtor_nogc(free_op2);
|
zval_ptr_dtor_nogc(free_op2);
|
||||||
|
@ -15532,7 +15528,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_
|
||||||
GC_REFCOUNT(obj)++; /* For $this pointer */
|
GC_REFCOUNT(obj)++; /* For $this pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
|
|
||||||
|
@ -16732,10 +16728,8 @@ static int ZEND_FASTCALL ZEND_NEW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||||
} else {
|
} else {
|
||||||
/* We are not handling overloaded classes right now */
|
/* We are not handling overloaded classes right now */
|
||||||
EX(call) = zend_vm_stack_push_call_frame(
|
EX(call) = zend_vm_stack_push_call_frame(
|
||||||
VM_FRAME_INFO(
|
ZEND_CALL_FUNCTION | ZEND_CALL_CTOR |
|
||||||
VM_FRAME_NESTED_FUNCTION,
|
(RETURN_VALUE_USED(opline) ? 0 : ZEND_CALL_CTOR_RESULT_UNUSED),
|
||||||
RETURN_VALUE_USED(opline) ?
|
|
||||||
ZEND_CALL_CTOR : (ZEND_CALL_CTOR | ZEND_CALL_CTOR_RESULT_UNUSED)),
|
|
||||||
constructor,
|
constructor,
|
||||||
opline->extended_value,
|
opline->extended_value,
|
||||||
ce,
|
ce,
|
||||||
|
@ -17009,7 +17003,7 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER(ZEND_OPCODE_HAND
|
||||||
|
|
||||||
new_op_array->scope = EG(scope); /* ??? */
|
new_op_array->scope = EG(scope); /* ??? */
|
||||||
|
|
||||||
call = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_CODE,
|
call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_CODE,
|
||||||
(zend_function*)new_op_array, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC);
|
(zend_function*)new_op_array, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC);
|
||||||
|
|
||||||
if (EX(symbol_table)) {
|
if (EX(symbol_table)) {
|
||||||
|
@ -17023,7 +17017,7 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER(ZEND_OPCODE_HAND
|
||||||
if (EXPECTED(zend_execute_ex == execute_ex)) {
|
if (EXPECTED(zend_execute_ex == execute_ex)) {
|
||||||
ZEND_VM_ENTER();
|
ZEND_VM_ENTER();
|
||||||
} else {
|
} else {
|
||||||
call->frame_info = VM_FRAME_TOP_CODE;
|
ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
|
||||||
zend_execute_ex(call TSRMLS_CC);
|
zend_execute_ex(call TSRMLS_CC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19201,7 +19195,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCO
|
||||||
GC_REFCOUNT(obj)++; /* For $this pointer */
|
GC_REFCOUNT(obj)++; /* For $this pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
zval_ptr_dtor_nogc(free_op1);
|
zval_ptr_dtor_nogc(free_op1);
|
||||||
|
@ -19323,7 +19317,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
if (IS_CONST == IS_UNUSED) {
|
if (IS_CONST == IS_UNUSED) {
|
||||||
|
@ -21507,7 +21501,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE
|
||||||
GC_REFCOUNT(obj)++; /* For $this pointer */
|
GC_REFCOUNT(obj)++; /* For $this pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
zval_ptr_dtor_nogc(free_op2);
|
zval_ptr_dtor_nogc(free_op2);
|
||||||
|
@ -21630,7 +21624,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
if (IS_TMP_VAR == IS_UNUSED) {
|
if (IS_TMP_VAR == IS_UNUSED) {
|
||||||
|
@ -23747,7 +23741,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE
|
||||||
GC_REFCOUNT(obj)++; /* For $this pointer */
|
GC_REFCOUNT(obj)++; /* For $this pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
zval_ptr_dtor_nogc(free_op2);
|
zval_ptr_dtor_nogc(free_op2);
|
||||||
|
@ -23870,7 +23864,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
if (IS_VAR == IS_UNUSED) {
|
if (IS_VAR == IS_UNUSED) {
|
||||||
|
@ -25345,7 +25339,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER(Z
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
if (IS_UNUSED == IS_UNUSED) {
|
if (IS_UNUSED == IS_UNUSED) {
|
||||||
|
@ -27179,7 +27173,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_
|
||||||
GC_REFCOUNT(obj)++; /* For $this pointer */
|
GC_REFCOUNT(obj)++; /* For $this pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
zval_ptr_dtor_nogc(free_op1);
|
zval_ptr_dtor_nogc(free_op1);
|
||||||
|
@ -27301,7 +27295,7 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
if (IS_CV == IS_UNUSED) {
|
if (IS_CV == IS_UNUSED) {
|
||||||
|
@ -28806,7 +28800,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_O
|
||||||
GC_REFCOUNT(obj)++; /* For $this pointer */
|
GC_REFCOUNT(obj)++; /* For $this pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
|
|
||||||
|
@ -30220,7 +30214,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPC
|
||||||
GC_REFCOUNT(obj)++; /* For $this pointer */
|
GC_REFCOUNT(obj)++; /* For $this pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
zval_ptr_dtor_nogc(free_op2);
|
zval_ptr_dtor_nogc(free_op2);
|
||||||
|
@ -31539,7 +31533,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPC
|
||||||
GC_REFCOUNT(obj)++; /* For $this pointer */
|
GC_REFCOUNT(obj)++; /* For $this pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
zval_ptr_dtor_nogc(free_op2);
|
zval_ptr_dtor_nogc(free_op2);
|
||||||
|
@ -33342,7 +33336,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCO
|
||||||
GC_REFCOUNT(obj)++; /* For $this pointer */
|
GC_REFCOUNT(obj)++; /* For $this pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
|
|
||||||
|
@ -34731,7 +34725,7 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDL
|
||||||
|
|
||||||
new_op_array->scope = EG(scope); /* ??? */
|
new_op_array->scope = EG(scope); /* ??? */
|
||||||
|
|
||||||
call = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_CODE,
|
call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_CODE,
|
||||||
(zend_function*)new_op_array, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC);
|
(zend_function*)new_op_array, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC);
|
||||||
|
|
||||||
if (EX(symbol_table)) {
|
if (EX(symbol_table)) {
|
||||||
|
@ -34745,7 +34739,7 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDL
|
||||||
if (EXPECTED(zend_execute_ex == execute_ex)) {
|
if (EXPECTED(zend_execute_ex == execute_ex)) {
|
||||||
ZEND_VM_ENTER();
|
ZEND_VM_ENTER();
|
||||||
} else {
|
} else {
|
||||||
call->frame_info = VM_FRAME_TOP_CODE;
|
ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
|
||||||
zend_execute_ex(call TSRMLS_CC);
|
zend_execute_ex(call TSRMLS_CC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36669,7 +36663,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCOD
|
||||||
GC_REFCOUNT(obj)++; /* For $this pointer */
|
GC_REFCOUNT(obj)++; /* For $this pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
|
|
||||||
|
@ -38804,7 +38798,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_
|
||||||
GC_REFCOUNT(obj)++; /* For $this pointer */
|
GC_REFCOUNT(obj)++; /* For $this pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
zval_ptr_dtor_nogc(free_op2);
|
zval_ptr_dtor_nogc(free_op2);
|
||||||
|
@ -40915,7 +40909,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_
|
||||||
GC_REFCOUNT(obj)++; /* For $this pointer */
|
GC_REFCOUNT(obj)++; /* For $this pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
zval_ptr_dtor_nogc(free_op2);
|
zval_ptr_dtor_nogc(free_op2);
|
||||||
|
@ -44072,7 +44066,7 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_H
|
||||||
GC_REFCOUNT(obj)++; /* For $this pointer */
|
GC_REFCOUNT(obj)++; /* For $this pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION,
|
EX(call) = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
|
||||||
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ ZEND_API void zend_{%EXECUTOR_NAME%}(zend_op_array *op_array, zval *return_value
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
execute_data = zend_vm_stack_push_call_frame(VM_FRAME_TOP_CODE,
|
execute_data = zend_vm_stack_push_call_frame(ZEND_CALL_TOP_CODE,
|
||||||
(zend_function*)op_array, 0, EG(current_execute_data) ? EG(current_execute_data)->called_scope : NULL, EG(current_execute_data) ? Z_OBJ(EG(current_execute_data)->This) : NULL, NULL TSRMLS_CC);
|
(zend_function*)op_array, 0, EG(current_execute_data) ? EG(current_execute_data)->called_scope : NULL, EG(current_execute_data) ? Z_OBJ(EG(current_execute_data)->This) : NULL, NULL TSRMLS_CC);
|
||||||
if (EG(current_execute_data)) {
|
if (EG(current_execute_data)) {
|
||||||
execute_data->symbol_table = zend_rebuild_symbol_table(TSRMLS_C);
|
execute_data->symbol_table = zend_rebuild_symbol_table(TSRMLS_C);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue