|
|
|
@ -8115,6 +8115,56 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COUNT_SPEC_CONST_UNUSED_HANDLE
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CLASS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
|
|
|
|
{
|
|
|
|
|
USE_OPLINE
|
|
|
|
|
|
|
|
|
|
if (IS_CONST == IS_UNUSED) {
|
|
|
|
|
if (UNEXPECTED(!EX(func)->common.scope)) {
|
|
|
|
|
SAVE_OPLINE();
|
|
|
|
|
zend_error(E_WARNING, "get_class() called without object from outside a class");
|
|
|
|
|
ZVAL_FALSE(EX_VAR(opline->result.var));
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
} else {
|
|
|
|
|
ZVAL_STR_COPY(EX_VAR(opline->result.var), EX(func)->common.scope->name);
|
|
|
|
|
ZEND_VM_NEXT_OPCODE();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
zval *op1;
|
|
|
|
|
|
|
|
|
|
SAVE_OPLINE();
|
|
|
|
|
op1 = EX_CONSTANT(opline->op1);
|
|
|
|
|
if (Z_TYPE_P(op1) == IS_OBJECT) {
|
|
|
|
|
ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op1)->name);
|
|
|
|
|
} else {
|
|
|
|
|
zend_error(E_WARNING, "get_class() expects parameter 1 to be object, %s given", zend_get_type_by_const(Z_TYPE_P(op1)));
|
|
|
|
|
ZVAL_FALSE(EX_VAR(opline->result.var));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_TYPE_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
|
|
|
|
{
|
|
|
|
|
USE_OPLINE
|
|
|
|
|
|
|
|
|
|
zval *op1;
|
|
|
|
|
zend_string *type;
|
|
|
|
|
|
|
|
|
|
SAVE_OPLINE();
|
|
|
|
|
op1 = EX_CONSTANT(opline->op1);
|
|
|
|
|
type = zend_zval_get_type(op1);
|
|
|
|
|
if (EXPECTED(type)) {
|
|
|
|
|
ZVAL_INTERNED_STR(EX_VAR(opline->result.var), type);
|
|
|
|
|
} else {
|
|
|
|
|
ZVAL_STRING(EX_VAR(opline->result.var), "unknown type");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
|
|
|
|
{
|
|
|
|
|
USE_OPLINE
|
|
|
|
@ -14629,6 +14679,56 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COUNT_SPEC_TMP_UNUSED_HANDLER(
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CLASS_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
|
|
|
|
{
|
|
|
|
|
USE_OPLINE
|
|
|
|
|
|
|
|
|
|
if (IS_TMP_VAR == IS_UNUSED) {
|
|
|
|
|
if (UNEXPECTED(!EX(func)->common.scope)) {
|
|
|
|
|
SAVE_OPLINE();
|
|
|
|
|
zend_error(E_WARNING, "get_class() called without object from outside a class");
|
|
|
|
|
ZVAL_FALSE(EX_VAR(opline->result.var));
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
} else {
|
|
|
|
|
ZVAL_STR_COPY(EX_VAR(opline->result.var), EX(func)->common.scope->name);
|
|
|
|
|
ZEND_VM_NEXT_OPCODE();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
zend_free_op free_op1;
|
|
|
|
|
zval *op1;
|
|
|
|
|
|
|
|
|
|
SAVE_OPLINE();
|
|
|
|
|
op1 = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1);
|
|
|
|
|
if (Z_TYPE_P(op1) == IS_OBJECT) {
|
|
|
|
|
ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op1)->name);
|
|
|
|
|
} else {
|
|
|
|
|
zend_error(E_WARNING, "get_class() expects parameter 1 to be object, %s given", zend_get_type_by_const(Z_TYPE_P(op1)));
|
|
|
|
|
ZVAL_FALSE(EX_VAR(opline->result.var));
|
|
|
|
|
}
|
|
|
|
|
zval_ptr_dtor_nogc(free_op1);
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_TYPE_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
|
|
|
|
{
|
|
|
|
|
USE_OPLINE
|
|
|
|
|
zend_free_op free_op1;
|
|
|
|
|
zval *op1;
|
|
|
|
|
zend_string *type;
|
|
|
|
|
|
|
|
|
|
SAVE_OPLINE();
|
|
|
|
|
op1 = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1);
|
|
|
|
|
type = zend_zval_get_type(op1);
|
|
|
|
|
if (EXPECTED(type)) {
|
|
|
|
|
ZVAL_INTERNED_STR(EX_VAR(opline->result.var), type);
|
|
|
|
|
} else {
|
|
|
|
|
ZVAL_STRING(EX_VAR(opline->result.var), "unknown type");
|
|
|
|
|
}
|
|
|
|
|
zval_ptr_dtor_nogc(free_op1);
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
|
|
|
|
{
|
|
|
|
|
USE_OPLINE
|
|
|
|
@ -21751,6 +21851,56 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COUNT_SPEC_VAR_UNUSED_HANDLER(
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CLASS_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
|
|
|
|
{
|
|
|
|
|
USE_OPLINE
|
|
|
|
|
|
|
|
|
|
if (IS_VAR == IS_UNUSED) {
|
|
|
|
|
if (UNEXPECTED(!EX(func)->common.scope)) {
|
|
|
|
|
SAVE_OPLINE();
|
|
|
|
|
zend_error(E_WARNING, "get_class() called without object from outside a class");
|
|
|
|
|
ZVAL_FALSE(EX_VAR(opline->result.var));
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
} else {
|
|
|
|
|
ZVAL_STR_COPY(EX_VAR(opline->result.var), EX(func)->common.scope->name);
|
|
|
|
|
ZEND_VM_NEXT_OPCODE();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
zend_free_op free_op1;
|
|
|
|
|
zval *op1;
|
|
|
|
|
|
|
|
|
|
SAVE_OPLINE();
|
|
|
|
|
op1 = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1);
|
|
|
|
|
if (Z_TYPE_P(op1) == IS_OBJECT) {
|
|
|
|
|
ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op1)->name);
|
|
|
|
|
} else {
|
|
|
|
|
zend_error(E_WARNING, "get_class() expects parameter 1 to be object, %s given", zend_get_type_by_const(Z_TYPE_P(op1)));
|
|
|
|
|
ZVAL_FALSE(EX_VAR(opline->result.var));
|
|
|
|
|
}
|
|
|
|
|
zval_ptr_dtor_nogc(free_op1);
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_TYPE_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
|
|
|
|
{
|
|
|
|
|
USE_OPLINE
|
|
|
|
|
zend_free_op free_op1;
|
|
|
|
|
zval *op1;
|
|
|
|
|
zend_string *type;
|
|
|
|
|
|
|
|
|
|
SAVE_OPLINE();
|
|
|
|
|
op1 = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1);
|
|
|
|
|
type = zend_zval_get_type(op1);
|
|
|
|
|
if (EXPECTED(type)) {
|
|
|
|
|
ZVAL_INTERNED_STR(EX_VAR(opline->result.var), type);
|
|
|
|
|
} else {
|
|
|
|
|
ZVAL_STRING(EX_VAR(opline->result.var), "unknown type");
|
|
|
|
|
}
|
|
|
|
|
zval_ptr_dtor_nogc(free_op1);
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
|
|
|
|
{
|
|
|
|
|
USE_OPLINE
|
|
|
|
@ -29263,6 +29413,56 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED
|
|
|
|
|
ZEND_VM_NEXT_OPCODE();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CLASS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
|
|
|
|
{
|
|
|
|
|
USE_OPLINE
|
|
|
|
|
|
|
|
|
|
if (IS_UNUSED == IS_UNUSED) {
|
|
|
|
|
if (UNEXPECTED(!EX(func)->common.scope)) {
|
|
|
|
|
SAVE_OPLINE();
|
|
|
|
|
zend_error(E_WARNING, "get_class() called without object from outside a class");
|
|
|
|
|
ZVAL_FALSE(EX_VAR(opline->result.var));
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
} else {
|
|
|
|
|
ZVAL_STR_COPY(EX_VAR(opline->result.var), EX(func)->common.scope->name);
|
|
|
|
|
ZEND_VM_NEXT_OPCODE();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
zval *op1;
|
|
|
|
|
|
|
|
|
|
SAVE_OPLINE();
|
|
|
|
|
op1 = NULL;
|
|
|
|
|
if (Z_TYPE_P(op1) == IS_OBJECT) {
|
|
|
|
|
ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op1)->name);
|
|
|
|
|
} else {
|
|
|
|
|
zend_error(E_WARNING, "get_class() expects parameter 1 to be object, %s given", zend_get_type_by_const(Z_TYPE_P(op1)));
|
|
|
|
|
ZVAL_FALSE(EX_VAR(opline->result.var));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
|
|
|
|
{
|
|
|
|
|
USE_OPLINE
|
|
|
|
|
|
|
|
|
|
if (Z_TYPE(EX(This)) == IS_OBJECT) {
|
|
|
|
|
ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE(EX(This))->name);
|
|
|
|
|
} else if (Z_CE(EX(This))) {
|
|
|
|
|
ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_CE(EX(This))->name);
|
|
|
|
|
} else {
|
|
|
|
|
ZVAL_FALSE(EX_VAR(opline->result.var));
|
|
|
|
|
if (UNEXPECTED(!EX(func)->common.scope)) {
|
|
|
|
|
SAVE_OPLINE();
|
|
|
|
|
zend_error(E_WARNING, "get_called_class() called from outside a class");
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ZEND_VM_NEXT_OPCODE();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
|
|
|
|
|
{
|
|
|
|
|
USE_OPLINE
|
|
|
|
@ -40853,6 +41053,56 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COUNT_SPEC_CV_UNUSED_HANDLER(Z
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CLASS_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
|
|
|
|
{
|
|
|
|
|
USE_OPLINE
|
|
|
|
|
|
|
|
|
|
if (IS_CV == IS_UNUSED) {
|
|
|
|
|
if (UNEXPECTED(!EX(func)->common.scope)) {
|
|
|
|
|
SAVE_OPLINE();
|
|
|
|
|
zend_error(E_WARNING, "get_class() called without object from outside a class");
|
|
|
|
|
ZVAL_FALSE(EX_VAR(opline->result.var));
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
} else {
|
|
|
|
|
ZVAL_STR_COPY(EX_VAR(opline->result.var), EX(func)->common.scope->name);
|
|
|
|
|
ZEND_VM_NEXT_OPCODE();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
zval *op1;
|
|
|
|
|
|
|
|
|
|
SAVE_OPLINE();
|
|
|
|
|
op1 = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var);
|
|
|
|
|
if (Z_TYPE_P(op1) == IS_OBJECT) {
|
|
|
|
|
ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op1)->name);
|
|
|
|
|
} else {
|
|
|
|
|
zend_error(E_WARNING, "get_class() expects parameter 1 to be object, %s given", zend_get_type_by_const(Z_TYPE_P(op1)));
|
|
|
|
|
ZVAL_FALSE(EX_VAR(opline->result.var));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_TYPE_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
|
|
|
|
{
|
|
|
|
|
USE_OPLINE
|
|
|
|
|
|
|
|
|
|
zval *op1;
|
|
|
|
|
zend_string *type;
|
|
|
|
|
|
|
|
|
|
SAVE_OPLINE();
|
|
|
|
|
op1 = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var);
|
|
|
|
|
type = zend_zval_get_type(op1);
|
|
|
|
|
if (EXPECTED(type)) {
|
|
|
|
|
ZVAL_INTERNED_STR(EX_VAR(opline->result.var), type);
|
|
|
|
|
} else {
|
|
|
|
|
ZVAL_STRING(EX_VAR(opline->result.var), "unknown type");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
|
|
|
|
{
|
|
|
|
|
USE_OPLINE
|
|
|
|
@ -58165,6 +58415,81 @@ ZEND_API void execute_ex(zend_execute_data *ex)
|
|
|
|
|
(void*)&&ZEND_COUNT_SPEC_CV_UNUSED_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_GET_CLASS_SPEC_CONST_UNUSED_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_GET_CLASS_SPEC_TMP_UNUSED_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_GET_CLASS_SPEC_VAR_UNUSED_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_GET_CLASS_SPEC_UNUSED_UNUSED_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_GET_CLASS_SPEC_CV_UNUSED_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_GET_TYPE_SPEC_CONST_UNUSED_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_GET_TYPE_SPEC_TMP_UNUSED_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_GET_TYPE_SPEC_VAR_UNUSED_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_GET_TYPE_SPEC_CV_UNUSED_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
|
(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_LABEL,
|
|
|
|
|
(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_LABEL,
|
|
|
|
|
(void*)&&ZEND_NULL_LABEL,
|
|
|
|
@ -59673,6 +59998,12 @@ ZEND_API void execute_ex(zend_execute_data *ex)
|
|
|
|
|
HYBRID_CASE(ZEND_COUNT_SPEC_CONST_UNUSED):
|
|
|
|
|
ZEND_COUNT_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
|
HYBRID_CASE(ZEND_GET_CLASS_SPEC_CONST_UNUSED):
|
|
|
|
|
ZEND_GET_CLASS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
|
HYBRID_CASE(ZEND_GET_TYPE_SPEC_CONST_UNUSED):
|
|
|
|
|
ZEND_GET_TYPE_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
|
HYBRID_CASE(ZEND_ADD_SPEC_CONST_CV):
|
|
|
|
|
ZEND_ADD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
@ -60111,6 +60442,12 @@ ZEND_API void execute_ex(zend_execute_data *ex)
|
|
|
|
|
HYBRID_CASE(ZEND_COUNT_SPEC_TMP_UNUSED):
|
|
|
|
|
ZEND_COUNT_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
|
HYBRID_CASE(ZEND_GET_CLASS_SPEC_TMP_UNUSED):
|
|
|
|
|
ZEND_GET_CLASS_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
|
HYBRID_CASE(ZEND_GET_TYPE_SPEC_TMP_UNUSED):
|
|
|
|
|
ZEND_GET_TYPE_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
|
HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_TMP_CV):
|
|
|
|
|
ZEND_IS_IDENTICAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
@ -60582,6 +60919,12 @@ ZEND_API void execute_ex(zend_execute_data *ex)
|
|
|
|
|
HYBRID_CASE(ZEND_COUNT_SPEC_VAR_UNUSED):
|
|
|
|
|
ZEND_COUNT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
|
HYBRID_CASE(ZEND_GET_CLASS_SPEC_VAR_UNUSED):
|
|
|
|
|
ZEND_GET_CLASS_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
|
HYBRID_CASE(ZEND_GET_TYPE_SPEC_VAR_UNUSED):
|
|
|
|
|
ZEND_GET_TYPE_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
|
HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_VAR_CV):
|
|
|
|
|
ZEND_IS_IDENTICAL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
@ -61104,6 +61447,12 @@ ZEND_API void execute_ex(zend_execute_data *ex)
|
|
|
|
|
HYBRID_CASE(ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED):
|
|
|
|
|
ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
|
HYBRID_CASE(ZEND_GET_CLASS_SPEC_UNUSED_UNUSED):
|
|
|
|
|
ZEND_GET_CLASS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
|
HYBRID_CASE(ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED):
|
|
|
|
|
ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
|
HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_OBJ):
|
|
|
|
|
ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
@ -61923,6 +62272,12 @@ ZEND_API void execute_ex(zend_execute_data *ex)
|
|
|
|
|
HYBRID_CASE(ZEND_COUNT_SPEC_CV_UNUSED):
|
|
|
|
|
ZEND_COUNT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
|
HYBRID_CASE(ZEND_GET_CLASS_SPEC_CV_UNUSED):
|
|
|
|
|
ZEND_GET_CLASS_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
|
HYBRID_CASE(ZEND_GET_TYPE_SPEC_CV_UNUSED):
|
|
|
|
|
ZEND_GET_TYPE_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
|
HYBRID_CASE(ZEND_ADD_SPEC_CV_CV):
|
|
|
|
|
ZEND_ADD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
|
|
|
|
HYBRID_BREAK();
|
|
|
|
@ -66879,6 +67234,81 @@ void zend_init_opcodes_handlers(void)
|
|
|
|
|
ZEND_COUNT_SPEC_CV_UNUSED_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_GET_CLASS_SPEC_CONST_UNUSED_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_GET_CLASS_SPEC_TMP_UNUSED_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_GET_CLASS_SPEC_VAR_UNUSED_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_GET_CLASS_SPEC_UNUSED_UNUSED_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_GET_CLASS_SPEC_CV_UNUSED_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_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED_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_GET_TYPE_SPEC_CONST_UNUSED_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_GET_TYPE_SPEC_TMP_UNUSED_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_GET_TYPE_SPEC_VAR_UNUSED_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_GET_TYPE_SPEC_CV_UNUSED_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
|
ZEND_ADD_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,
|
|
|
|
|
ZEND_ADD_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,
|
|
|
|
|
ZEND_NULL_HANDLER,
|
|
|
|
@ -67946,7 +68376,7 @@ void zend_init_opcodes_handlers(void)
|
|
|
|
|
2257 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
|
|
|
|
2282 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
|
|
|
|
2307 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
|
|
|
|
4696,
|
|
|
|
|
4771,
|
|
|
|
|
2332,
|
|
|
|
|
2333,
|
|
|
|
|
2334,
|
|
|
|
@ -68031,13 +68461,16 @@ void zend_init_opcodes_handlers(void)
|
|
|
|
|
3531 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
|
|
|
|
3556 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
|
|
|
|
3581 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
|
|
|
|
4696,
|
|
|
|
|
4771,
|
|
|
|
|
3606 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
|
|
|
|
3631 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
|
|
|
|
3656 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
|
|
|
|
3681 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
|
|
|
|
3706 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
|
|
|
|
4696
|
|
|
|
|
3731 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
|
|
|
|
3756 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
|
|
|
|
3781 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
|
|
|
|
|
4771
|
|
|
|
|
};
|
|
|
|
|
#if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
|
|
|
|
|
zend_opcode_handler_funcs = labels;
|
|
|
|
@ -68232,7 +68665,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
|
|
|
|
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
spec = 3731 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
spec = 3806 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
if (op->op1_type > op->op2_type) {
|
|
|
|
|
zend_swap_operands(op);
|
|
|
|
|
}
|
|
|
|
@ -68240,7 +68673,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
|
|
|
|
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
spec = 3756 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
spec = 3831 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
if (op->op1_type > op->op2_type) {
|
|
|
|
|
zend_swap_operands(op);
|
|
|
|
|
}
|
|
|
|
@ -68248,7 +68681,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
|
|
|
|
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
spec = 3781 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
spec = 3856 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
if (op->op1_type > op->op2_type) {
|
|
|
|
|
zend_swap_operands(op);
|
|
|
|
|
}
|
|
|
|
@ -68259,17 +68692,17 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
|
|
|
|
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
spec = 3806 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
spec = 3881 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
|
|
|
|
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
spec = 3831 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
spec = 3906 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
|
|
|
|
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
spec = 3856 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
spec = 3931 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case ZEND_MUL:
|
|
|
|
@ -68277,7 +68710,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
|
|
|
|
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
spec = 3881 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
spec = 3956 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
if (op->op1_type > op->op2_type) {
|
|
|
|
|
zend_swap_operands(op);
|
|
|
|
|
}
|
|
|
|
@ -68285,7 +68718,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
|
|
|
|
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
spec = 3906 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
spec = 3981 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
if (op->op1_type > op->op2_type) {
|
|
|
|
|
zend_swap_operands(op);
|
|
|
|
|
}
|
|
|
|
@ -68293,7 +68726,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
|
|
|
|
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
spec = 3931 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
spec = 4006 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
if (op->op1_type > op->op2_type) {
|
|
|
|
|
zend_swap_operands(op);
|
|
|
|
|
}
|
|
|
|
@ -68304,7 +68737,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
|
|
|
|
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
spec = 3956 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
|
|
|
|
spec = 4031 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
|
|
|
|
if (op->op1_type > op->op2_type) {
|
|
|
|
|
zend_swap_operands(op);
|
|
|
|
|
}
|
|
|
|
@ -68312,7 +68745,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
|
|
|
|
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
spec = 4031 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
|
|
|
|
spec = 4106 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
|
|
|
|
if (op->op1_type > op->op2_type) {
|
|
|
|
|
zend_swap_operands(op);
|
|
|
|
|
}
|
|
|
|
@ -68323,7 +68756,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
|
|
|
|
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
spec = 4106 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
|
|
|
|
spec = 4181 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
|
|
|
|
if (op->op1_type > op->op2_type) {
|
|
|
|
|
zend_swap_operands(op);
|
|
|
|
|
}
|
|
|
|
@ -68331,7 +68764,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
|
|
|
|
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
spec = 4181 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
|
|
|
|
spec = 4256 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
|
|
|
|
if (op->op1_type > op->op2_type) {
|
|
|
|
|
zend_swap_operands(op);
|
|
|
|
|
}
|
|
|
|
@ -68342,12 +68775,12 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
|
|
|
|
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
spec = 4256 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
|
|
|
|
spec = 4331 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
|
|
|
|
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
|
|
|
|
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
spec = 4331 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
|
|
|
|
spec = 4406 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case ZEND_IS_SMALLER_OR_EQUAL:
|
|
|
|
@ -68355,70 +68788,70 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
|
|
|
|
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
spec = 4406 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
|
|
|
|
spec = 4481 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
|
|
|
|
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
|
|
|
|
|
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
spec = 4481 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
|
|
|
|
spec = 4556 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case ZEND_QM_ASSIGN:
|
|
|
|
|
if (op1_info == MAY_BE_DOUBLE) {
|
|
|
|
|
spec = 4646 | SPEC_RULE_OP1;
|
|
|
|
|
spec = 4721 | SPEC_RULE_OP1;
|
|
|
|
|
} else if (!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE)))) {
|
|
|
|
|
spec = 4651 | SPEC_RULE_OP1;
|
|
|
|
|
spec = 4726 | SPEC_RULE_OP1;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case ZEND_PRE_INC:
|
|
|
|
|
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
|
|
|
|
|
spec = 4556 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
|
|
|
|
|
spec = 4631 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
|
|
|
|
|
} else if (op1_info == MAY_BE_LONG) {
|
|
|
|
|
spec = 4566 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
|
|
|
|
|
spec = 4641 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
|
|
|
|
|
} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
|
|
|
|
|
spec = 4576 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
|
|
|
|
|
spec = 4651 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case ZEND_PRE_DEC:
|
|
|
|
|
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
|
|
|
|
|
spec = 4586 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
|
|
|
|
|
spec = 4661 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
|
|
|
|
|
} else if (op1_info == MAY_BE_LONG) {
|
|
|
|
|
spec = 4596 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
|
|
|
|
|
spec = 4671 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
|
|
|
|
|
} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
|
|
|
|
|
spec = 4606 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
|
|
|
|
|
spec = 4681 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case ZEND_POST_INC:
|
|
|
|
|
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
|
|
|
|
|
spec = 4616 | SPEC_RULE_OP1;
|
|
|
|
|
spec = 4691 | SPEC_RULE_OP1;
|
|
|
|
|
} else if (op1_info == MAY_BE_LONG) {
|
|
|
|
|
spec = 4621 | SPEC_RULE_OP1;
|
|
|
|
|
spec = 4696 | SPEC_RULE_OP1;
|
|
|
|
|
} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
|
|
|
|
|
spec = 4626 | SPEC_RULE_OP1;
|
|
|
|
|
spec = 4701 | SPEC_RULE_OP1;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case ZEND_POST_DEC:
|
|
|
|
|
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
|
|
|
|
|
spec = 4631 | SPEC_RULE_OP1;
|
|
|
|
|
spec = 4706 | SPEC_RULE_OP1;
|
|
|
|
|
} else if (op1_info == MAY_BE_LONG) {
|
|
|
|
|
spec = 4636 | SPEC_RULE_OP1;
|
|
|
|
|
spec = 4711 | SPEC_RULE_OP1;
|
|
|
|
|
} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
|
|
|
|
|
spec = 4641 | SPEC_RULE_OP1;
|
|
|
|
|
spec = 4716 | SPEC_RULE_OP1;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case ZEND_SEND_VAR_EX:
|
|
|
|
|
if ((op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
|
|
|
|
|
spec = 4686 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG;
|
|
|
|
|
spec = 4761 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case ZEND_FETCH_DIM_R:
|
|
|
|
|
if (!(op2_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
|
|
|
|
|
spec = 4656 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
spec = 4731 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case ZEND_SEND_VAR:
|
|
|
|
|
if ((op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
|
|
|
|
|
spec = 4681 | SPEC_RULE_OP1;
|
|
|
|
|
spec = 4756 | SPEC_RULE_OP1;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|