Skip to content

Instantly share code, notes, and snippets.

View dstogov's full-sized avatar

Dmitry Stogov dstogov

  • Zend by Perforce
  • Russia
View GitHub Profile
diff --git a/ext/opcache/jit/zend_jit_arm64.dasc b/ext/opcache/jit/zend_jit_arm64.dasc
index fea32f9c0a..d1cd697ec5 100644
--- a/ext/opcache/jit/zend_jit_arm64.dasc
+++ b/ext/opcache/jit/zend_jit_arm64.dasc
@@ -3902,9 +3902,9 @@ static int zend_jit_math_long_long(dasm_State **Dst,
| lsl Rx(result_reg), Rx(result_reg), TMP1
} else if (opcode == ZEND_DIV &&
(Z_MODE(op2_addr) == IS_CONST_ZVAL &&
- is_power_of_two(Z_LVAL_P(Z_ZV(op2_addr))))) {
+ zend_long_is_power_of_two(Z_LVAL_P(Z_ZV(op2_addr))))) {
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 151eb4ecc5..c8bd6936be 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -4833,10 +4833,8 @@ static zend_always_inline zend_execute_data *_zend_vm_stack_push_call_frame(uint
} \
} while (0)
-#ifdef ZEND_VM_HYBRID_JIT_RED_ZONE_SIZE
/* This callback disables optimization of "vm_stack_data" variable in VM */
<?php
define("BAILOUT",16);
define("MAX_ITERATIONS",1000);
class Mandelbrot
{
function __construct()
{
$d1 = microtime(1);
for ($y = -39; $y < 39; $y++) {
sapi/cli/php -r 'date_default_timezone_set("GMT"); echo date("Y-m-d H:i:s", time())."\n"; date_default_timezone_set("Etc/GMT-3"); echo date("Y-m-d H:i:s", time())."\n";'
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 90ffa5afb6..fcbcec268b 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -51,11 +51,11 @@
# define ZEND_VM_FP_GLOBAL_REG "%r14"
# define ZEND_VM_IP_GLOBAL_REG "%r15"
# elif defined(__GNUC__) && ZEND_GCC_VERSION >= 4008 && defined(__powerpc64__)
-# define ZEND_VM_FP_GLOBAL_REG "r28"
-# define ZEND_VM_IP_GLOBAL_REG "r29"
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index dc49bcd434..ff2c678373 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -374,11 +374,19 @@ static const void *zend_vm_get_opcode_handler_func(zend_uchar opcode, const zend
# if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
# define ZEND_VM_RETURN() opline = &hybrid_halt_op; return
# define ZEND_VM_HOT zend_always_inline ZEND_COLD ZEND_OPT_SIZE
-# define ZEND_VM_COLD ZEND_COLD ZEND_OPT_SIZE
+# if (defined(HAVE_GCC_GLOBAL_REGS) && defined(__powerpc64__))
diff --git a/TSRM/TSRM.c b/TSRM/TSRM.c
index cd340035a2..2d60b6a9d6 100644
--- a/TSRM/TSRM.c
+++ b/TSRM/TSRM.c
@@ -729,13 +729,13 @@ TSRM_API size_t tsrm_get_ls_cache_tcb_offset(void)
#if defined(__APPLE__) && defined(__x86_64__)
// TODO: Implement support for fast JIT ZTS code ???
return 0;
-#elif defined(__x86_64__) && defined(__GNUC__)
+#elif defined(__x86_64__) && defined(__GNUC__) && !defined(__FreeBSD__)
| PHP-8 | +JIT | kPHP |
----------------+-------+-------+-------+
simplу | 0.007 | 0.002 | 0.000 |
simplecall | 0.003 | 0.001 | 0.000 |
simpleucall | 0.003 | 0.001 | 0.000 |
simpleudcall | 0.003 | 0.001 | 0.000 |
mandel | 0.027 | 0.008 | 0.010 |
mandel2 | 0.041 | 0.009 | 0.011 |
ackermann(7) | 0.017 | 0.011 | 0.002 |
ary(50000) | 0.005 | 0.004 | 0.005 |
diff --git a/Zend/tests/anon/015.phpt b/Zend/tests/anon/015.phpt
index 324ebe880a..f55c4b2605 100644
--- a/Zend/tests/anon/015.phpt
+++ b/Zend/tests/anon/015.phpt
@@ -19,10 +19,7 @@ var_dump($d->foo(24));
var_dump($c->foo());
?>
--EXPECT--
-array(1) {
- [0]=>
diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h
index b4af5d9e3f..4b7e457946 100644
--- a/Zend/zend_compile.h
+++ b/Zend/zend_compile.h
@@ -531,6 +531,9 @@ struct _zend_execute_data {
#define ZEND_CALL_DYNAMIC (1 << 25)
#define ZEND_CALL_MAY_HAVE_UNDEF (1 << 26)
#define ZEND_CALL_HAS_EXTRA_NAMED_PARAMS (1 << 27)
+#define ZEND_CALL_OBSERVED (1 << 28) /* "fcall_begin" observer handler may set this flag */
+ /* to prevent optimization in RETRUN handler and */