@@ -3941,7 +3941,7 @@ void zend_compile_static_call(znode *result, zend_ast *ast, uint32_t type) /* {{
3941
3941
}
3942
3942
/* }}} */
3943
3943
3944
- void zend_compile_class_decl (zend_ast * ast , zend_bool toplevel );
3944
+ zend_op * zend_compile_class_decl (zend_ast * ast , zend_bool toplevel );
3945
3945
3946
3946
void zend_compile_new (znode * result , zend_ast * ast ) /* {{{ */
3947
3947
{
@@ -3952,13 +3952,8 @@ void zend_compile_new(znode *result, zend_ast *ast) /* {{{ */
3952
3952
zend_op * opline ;
3953
3953
3954
3954
if (class_ast -> kind == ZEND_AST_CLASS ) {
3955
- uint32_t dcl_opnum = get_next_op_number ();
3956
- zend_compile_class_decl (class_ast , 0 );
3957
3955
/* jump over anon class declaration */
3958
- opline = & CG (active_op_array )-> opcodes [dcl_opnum ];
3959
- if (opline -> opcode == ZEND_FETCH_CLASS ) {
3960
- opline ++ ;
3961
- }
3956
+ opline = zend_compile_class_decl (class_ast , 0 );
3962
3957
class_node .op_type = opline -> result_type ;
3963
3958
class_node .u .op .var = opline -> result .var ;
3964
3959
opline -> extended_value = get_next_op_number ();
@@ -6136,7 +6131,7 @@ static zend_string *zend_generate_anon_class_name(unsigned char *lex_pos) /* {{{
6136
6131
}
6137
6132
/* }}} */
6138
6133
6139
- void zend_compile_class_decl (zend_ast * ast , zend_bool toplevel ) /* {{{ */
6134
+ zend_op * zend_compile_class_decl (zend_ast * ast , zend_bool toplevel ) /* {{{ */
6140
6135
{
6141
6136
zend_ast_decl * decl = (zend_ast_decl * ) ast ;
6142
6137
zend_ast * extends_ast = decl -> child [0 ];
@@ -6291,15 +6286,15 @@ void zend_compile_class_decl(zend_ast *ast, zend_bool toplevel) /* {{{ */
6291
6286
}
6292
6287
CG (zend_lineno ) = ast -> lineno ;
6293
6288
zend_string_release (lcname );
6294
- return ;
6289
+ return NULL ;
6295
6290
}
6296
6291
}
6297
6292
} else {
6298
6293
if (EXPECTED (zend_hash_add_ptr (CG (class_table ), lcname , ce ) != NULL )) {
6299
6294
zend_string_release (lcname );
6300
6295
zend_build_properties_info_table (ce );
6301
6296
ce -> ce_flags |= ZEND_ACC_LINKED ;
6302
- return ;
6297
+ return NULL ;
6303
6298
}
6304
6299
}
6305
6300
}
@@ -6325,7 +6320,7 @@ void zend_compile_class_decl(zend_ast *ast, zend_bool toplevel) /* {{{ */
6325
6320
zval zv ;
6326
6321
ZVAL_PTR (& zv , ce );
6327
6322
destroy_zend_class (& zv );
6328
- return ;
6323
+ return opline ;
6329
6324
}
6330
6325
} else {
6331
6326
zend_string * key = zend_build_runtime_definition_key (lcname , decl -> lex_pos );
@@ -6352,6 +6347,7 @@ void zend_compile_class_decl(zend_ast *ast, zend_bool toplevel) /* {{{ */
6352
6347
opline -> opcode = ZEND_DECLARE_CLASS ;
6353
6348
}
6354
6349
}
6350
+ return opline ;
6355
6351
}
6356
6352
/* }}} */
6357
6353
0 commit comments