@@ -4245,7 +4245,7 @@ void zend_compile_static_call(znode *result, zend_ast *ast, uint32_t type) /* {{
4245
4245
}
4246
4246
/* }}} */
4247
4247
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 );
4249
4249
4250
4250
void zend_compile_new (znode * result , zend_ast * ast ) /* {{{ */
4251
4251
{
@@ -4257,9 +4257,7 @@ void zend_compile_new(znode *result, zend_ast *ast) /* {{{ */
4257
4257
4258
4258
if (class_ast -> kind == ZEND_AST_CLASS ) {
4259
4259
/* 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 );
4263
4261
} else {
4264
4262
zend_compile_class_ref (& class_node , class_ast , ZEND_FETCH_CLASS_EXCEPTION );
4265
4263
}
@@ -6630,7 +6628,7 @@ static zend_string *zend_generate_anon_class_name(zend_ast_decl *decl)
6630
6628
return zend_new_interned_string (result );
6631
6629
}
6632
6630
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 ) /* {{{ */
6634
6632
{
6635
6633
zend_ast_decl * decl = (zend_ast_decl * ) ast ;
6636
6634
zend_ast * extends_ast = decl -> child [0 ];
@@ -6769,15 +6767,15 @@ zend_op *zend_compile_class_decl(zend_ast *ast, zend_bool toplevel) /* {{{ */
6769
6767
if (zend_try_early_bind (ce , parent_ce , lcname , NULL )) {
6770
6768
CG (zend_lineno ) = ast -> lineno ;
6771
6769
zend_string_release (lcname );
6772
- return NULL ;
6770
+ return ;
6773
6771
}
6774
6772
CG (zend_lineno ) = ast -> lineno ;
6775
6773
}
6776
6774
} else if (EXPECTED (zend_hash_add_ptr (CG (class_table ), lcname , ce ) != NULL )) {
6777
6775
zend_string_release (lcname );
6778
6776
zend_build_properties_info_table (ce );
6779
6777
ce -> ce_flags |= ZEND_ACC_LINKED ;
6780
- return NULL ;
6778
+ return ;
6781
6779
}
6782
6780
}
6783
6781
@@ -6796,8 +6794,7 @@ zend_op *zend_compile_class_decl(zend_ast *ast, zend_bool toplevel) /* {{{ */
6796
6794
if (decl -> flags & ZEND_ACC_ANON_CLASS ) {
6797
6795
opline -> opcode = ZEND_DECLARE_ANON_CLASS ;
6798
6796
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 );
6801
6798
if (!zend_hash_add_ptr (CG (class_table ), lcname , ce )) {
6802
6799
zend_error_noreturn (E_ERROR ,
6803
6800
"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) /* {{{ */
6825
6822
opline -> result .opline_num = -1 ;
6826
6823
}
6827
6824
}
6828
- return opline ;
6829
6825
}
6830
6826
/* }}} */
6831
6827
@@ -8702,7 +8698,7 @@ void zend_compile_top_stmt(zend_ast *ast) /* {{{ */
8702
8698
CG (zend_lineno ) = ((zend_ast_decl * ) ast )-> end_lineno ;
8703
8699
} else if (ast -> kind == ZEND_AST_CLASS ) {
8704
8700
CG (zend_lineno ) = ast -> lineno ;
8705
- zend_compile_class_decl (ast , 1 );
8701
+ zend_compile_class_decl (NULL , ast , 1 );
8706
8702
CG (zend_lineno ) = ((zend_ast_decl * ) ast )-> end_lineno ;
8707
8703
} else {
8708
8704
zend_compile_stmt (ast );
@@ -8792,7 +8788,7 @@ void zend_compile_stmt(zend_ast *ast) /* {{{ */
8792
8788
zend_compile_use_trait (ast );
8793
8789
break ;
8794
8790
case ZEND_AST_CLASS :
8795
- zend_compile_class_decl (ast , 0 );
8791
+ zend_compile_class_decl (NULL , ast , 0 );
8796
8792
break ;
8797
8793
case ZEND_AST_GROUP_USE :
8798
8794
zend_compile_group_use (ast );
0 commit comments