summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_compile.c7
-rw-r--r--Zend/zend_vm_def.h7
-rw-r--r--Zend/zend_vm_execute.h61
-rw-r--r--Zend/zend_vm_opcodes.c2
-rw-r--r--Zend/zend_vm_opcodes.h1
5 files changed, 28 insertions, 50 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 4ecdd36e0c..41e3189dab 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -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);
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index 405c3f45c9..0a9a330696 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -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
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index d49926aa1c..77f43ffdf9 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -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,
diff --git a/Zend/zend_vm_opcodes.c b/Zend/zend_vm_opcodes.c
index 23b49e3d71..45dfe59845 100644
--- a/Zend/zend_vm_opcodes.c
+++ b/Zend/zend_vm_opcodes.c
@@ -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",
diff --git a/Zend/zend_vm_opcodes.h b/Zend/zend_vm_opcodes.h
index c1ecebb2f3..32a856a63c 100644
--- a/Zend/zend_vm_opcodes.h
+++ b/Zend/zend_vm_opcodes.h
@@ -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