]> granicus.if.org Git - php/commitdiff
Drop unused RAISE_ABSTRACT_ERROR opcode
authorNikita Popov <nikic@php.net>
Mon, 29 Sep 2014 20:50:56 +0000 (22:50 +0200)
committerNikita Popov <nikic@php.net>
Mon, 29 Sep 2014 20:50:56 +0000 (22:50 +0200)
Abstract methods are being prevented from being called in DO_FCALL
etc.

Zend/zend_compile.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
Zend/zend_vm_opcodes.c
Zend/zend_vm_opcodes.h

index 4ecdd36e0cb411967640daae390a7c6f829fba5b..41e3189dabd3c02afd65fb7321372819b4b5f87c 100644 (file)
@@ -3935,8 +3935,6 @@ void zend_begin_method_decl(zend_op_array *op_array, zend_string *name, zend_boo
        }
 
        if (op_array->fn_flags & ZEND_ACC_ABSTRACT) {
-               //zend_op *opline;
-
                if (op_array->fn_flags & ZEND_ACC_PRIVATE) {
                        zend_error_noreturn(E_COMPILE_ERROR, "%s function %s::%s() cannot be declared private",
                                in_interface ? "Interface" : "Abstract", ce->name->val, name->val);
@@ -3948,11 +3946,6 @@ void zend_begin_method_decl(zend_op_array *op_array, zend_string *name, zend_boo
                }
 
                ce->ce_flags |= ZEND_ACC_IMPLICIT_ABSTRACT_CLASS;
-
-               /*opline = get_next_op(op_array TSRMLS_CC);
-               opline->opcode = ZEND_RAISE_ABSTRACT_ERROR;
-               SET_UNUSED(opline->op1);
-               SET_UNUSED(opline->op2);*/
        } else if (!has_body) {
                zend_error_noreturn(E_COMPILE_ERROR, "Non-abstract method %s::%s() must contain body",
                        ce->name->val, name->val);
index 405c3f45c9676e3253e2048ff0a092ef01564cdf..0a9a3306968ab16e849fd84463896cf3d9b8faf8 100644 (file)
@@ -5082,13 +5082,6 @@ ZEND_VM_HANDLER(57, ZEND_BEGIN_SILENCE, ANY, ANY)
        ZEND_VM_NEXT_OPCODE();
 }
 
-ZEND_VM_HANDLER(142, ZEND_RAISE_ABSTRACT_ERROR, ANY, ANY)
-{
-       SAVE_OPLINE();
-       zend_error_noreturn(E_ERROR, "Cannot call abstract method %s::%s()", EX(scope)->name->val, EX(func)->op_array.function_name->val);
-       ZEND_VM_NEXT_OPCODE(); /* Never reached */
-}
-
 ZEND_VM_HANDLER(58, ZEND_END_SILENCE, TMP, ANY)
 {
        USE_OPLINE
index d49926aa1c06fcc8d87d52df16df9b554461f6f6..77f43ffdf9ca1d550ed46458c280bbee54c172c6 100644 (file)
@@ -1142,13 +1142,6 @@ static int ZEND_FASTCALL  ZEND_BEGIN_SILENCE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_AR
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       SAVE_OPLINE();
-       zend_error_noreturn(E_ERROR, "Cannot call abstract method %s::%s()", EX(scope)->name->val, EX(func)->op_array.function_name->val);
-       ZEND_VM_NEXT_OPCODE(); /* Never reached */
-}
-
 static int ZEND_FASTCALL  ZEND_EXT_STMT_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        SAVE_OPLINE();
@@ -10070,12 +10063,12 @@ static int ZEND_FASTCALL  ZEND_COALESCE_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG
                        if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
                } else if (IS_TMP_VAR == IS_VAR && is_ref) {
                        if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
-                       zval_dtor(free_op1.var);
+                       zval_ptr_dtor_nogc(free_op1.var);
                }
                ZEND_VM_JMP(opline->op2.jmp_addr);
        }
 
-       zval_dtor(free_op1.var);
+       zval_ptr_dtor_nogc(free_op1.var);
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
 }
@@ -46851,31 +46844,31 @@ void zend_init_opcodes_handlers(void)
        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
-       ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
        ZEND_DECLARE_CONST_SPEC_CONST_CONST_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
index 23b49e3d71cca8dd8d7b74c77bf5117bfac04c50..45dfe598452e7308bc0fdb180900ed49973aa0a4 100644 (file)
@@ -164,7 +164,7 @@ const char *zend_vm_opcodes_map[170] = {
        "ZEND_DECLARE_CLASS",
        "ZEND_DECLARE_INHERITED_CLASS",
        "ZEND_DECLARE_FUNCTION",
-       "ZEND_RAISE_ABSTRACT_ERROR",
+       NULL,
        "ZEND_DECLARE_CONST",
        "ZEND_ADD_INTERFACE",
        "ZEND_DECLARE_INHERITED_CLASS_DELAYED",
index c1ecebb2f38a58bfbc2d9d7f2bdcbac519d074a0..32a856a63ccec00cd08335bcf734c58a83f3d20e 100644 (file)
@@ -155,7 +155,6 @@ ZEND_API const char *zend_get_opcode_name(zend_uchar opcode);
 #define ZEND_DECLARE_CLASS                   139
 #define ZEND_DECLARE_INHERITED_CLASS         140
 #define ZEND_DECLARE_FUNCTION                141
-#define ZEND_RAISE_ABSTRACT_ERROR            142
 #define ZEND_DECLARE_CONST                   143
 #define ZEND_ADD_INTERFACE                   144
 #define ZEND_DECLARE_INHERITED_CLASS_DELAYED 145