Skip to content

Commit 7ab0a1d

Browse files
committed
Move handling of ZEND_AST_OP_ARRAY last
1 parent 33fea38 commit 7ab0a1d

File tree

3 files changed

+16
-16
lines changed

3 files changed

+16
-16
lines changed

Zend/zend_ast.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1117,13 +1117,6 @@ static void* ZEND_FASTCALL zend_ast_tree_copy(zend_ast *ast, void *buf)
11171117
ZVAL_STR_COPY(&new->val, zend_ast_get_constant_name(ast));
11181118
Z_LINENO(new->val) = zend_ast_get_lineno(ast);
11191119
buf = (void*)((char*)buf + sizeof(zend_ast_zval));
1120-
} else if (ast->kind == ZEND_AST_OP_ARRAY) {
1121-
zend_ast_zval *new = (zend_ast_zval*)buf;
1122-
new->kind = ZEND_AST_OP_ARRAY;
1123-
new->attr = ast->attr;
1124-
ZVAL_COPY(&new->val, &((zend_ast_zval *) ast)->val);
1125-
Z_LINENO(new->val) = zend_ast_get_lineno(ast);
1126-
buf = (void*)((char*)buf + sizeof(zend_ast_zval));
11271120
} else if (zend_ast_is_list(ast)) {
11281121
zend_ast_list *list = zend_ast_get_list(ast);
11291122
zend_ast_list *new = (zend_ast_list*)buf;
@@ -1141,6 +1134,13 @@ static void* ZEND_FASTCALL zend_ast_tree_copy(zend_ast *ast, void *buf)
11411134
new->child[i] = NULL;
11421135
}
11431136
}
1137+
} else if (ast->kind == ZEND_AST_OP_ARRAY) {
1138+
zend_ast_zval *new = (zend_ast_zval*)buf;
1139+
new->kind = ZEND_AST_OP_ARRAY;
1140+
new->attr = ast->attr;
1141+
ZVAL_COPY(&new->val, &((zend_ast_zval *) ast)->val);
1142+
Z_LINENO(new->val) = zend_ast_get_lineno(ast);
1143+
buf = (void*)((char*)buf + sizeof(zend_ast_zval));
11441144
} else {
11451145
uint32_t i, children = zend_ast_get_num_children(ast);
11461146
zend_ast *new = (zend_ast*)buf;
@@ -1191,8 +1191,6 @@ ZEND_API void ZEND_FASTCALL zend_ast_destroy(zend_ast *ast)
11911191
goto tail_call;
11921192
} else if (EXPECTED(ast->kind == ZEND_AST_ZVAL)) {
11931193
zval_ptr_dtor_nogc(zend_ast_get_zval(ast));
1194-
} else if (EXPECTED(ast->kind == ZEND_AST_OP_ARRAY)) {
1195-
zval_ptr_dtor_nogc(&((zend_ast_zval*)(ast))->val);
11961194
} else if (EXPECTED(zend_ast_is_list(ast))) {
11971195
zend_ast_list *list = zend_ast_get_list(ast);
11981196
if (list->children) {
@@ -1206,6 +1204,8 @@ ZEND_API void ZEND_FASTCALL zend_ast_destroy(zend_ast *ast)
12061204
}
12071205
} else if (EXPECTED(ast->kind == ZEND_AST_CONSTANT)) {
12081206
zend_string_release_ex(zend_ast_get_constant_name(ast), 0);
1207+
} else if (EXPECTED(ast->kind == ZEND_AST_OP_ARRAY)) {
1208+
zval_ptr_dtor_nogc(&((zend_ast_zval*)(ast))->val);
12091209
} else if (EXPECTED(ast->kind >= ZEND_AST_FUNC_DECL)) {
12101210
zend_ast_decl *decl = (zend_ast_decl *) ast;
12111211

ext/opcache/zend_persist.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,10 +178,6 @@ static zend_ast *zend_persist_ast(zend_ast *ast)
178178
zend_ast_zval *copy = zend_shared_memdup(ast, sizeof(zend_ast_zval));
179179
zend_persist_zval(&copy->val);
180180
node = (zend_ast *) copy;
181-
} else if (ast->kind == ZEND_AST_OP_ARRAY) {
182-
zend_ast_zval *copy = zend_shared_memdup(ast, sizeof(zend_ast_zval));
183-
zend_persist_op_array(&copy->val);
184-
node = (zend_ast *) copy;
185181
} else if (zend_ast_is_list(ast)) {
186182
zend_ast_list *list = zend_ast_get_list(ast);
187183
zend_ast_list *copy = zend_shared_memdup(ast,
@@ -192,6 +188,10 @@ static zend_ast *zend_persist_ast(zend_ast *ast)
192188
}
193189
}
194190
node = (zend_ast *) copy;
191+
} else if (ast->kind == ZEND_AST_OP_ARRAY) {
192+
zend_ast_zval *copy = zend_shared_memdup(ast, sizeof(zend_ast_zval));
193+
zend_persist_op_array(&copy->val);
194+
node = (zend_ast *) copy;
195195
} else {
196196
uint32_t children = zend_ast_get_num_children(ast);
197197
node = zend_shared_memdup(ast, zend_ast_size(children));

ext/opcache/zend_persist_calc.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,6 @@ static void zend_persist_ast_calc(zend_ast *ast)
7878
if (ast->kind == ZEND_AST_ZVAL || ast->kind == ZEND_AST_CONSTANT) {
7979
ADD_SIZE(sizeof(zend_ast_zval));
8080
zend_persist_zval_calc(&((zend_ast_zval*)(ast))->val);
81-
} else if (ast->kind == ZEND_AST_OP_ARRAY) {
82-
ADD_SIZE(sizeof(zend_ast_zval));
83-
zend_persist_op_array_calc(&((zend_ast_zval*)(ast))->val);
8481
} else if (zend_ast_is_list(ast)) {
8582
zend_ast_list *list = zend_ast_get_list(ast);
8683
ADD_SIZE(sizeof(zend_ast_list) - sizeof(zend_ast *) + sizeof(zend_ast *) * list->children);
@@ -89,6 +86,9 @@ static void zend_persist_ast_calc(zend_ast *ast)
8986
zend_persist_ast_calc(list->child[i]);
9087
}
9188
}
89+
} else if (ast->kind == ZEND_AST_OP_ARRAY) {
90+
ADD_SIZE(sizeof(zend_ast_zval));
91+
zend_persist_op_array_calc(&((zend_ast_zval*)(ast))->val);
9292
} else {
9393
uint32_t children = zend_ast_get_num_children(ast);
9494
ADD_SIZE(zend_ast_size(children));

0 commit comments

Comments
 (0)