Skip to content

Commit 9e73bf5

Browse files
committed
Revert "Zend: store pure type mask in opline->extended_value"
This reverts commit b61b5d9.
1 parent d5fe15d commit 9e73bf5

4 files changed

Lines changed: 34 additions & 63 deletions

File tree

Zend/zend_compile.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2698,8 +2698,6 @@ static void zend_emit_return_type_check(
26982698
}
26992699

27002700
opline = zend_emit_op(NULL, ZEND_VERIFY_RETURN_TYPE, expr, NULL);
2701-
/* Store pure type mask in extended_value */
2702-
opline->extended_value = ZEND_TYPE_PURE_MASK(type);
27032701
if (expr && expr->op_type == IS_CONST) {
27042702
opline->result_type = expr->op_type = IS_TMP_VAR;
27052703
opline->result.var = expr->u.op.var = get_temporary_variable();

Zend/zend_types.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -269,11 +269,8 @@ typedef struct {
269269
#define ZEND_TYPE_PURE_MASK_WITHOUT_NULL(t) \
270270
((t).type_mask & _ZEND_TYPE_MAY_BE_MASK & ~_ZEND_TYPE_NULLABLE_BIT)
271271

272-
#define ZEND_TYPE_MASK_CONTAINS_CODE(mask, code) \
273-
(((mask) & (1u << (code))) != 0)
274-
275272
#define ZEND_TYPE_CONTAINS_CODE(t, code) \
276-
ZEND_TYPE_MASK_CONTAINS_CODE((t).type_mask, code)
273+
(((t).type_mask & (1u << (code))) != 0)
277274

278275
#define ZEND_TYPE_ALLOW_NULL(t) \
279276
(((t).type_mask & _ZEND_TYPE_NULLABLE_BIT) != 0)

Zend/zend_vm_def.h

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
* php zend_vm_gen.php
2323
*/
2424

25-
#include <stdint.h>
26-
2725
ZEND_VM_HELPER(zend_add_helper, ANY, ANY, zval *op_1, zval *op_2)
2826
{
2927
USE_OPLINE
@@ -4478,6 +4476,7 @@ ZEND_VM_COLD_CONST_HANDLER(124, ZEND_VERIFY_RETURN_TYPE, CONST|TMP|VAR|UNUSED|CV
44784476
#if !ZEND_VM_SPEC || (OP1_TYPE != IS_UNUSED)
44794477
USE_OPLINE
44804478
zval *retval_ref, *retval_ptr;
4479+
zend_arg_info *ret_info = EX(func)->common.arg_info - 1;
44814480
retval_ref = retval_ptr = GET_OP1_ZVAL_PTR_UNDEF(BP_VAR_R);
44824481

44834482
if (OP1_TYPE == IS_CONST) {
@@ -4492,8 +4491,7 @@ ZEND_VM_COLD_CONST_HANDLER(124, ZEND_VERIFY_RETURN_TYPE, CONST|TMP|VAR|UNUSED|CV
44924491
ZVAL_DEREF(retval_ptr);
44934492
}
44944493

4495-
uint32_t pure_type_mask = opline->extended_value;
4496-
if (EXPECTED(ZEND_TYPE_MASK_CONTAINS_CODE(pure_type_mask, Z_TYPE_P(retval_ptr)))) {
4494+
if (EXPECTED(ZEND_TYPE_CONTAINS_CODE(ret_info->type, Z_TYPE_P(retval_ptr)))) {
44974495
ZEND_VM_NEXT_OPCODE();
44984496
}
44994497

@@ -4503,7 +4501,7 @@ ZEND_VM_COLD_CONST_HANDLER(124, ZEND_VERIFY_RETURN_TYPE, CONST|TMP|VAR|UNUSED|CV
45034501
if (UNEXPECTED(EG(exception))) {
45044502
HANDLE_EXCEPTION();
45054503
}
4506-
if (pure_type_mask & MAY_BE_NULL) {
4504+
if (ZEND_TYPE_FULL_MASK(ret_info->type) & MAY_BE_NULL) {
45074505
ZEND_VM_NEXT_OPCODE();
45084506
}
45094507
}
@@ -4524,8 +4522,6 @@ ZEND_VM_COLD_CONST_HANDLER(124, ZEND_VERIFY_RETURN_TYPE, CONST|TMP|VAR|UNUSED|CV
45244522
}
45254523
}
45264524

4527-
/* Fetch full return type info from function arg_info */
4528-
const zend_arg_info *ret_info = EX(func)->common.arg_info - 1;
45294525
SAVE_OPLINE();
45304526
if (UNEXPECTED(!zend_check_type_slow(&ret_info->type, retval_ptr, ref, 1, 0))) {
45314527
zend_verify_return_error(EX(func), retval_ptr);

0 commit comments

Comments
 (0)