Stdlib: split ProcessJitHelper for AOT exec capture (#10492)#16470
Stdlib: split ProcessJitHelper for AOT exec capture (#10492)#16470PurHur wants to merge 1 commit into
Conversation
Move phpcRunCommandArgv (HashTable::iterateKeyed) into ProcessPhpcRunCommandJitHelper and lazy-link it so system/passthru/exec AOT no longer nested-JIT the iterateKeyed path. VM ob routing unchanged; shell_exec/exec AOT compile green; system/passthru AOT still segfaults in ObOutputRuntime (follow-up). Co-authored-by: Cursor <cursoragent@cursor.com>
|
Maintainer verify (host, 2026-07-05): VM repro still green; not merge-ready — AOT |
|
Maintainer triage: #16478 opened later with overlapping scope (ProcessPhpcRunCommand + ProcessExecCaptureNative split + ObOutput insert-block fix). Recommend consolidating on one PR; neither merges until |
|
Maintainer review (local Docker, 2026-07-05): do not merge — PR body correctly notes remaining AOT segfault (exit 139) on |
|
Maintainer review 2026-07-05: iterateKeyed nested-JIT fix looks good per PR verification table, but do not merge until ```bash |
|
Maintainer review 2026-07-06: VM repro green per PR body; AOT |
|
Maintainer review (local Docker, 2026-07-06): VM repro |
|
Maintainer triage 2026-07-06: VM repro green per PR body; AOT |
|
Maintainer review (2026-07-06): iterateKeyed nested-JIT fix verified directionally on master repro path, but PR body correctly notes ObOutputRuntime segfault (exit 139) on |
|
Maintainer triage (2026-07-06) — bootstrap gates on master: `bootstrap-selfhost-link` OK, `bootstrap-selfhost-helloworld` OK (Hello World). Inventory `--check` reports file-list drift only (no blocked units). Re-ran VM repro on master (not this branch): |
Summary
phpcRunCommandArgv()(usesHashTable::iterateKeyed) intoProcessPhpcRunCommandJitHelper.php, mirroringParseStrNativeJitHelper(php-in-php: ParseStrNativeLlvm — route user-script AOT parse helpers through ParseStrEngine PHP (#13717 follow-up) #13827).__compiler_phpc_run_commandviaProcessRuntime::ensurePhpcRunCommandLinked()sosystem()/passthru()/exec()capture path no longer nested-JITs the iterateKeyed helper.test/repro/maintainer_gap_system_passthru_ob.phpgreen on VM.Root cause
AOT compile of
ProcessJitHelper.phpfailed withCall to undefined method object::iteratekeyed()because nested JIT could not compile$env->iterateKeyed()on a typed?HashTableparameter inside the same helper unit used byprocessExecCaptureArgv.Verification
Remaining blocker (not merged)
system()/passthru()AOT compile segfaults (exit 139) whenObOutputRuntime::ensureLinkedruns fromJitExec::writeLinesToStdout— distinct from the iterateKeyed nested-JIT failure fixed here.Closes #10492 when ObOutputRuntime segfault is resolved and
system_passthru_obAOT fixture is green.Made with Cursor