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
lib/JIT/Builtin/GcCollectCyclesRuntime.php still emits ~640 LOC phpc_gc_collect_cycles_impl LLVM (Tarjan-style scan over registry globals). VM path uses lib/VM/CycleCollector.php PHP SSOT (#13403, #3113). Embed JIT only routes stats via GcCollectCyclesJitHelper::recordNativeCollect after native scan — duplicated semantics.
ext/standard/GcCollectCyclesJitHelper.php documents: "native cycle scan stays in GcCollectCyclesRuntime until full PHP graph walk."
Embed JIT phpc_gc_collect_cycles_impl is now a thin bridge to compiled GcCollectCyclesJitHelper::collectCyclesEmbed() (CycleCollector VM walk + PHP native-registry scan). Standalone AOT retains LLVM scan.
Activity
PurHur commentedon Jun 30, 2026
claim: PHP Runtime → PHP — batch (issues #13882) — filed for next run; #13880 merged first.
PurHur commentedon Jun 30, 2026
claim: PHP Runtime → PHP — batch (issues #13882)
PurHur commentedon Jun 30, 2026
Merged via #13893.
Verification
php vendor/bin/phpunit test/unit/GcCollectCyclesCollectRuntimeShrinkTest.php— OK (5 tests)php bin/vm.php test/repro/maintainer_gap_gc_collect_array_cycle.php→1php bin/jit.php test/repro/maintainer_gap_gc_collect_array_cycle.php→1php bin/jit.php test/compliance/cases/stdlib/gc_jit.phpt→2(object cycle)php bin/vm.php test/compliance/cases/runtime/gc_collect_cycles_destruct.phpt→ destructors invokedEmbed JIT
phpc_gc_collect_cycles_implis now a thin bridge to compiledGcCollectCyclesJitHelper::collectCyclesEmbed()(CycleCollector VM walk + PHP native-registry scan). Standalone AOT retains LLVM scan.