|
|
|
@ -70,10 +70,10 @@ DEF_HASH_TABLE_FUNC(`HashTable_zend_function', `zend_function')
|
|
|
|
|
DEF_HASH_TABLE_FUNC(`HashTable_zend_property_info', `zend_property_info')
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef IS_CONSTANT_AST
|
|
|
|
|
define(`ZEND_AST_HELPER', `
|
|
|
|
|
{
|
|
|
|
|
define(`ZEND_AST_HELPER', `dnl {{{
|
|
|
|
|
{
|
|
|
|
|
IFCALCCOPY(`
|
|
|
|
|
size_t zend_ast_size = $1->kind == ZEND_CONST
|
|
|
|
|
size_t zend_ast_size = ($1->kind == ZEND_CONST)
|
|
|
|
|
? sizeof(zend_ast) + sizeof(zval)
|
|
|
|
|
: sizeof(zend_ast) + sizeof(zend_ast *) * ($1->children - 1);
|
|
|
|
|
')
|
|
|
|
@ -81,8 +81,9 @@ define(`ZEND_AST_HELPER', `
|
|
|
|
|
pushdef(`ALLOC_SIZE_HELPER', `zend_ast_size')
|
|
|
|
|
$2
|
|
|
|
|
popdef(`ALLOC_SIZE_HELPER')
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
')
|
|
|
|
|
dnl }}}
|
|
|
|
|
DEF_STRUCT_P_FUNC(`zend_ast', , `dnl {{{
|
|
|
|
|
zend_ushort i;
|
|
|
|
|
PROCESS(zend_ushort, kind)
|
|
|
|
@ -92,6 +93,7 @@ DEF_STRUCT_P_FUNC(`zend_ast', , `dnl {{{
|
|
|
|
|
if (SRC()->kind == ZEND_CONST) {
|
|
|
|
|
assert(SRC()->u.val);
|
|
|
|
|
IFCOPY(`
|
|
|
|
|
DST()->u.val = (zval *) (DST() + 1);
|
|
|
|
|
memcpy(DST()->u.val, SRC()->u.val, sizeof(zval));
|
|
|
|
|
')
|
|
|
|
|
STRUCT_P_EX(zval, DST()->u.val, SRC()->u.val, `', `', ` ')
|
|
|
|
@ -100,9 +102,16 @@ DEF_STRUCT_P_FUNC(`zend_ast', , `dnl {{{
|
|
|
|
|
else {
|
|
|
|
|
for (i = 0; i < SRC()->children; ++i) {
|
|
|
|
|
zend_ast *src_ast = (&SRC()->u.child)[i];
|
|
|
|
|
ALLOC(`(&DST()->u.child)[i]', zend_ast)
|
|
|
|
|
ZEND_AST_HELPER(`src_ast', `STRUCT_P_EX(zend_ast, (&DST()->u.child)[i], src_ast, `[i]', `', ` ')')
|
|
|
|
|
RELOCATE_EX(zend_ast, (&DST()->u.child)[i])
|
|
|
|
|
if (src_ast) {
|
|
|
|
|
ZEND_AST_HELPER(`src_ast', `
|
|
|
|
|
ALLOC(`(&DST()->u.child)[i]', zend_ast)
|
|
|
|
|
STRUCT_P_EX(zend_ast, (&DST()->u.child)[i], src_ast, `[i]', `', ` ')
|
|
|
|
|
')
|
|
|
|
|
RELOCATE_EX(zend_ast, (&DST()->u.child)[i])
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
COPYNULL_EX(`(&DST()->u.child)[i]')
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
')
|
|
|
|
|