From c7045174f1dfd2534c080a36ee6eca18fcbd14d7 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 13 Mar 2018 13:49:58 +0300 Subject: [PATCH] Moved compiler helper functions from zend_opcode.c to zend_compile.c --- Zend/zend_compile.c | 31 +++++++++++++++++++++++++++++++ Zend/zend_compile.h | 3 --- Zend/zend_opcode.c | 38 +------------------------------------- 3 files changed, 32 insertions(+), 40 deletions(-) diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 9ce33737af..ffc92323d7 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -91,6 +91,37 @@ ZEND_API zend_executor_globals executor_globals; static zend_op *zend_emit_op(znode *result, zend_uchar opcode, znode *op1, znode *op2); static zend_bool zend_try_ct_eval_array(zval *result, zend_ast *ast); +static void init_op(zend_op *op) +{ + MAKE_NOP(op); + op->extended_value = 0; + op->lineno = CG(zend_lineno); +} + +static zend_op *get_next_op(zend_op_array *op_array) +{ + uint32_t next_op_num = op_array->last++; + zend_op *next_op; + + if (UNEXPECTED(next_op_num >= CG(context).opcodes_size)) { + CG(context).opcodes_size *= 4; + op_array->opcodes = erealloc(op_array->opcodes, CG(context).opcodes_size * sizeof(zend_op)); + } + + next_op = &(op_array->opcodes[next_op_num]); + + init_op(next_op); + + return next_op; +} + +static zend_brk_cont_element *get_next_brk_cont_element(void) +{ + CG(context).last_brk_cont++; + CG(context).brk_cont_array = erealloc(CG(context).brk_cont_array, sizeof(zend_brk_cont_element) * CG(context).last_brk_cont); + return &CG(context).brk_cont_array[CG(context).last_brk_cont-1]; +} + static void zend_destroy_property_info_internal(zval *zv) /* {{{ */ { zend_property_info *property_info = Z_PTR_P(zv); diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 2c708bdd30..b03f8bd677 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -772,10 +772,7 @@ ZEND_API int zend_unmangle_property_name_ex(const zend_string *name, const char #define ZEND_FUNCTION_DTOR zend_function_dtor #define ZEND_CLASS_DTOR destroy_zend_class -zend_op *get_next_op(zend_op_array *op_array); -void init_op(zend_op *op); ZEND_API int pass_two(zend_op_array *op_array); -zend_brk_cont_element *get_next_brk_cont_element(void); ZEND_API zend_bool zend_is_compiling(void); ZEND_API char *zend_make_compiled_string_description(const char *name); ZEND_API void zend_initialize_class_data(zend_class_entry *ce, zend_bool nullify_handlers); diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index 5e7164c324..f534808321 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -45,11 +45,6 @@ static void zend_extension_op_array_dtor_handler(zend_extension *extension, zend } } -static void op_array_alloc_ops(zend_op_array *op_array, uint32_t size) -{ - op_array->opcodes = erealloc(op_array->opcodes, size * sizeof(zend_op)); -} - void init_op_array(zend_op_array *op_array, zend_uchar type, int initial_ops_size) { op_array->type = type; @@ -60,8 +55,7 @@ void init_op_array(zend_op_array *op_array, zend_uchar type, int initial_ops_siz op_array->refcount = (uint32_t *) emalloc(sizeof(uint32_t)); *op_array->refcount = 1; op_array->last = 0; - op_array->opcodes = NULL; - op_array_alloc_ops(op_array, initial_ops_size); + op_array->opcodes = emalloc(initial_ops_size * sizeof(zend_op));; op_array->last_var = 0; op_array->vars = NULL; @@ -454,36 +448,6 @@ ZEND_API void destroy_op_array(zend_op_array *op_array) } } -void init_op(zend_op *op) -{ - memset(op, 0, sizeof(zend_op)); - op->lineno = CG(zend_lineno); -} - -zend_op *get_next_op(zend_op_array *op_array) -{ - uint32_t next_op_num = op_array->last++; - zend_op *next_op; - - if (next_op_num >= CG(context).opcodes_size) { - CG(context).opcodes_size *= 4; - op_array_alloc_ops(op_array, CG(context).opcodes_size); - } - - next_op = &(op_array->opcodes[next_op_num]); - - init_op(next_op); - - return next_op; -} - -zend_brk_cont_element *get_next_brk_cont_element(void) -{ - CG(context).last_brk_cont++; - CG(context).brk_cont_array = erealloc(CG(context).brk_cont_array, sizeof(zend_brk_cont_element) * CG(context).last_brk_cont); - return &CG(context).brk_cont_array[CG(context).last_brk_cont-1]; -} - static void zend_update_extended_info(zend_op_array *op_array) { zend_op *opline = op_array->opcodes, *end=opline+op_array->last; -- 2.40.0