Skip to content

Commit f264bf2

Browse files
committed
Accept result znode in zend_compile_class_decl()
Make this use the same pattern we use everywhere else.
1 parent f652407 commit f264bf2

File tree

1 file changed

+8
-12
lines changed

1 file changed

+8
-12
lines changed

Zend/zend_compile.c

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4245,7 +4245,7 @@ void zend_compile_static_call(znode *result, zend_ast *ast, uint32_t type) /* {{
42454245
}
42464246
/* }}} */
42474247

4248-
zend_op *zend_compile_class_decl(zend_ast *ast, zend_bool toplevel);
4248+
void zend_compile_class_decl(znode *result, zend_ast *ast, zend_bool toplevel);
42494249

42504250
void zend_compile_new(znode *result, zend_ast *ast) /* {{{ */
42514251
{
@@ -4257,9 +4257,7 @@ void zend_compile_new(znode *result, zend_ast *ast) /* {{{ */
42574257

42584258
if (class_ast->kind == ZEND_AST_CLASS) {
42594259
/* anon class declaration */
4260-
opline = zend_compile_class_decl(class_ast, 0);
4261-
class_node.op_type = opline->result_type;
4262-
class_node.u.op.var = opline->result.var;
4260+
zend_compile_class_decl(&class_node, class_ast, 0);
42634261
} else {
42644262
zend_compile_class_ref(&class_node, class_ast, ZEND_FETCH_CLASS_EXCEPTION);
42654263
}
@@ -6630,7 +6628,7 @@ static zend_string *zend_generate_anon_class_name(zend_ast_decl *decl)
66306628
return zend_new_interned_string(result);
66316629
}
66326630

6633-
zend_op *zend_compile_class_decl(zend_ast *ast, zend_bool toplevel) /* {{{ */
6631+
void zend_compile_class_decl(znode *result, zend_ast *ast, zend_bool toplevel) /* {{{ */
66346632
{
66356633
zend_ast_decl *decl = (zend_ast_decl *) ast;
66366634
zend_ast *extends_ast = decl->child[0];
@@ -6769,15 +6767,15 @@ zend_op *zend_compile_class_decl(zend_ast *ast, zend_bool toplevel) /* {{{ */
67696767
if (zend_try_early_bind(ce, parent_ce, lcname, NULL)) {
67706768
CG(zend_lineno) = ast->lineno;
67716769
zend_string_release(lcname);
6772-
return NULL;
6770+
return;
67736771
}
67746772
CG(zend_lineno) = ast->lineno;
67756773
}
67766774
} else if (EXPECTED(zend_hash_add_ptr(CG(class_table), lcname, ce) != NULL)) {
67776775
zend_string_release(lcname);
67786776
zend_build_properties_info_table(ce);
67796777
ce->ce_flags |= ZEND_ACC_LINKED;
6780-
return NULL;
6778+
return;
67816779
}
67826780
}
67836781

@@ -6796,8 +6794,7 @@ zend_op *zend_compile_class_decl(zend_ast *ast, zend_bool toplevel) /* {{{ */
67966794
if (decl->flags & ZEND_ACC_ANON_CLASS) {
67976795
opline->opcode = ZEND_DECLARE_ANON_CLASS;
67986796
opline->extended_value = zend_alloc_cache_slot();
6799-
opline->result_type = IS_VAR;
6800-
opline->result.var = get_temporary_variable();
6797+
zend_make_var_result(result, opline);
68016798
if (!zend_hash_add_ptr(CG(class_table), lcname, ce)) {
68026799
zend_error_noreturn(E_ERROR,
68036800
"Runtime definition key collision for %s. This is a bug", ZSTR_VAL(name));
@@ -6825,7 +6822,6 @@ zend_op *zend_compile_class_decl(zend_ast *ast, zend_bool toplevel) /* {{{ */
68256822
opline->result.opline_num = -1;
68266823
}
68276824
}
6828-
return opline;
68296825
}
68306826
/* }}} */
68316827

@@ -8702,7 +8698,7 @@ void zend_compile_top_stmt(zend_ast *ast) /* {{{ */
87028698
CG(zend_lineno) = ((zend_ast_decl *) ast)->end_lineno;
87038699
} else if (ast->kind == ZEND_AST_CLASS) {
87048700
CG(zend_lineno) = ast->lineno;
8705-
zend_compile_class_decl(ast, 1);
8701+
zend_compile_class_decl(NULL, ast, 1);
87068702
CG(zend_lineno) = ((zend_ast_decl *) ast)->end_lineno;
87078703
} else {
87088704
zend_compile_stmt(ast);
@@ -8792,7 +8788,7 @@ void zend_compile_stmt(zend_ast *ast) /* {{{ */
87928788
zend_compile_use_trait(ast);
87938789
break;
87948790
case ZEND_AST_CLASS:
8795-
zend_compile_class_decl(ast, 0);
8791+
zend_compile_class_decl(NULL, ast, 0);
87968792
break;
87978793
case ZEND_AST_GROUP_USE:
87988794
zend_compile_group_use(ast);

0 commit comments

Comments
 (0)