]> granicus.if.org Git - php/commitdiff
Pass class_entry through IS_VAR to avoid hash lookup in ZEND_NEW.
authorDmitry Stogov <dmitry@zend.com>
Mon, 27 Apr 2015 11:16:29 +0000 (14:16 +0300)
committerDmitry Stogov <dmitry@zend.com>
Mon, 27 Apr 2015 11:16:29 +0000 (14:16 +0300)
Zend/zend_compile.c

index c4170673cb2babc77bd662be53d91e20d41e7eb9..ddd1346d8117293a28e640ad09775d71ca88eaf1 100644 (file)
@@ -3246,13 +3246,13 @@ void zend_compile_new(znode *result, zend_ast *ast) /* {{{ */
        } else if (class_ast->kind == ZEND_AST_CLASS) {
                uint32_t dcl_opnum = get_next_op_number(CG(active_op_array));
                zend_class_entry *ce = zend_compile_class_decl(class_ast);
-               class_node.op_type = IS_CONST;
-               ZVAL_STR_COPY(&class_node.u.constant, ce->name);
                /* jump over anon class declaration */
                opline = &CG(active_op_array)->opcodes[dcl_opnum];
                if (opline->opcode == ZEND_FETCH_CLASS) {
                        opline++;
                }
+               class_node.op_type = opline->result_type;
+               class_node.u.op.var = opline->result.var;
                opline->op1.opline_num = get_next_op_number(CG(active_op_array));
        } else {
                zend_compile_class_ref(&class_node, class_ast, 1);