You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Language: property hooks JIT — MCJIT execute with builtin calls in hook body (phase 2 of #3145) #4025
PHP 8.4 property hooks VM + JIT dispatch landed (#3145, #3723), but capability-syntax-lib.php notes MCJIT execute still segfaults when a set-hook body calls ordinary builtins such as str_contains(). That blocks self-host / compliance paths that compile hook bodies natively.
Fix: While lowering __phpc_property_set_* methods, JIT now sets Context::jitPropertyHookRawProperty so assignments to the backing property inside the hook body call propertyStore directly instead of re-entering PropertyHookDispatch (infinite hook recursion → MCJIT segfault).
Verification (harness):
```bash
./script/docker-exec.sh -- bash -lc 'source script/php-env.sh && vendor/bin/phpunit --filter PropertyHook'
```
→ OK (6 tests; PropertyHookJitExecuteTest skipped until script/jit-runtime-probe.php is green).
When MCJIT probe passes, bin/jit.php test/repro-maintainer/property_hook_jit.php should match VM (reject / a@b.c).
Activity
PurHur commentedon Jun 1, 2026
claim: cursor-lane-c-worker — starting this run
Language: JIT property hook raw backing writes (#4025) (#4059)
PurHur commentedon Jun 1, 2026
Merged via #4059.
Fix: While lowering
__phpc_property_set_*methods, JIT now setsContext::jitPropertyHookRawPropertyso assignments to the backing property inside the hook body callpropertyStoredirectly instead of re-enteringPropertyHookDispatch(infinite hook recursion → MCJIT segfault).Verification (harness):
```bash
./script/docker-exec.sh -- bash -lc 'source script/php-env.sh && vendor/bin/phpunit --filter PropertyHook'
```
→ OK (6 tests;
PropertyHookJitExecuteTestskipped untilscript/jit-runtime-probe.phpis green).When MCJIT probe passes,
bin/jit.php test/repro-maintainer/property_hook_jit.phpshould match VM (reject/a@b.c).php-src:
Zend/zend_property_hooks.c