From 2482325b3d9c45603d4fc5f7c6f7baef0e958a58 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 25 Aug 2015 02:38:06 +0300 Subject: [PATCH] Assign CPU registers for GOTO and SWITCH executor as well --- Zend/zend_vm_gen.php | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Zend/zend_vm_gen.php b/Zend/zend_vm_gen.php index b163739428..3a80705b6a 100644 --- a/Zend/zend_vm_gen.php +++ b/Zend/zend_vm_gen.php @@ -1111,7 +1111,11 @@ function gen_executor($f, $skl, $spec, $kind, $executor_name, $initializer_name) out($f,"#undef LOAD_NEXT_OPLINE\n"); out($f,"#undef SAVE_OPLINE\n"); out($f,"#define OPLINE opline\n"); - out($f,"#define DCL_OPLINE const zend_op *opline;\n"); + out($f,"#ifdef ZEND_VM_IP_GLOBAL_REG\n"); + out($f,"# define DCL_OPLINE register const zend_op *opline __asm__(ZEND_VM_IP_GLOBAL_REG);\n"); + out($f,"#else\n"); + out($f,"# define DCL_OPLINE const zend_op *opline;\n"); + out($f,"#endif\n"); out($f,"#define USE_OPLINE\n"); out($f,"#define LOAD_OPLINE() opline = EX(opline)\n"); out($f,"#define LOAD_NEXT_OPLINE() opline = EX(opline) + 1\n"); @@ -1136,7 +1140,11 @@ function gen_executor($f, $skl, $spec, $kind, $executor_name, $initializer_name) out($f,"#undef LOAD_NEXT_OPLINE\n"); out($f,"#undef SAVE_OPLINE\n"); out($f,"#define OPLINE opline\n"); - out($f,"#define DCL_OPLINE const zend_op *opline;\n"); + out($f,"#ifdef ZEND_VM_IP_GLOBAL_REG\n"); + out($f,"# define DCL_OPLINE register const zend_op *opline __asm__(ZEND_VM_IP_GLOBAL_REG);\n"); + out($f,"#else\n"); + out($f,"# define DCL_OPLINE const zend_op *opline;\n"); + out($f,"#endif\n"); out($f,"#define USE_OPLINE\n"); out($f,"#define LOAD_OPLINE() opline = EX(opline)\n"); out($f,"#define LOAD_NEXT_OPLINE() opline = EX(opline) + 1\n"); @@ -1171,7 +1179,11 @@ function gen_executor($f, $skl, $spec, $kind, $executor_name, $initializer_name) foreach ($params as $param => $x) { out($f,$m[1].$param.";\n"); } + out($f,"#ifdef ZEND_VM_FP_GLOBAL_REG\n"); + out($f,$m[1]."register zend_execute_data *execute_data __asm__(ZEND_VM_FP_GLOBAL_REG) = ex;\n"); + out($f,"#else\n"); out($f,$m[1]."zend_execute_data *execute_data = ex;\n"); + out($f,"#endif\n"); } else { out($f,"#ifdef ZEND_VM_IP_GLOBAL_REG\n"); out($f,$m[1]."const zend_op *orig_opline = opline;\n"); -- 2.50.0