main: Disable $_SERVER JIT when register_argc_argv=1#19833
main: Disable $_SERVER JIT when register_argc_argv=1#19833TimWolla merged 3 commits intophp:masterfrom
$_SERVER JIT when register_argc_argv=1#19833Conversation
Fixes php#19823 and makes the deprecation more reliable by triggering even when `$_SERVER` is not accessed.
ndossche
left a comment
There was a problem hiding this comment.
I'm not so convinced that changing the auto global JITting just for a deprecation is the right move.
|
Although one could argue that register_argc_argv=1 is sufficiently rare for most applications that this doesn't matter in practice? I don't know. |
Generally speaking, deprecations go through slower code paths (e.g. FCALL instead of ICALL / UCALL), since the expectation is that they'll become gradually less used (since they'll be removed). In this specific case |
|
Okay sure. |
|
Note that these tests only fail with a primed opcache file cache ( |
Yes. The error message is recorded in OPcache, because the super-global JIT triggers the deprecation during compilation. With this change, the deprecation is triggered at SAPI start-up and will thus not be picked up by OPcache (and it's also arguably more correct to not trigger it at random stages during compilation, since it doesn't check what field of |
Fixes #19823 and makes the deprecation more reliable by triggering even when
$_SERVERis not accessed./cc @nicolas-grekas