]> granicus.if.org Git - php/commitdiff
Avoid more null arithmetic
authorNikita Popov <nikita.ppv@gmail.com>
Thu, 27 Feb 2020 13:48:43 +0000 (14:48 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 27 Feb 2020 13:48:43 +0000 (14:48 +0100)
Zend/zend_compile.c
Zend/zend_compile.h
ext/opcache/jit/zend_jit_x86.dasc

index ae1fc8a7c0762c0207cae62fe243bb26ef73c74f..f7ba3acf9d0e047949cf16a22942eedf09ef3cdd 100644 (file)
@@ -3192,7 +3192,7 @@ uint32_t zend_compile_args(zend_ast *ast, zend_function *fbc) /* {{{ */
                        zend_compile_expr(&arg_node, arg->child[0]);
                        opline = zend_emit_op(NULL, ZEND_SEND_UNPACK, &arg_node, NULL);
                        opline->op2.num = arg_count;
-                       opline->result.var = (uint32_t)(zend_intptr_t)ZEND_CALL_ARG(NULL, arg_count);
+                       opline->result.var = EX_NUM_TO_VAR(arg_count - 1);
                        continue;
                }
 
@@ -3286,7 +3286,7 @@ uint32_t zend_compile_args(zend_ast *ast, zend_function *fbc) /* {{{ */
 
                opline = zend_emit_op(NULL, opcode, &arg_node, NULL);
                opline->op2.opline_num = arg_num;
-               opline->result.var = (uint32_t)(zend_intptr_t)ZEND_CALL_ARG(NULL, arg_num);
+               opline->result.var = EX_NUM_TO_VAR(arg_num - 1);
        }
 
        return arg_count;
@@ -3680,7 +3680,7 @@ int zend_compile_func_cuf(znode *result, zend_ast_list *args, zend_string *lcnam
 
                opline = zend_emit_op(NULL, ZEND_SEND_USER, &arg_node, NULL);
                opline->op2.num = i;
-               opline->result.var = (uint32_t)(zend_intptr_t)ZEND_CALL_ARG(NULL, i);
+               opline->result.var = EX_NUM_TO_VAR(i - 1);
        }
        zend_emit_op(result, ZEND_DO_FCALL, NULL, NULL);
 
index 319ef51bcb7af4ab076ee7e50d8226b24eb608ce..8a64ed86c3d03fe57a43f7c1b23d4955837f4f54 100644 (file)
@@ -578,7 +578,7 @@ struct _zend_execute_data {
 #define EX_VAR_NUM(n)                  ZEND_CALL_VAR_NUM(execute_data, n)
 
 #define EX_VAR_TO_NUM(n)               ((uint32_t)((n) / sizeof(zval) - ZEND_CALL_FRAME_SLOT))
-#define EX_NUM_TO_VAR(n)               ((uint32_t)((n + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
+#define EX_NUM_TO_VAR(n)               ((uint32_t)(((n) + ZEND_CALL_FRAME_SLOT) * sizeof(zval)))
 
 #define ZEND_OPLINE_TO_OFFSET(opline, target) \
        ((char*)(target) - (char*)(opline))
index 4140ea81dcfef5bdafe61a83a9e46db93f3fea31..1ba4a61b6eaa4497cec6636b114d830d01ad3309 100644 (file)
@@ -2726,7 +2726,7 @@ static int zend_jit_store_var(dasm_State **Dst, uint32_t info, int var, zend_reg
 static int zend_jit_store_var_if_necessary(dasm_State **Dst, int var, zend_jit_addr src, uint32_t info)
 {
        if (Z_MODE(src) == IS_REG && Z_STORE(src)) {
-               zend_jit_addr dst = ZEND_ADDR_MEM_ZVAL(ZREG_FP, (uint32_t)(uintptr_t)ZEND_CALL_VAR(NULL, var));
+               zend_jit_addr dst = ZEND_ADDR_MEM_ZVAL(ZREG_FP, var);
                return zend_jit_spill_store(Dst, src, dst, info, 1);
        }
        return 1;
@@ -2735,7 +2735,7 @@ static int zend_jit_store_var_if_necessary(dasm_State **Dst, int var, zend_jit_a
 static int zend_jit_store_var_if_necessary_ex(dasm_State **Dst, int var, zend_jit_addr src, uint32_t info, zend_jit_addr old, uint32_t old_info)
 {
        if (Z_MODE(src) == IS_REG && Z_STORE(src)) {
-               zend_jit_addr dst = ZEND_ADDR_MEM_ZVAL(ZREG_FP, (uint32_t)(uintptr_t)ZEND_CALL_VAR(NULL, var));
+               zend_jit_addr dst = ZEND_ADDR_MEM_ZVAL(ZREG_FP, var);
                zend_bool set_type = 1;
 
                if ((info & (MAY_BE_ANY|MAY_BE_REF|MAY_BE_UNDEF)) ==