1
0
mirror of https://github.com/php/php-src.git synced 2026-03-28 02:02:32 +01:00

Moved compiler helper functions from zend_opcode.c to zend_compile.c

This commit is contained in:
Dmitry Stogov
2018-03-13 13:49:58 +03:00
parent 9e1e284d48
commit c7045174f1
3 changed files with 32 additions and 40 deletions

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;