Skip to content

GH-21006 approach 3 on 8.4 (staging)#134

Open
iliaal wants to merge 1 commit into
PHP-8.4from
fix/gh-21006-approach3-84
Open

GH-21006 approach 3 on 8.4 (staging)#134
iliaal wants to merge 1 commit into
PHP-8.4from
fix/gh-21006-approach3-84

Conversation

@iliaal

@iliaal iliaal commented Jun 27, 2026

Copy link
Copy Markdown
Owner

Approach 3 for phpGH-21006 ported to PHP-8.4, staging only to run the full 8.4 CI matrix (FREEBSD_NTS, Alpine musl-ASAN, etc.). The patch applies cleanly to 8.4 and was validated locally on glibc (GLOBAL_REGS) and musl clang-ASAN (!GLOBAL_REGS): gh21006 passes, ext/opcache/tests/jit and Zend/tests/property_hooks clean, the FETCH stays JIT-compiled.

FETCH_OBJ_FUNC_ARG reading a SIMPLE_GET property hook pushed the getter
call frame mid-trace and corrupted the call being built, crashing at the
following SEND_FUNC_ARG. Compile it inline like FETCH_OBJ_R, clearing the
SIMPLE_GET flag so the read takes read_property. Positional arguments
resolve their by-ref-ness at compile time through the preceding
CHECK_FUNC_ARG; named arguments get a run-time guard that deoptimizes to
the interpreter when the argument is passed by reference.

Fixes phpGH-21006
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant