From 74749dd8699a10f37cf4337c03a07c51ffad01da Mon Sep 17 00:00:00 2001
From: PurHur
Date: Fri, 24 Jul 2026 23:42:15 +0000
Subject: [PATCH] Trust: spine-sync ClassConstVisibilityInheritCheck + restamp
gen-0 (#10533)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
#22929 added lib/Compiler/ClassConstVisibilityInheritCheck.php to the vm.php
inventory without compiler_lib_spine_smoke coverage; release-readiness then
failed spine-coverage / north-star5-fast (6516/6517). Sync the require, bump
6513→6517 footnotes, restamp sidecar SHA-1 + lowering fingerprint after master
drift (#8713). Honest verified-fresh remains on #22642/#22717.
Co-authored-by: Cursor
---
README.md | 8 +-
docs/bootstrap-inventory.md | 1891 +++++++++--------
docs/bootstrap-profile.json | 5 +-
docs/bootstrap-selfhost.md | 6 +-
docs/pages/development-status.md | 12 +-
docs/pages/index.html | 10 +-
docs/roadmap-wave3.md | 6 +-
docs/self-host-target.md | 14 +-
.../.bootstrap_lowering_source.sha | 2 +-
.../.m3_compiler_lib_sidecar.sha | 2 +-
prelinked/bootstrap-gen0/manifest.json | 4 +-
.../compiler_lib_spine_smoke/main.php | 1 +
test/unit/BootstrapSelfhostBundleTest.php | 2 +-
13 files changed, 987 insertions(+), 976 deletions(-)
diff --git a/README.md b/README.md
index 83155a5726..c535cdfe0f 100755
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@
> **Stable line (2026)** — First maintained **stable** release **[v1.0.0](https://github.com/PurHur/php-compiler/releases/tag/v1.0.0)**; **v1.1.0** prep adds M5 fast-path stability, enum/property-hook parity, `preg_match` JIT, `spl_autoload*`, and php-in-PHP JIT helpers. Demo-ready VM + AOT for a **web-capable PHP subset**, reference examples **000–009**, and an experimental **self-host** path. Not full Zend PHP compatibility — see [what’s missing](https://purhur.github.io/php-compiler/docs/pages/missing-implementation.html).
-**Snapshot (Jul 2026, `master` — v1.1.0 prep):** VM + AOT for shipped examples ✅ · examples web smoke ✅ · self-host spine **6513** / **6513** · **1555** builtins · M5 fast ✅ / strict 🚧 · M3/M4 emit = blob copy ([#21860](https://github.com/PurHur/php-compiler/issues/21860)) · VM probe ~**20ms**
+**Snapshot (Jul 2026, `master` — v1.1.0 prep):** VM + AOT for shipped examples ✅ · examples web smoke ✅ · self-host spine **6517** / **6517** · **1555** builtins · M5 fast ✅ / strict 🚧 · M3/M4 emit = blob copy ([#21860](https://github.com/PurHur/php-compiler/issues/21860)) · VM probe ~**20ms**
---
@@ -23,7 +23,7 @@
| **AOT (`phpc build`)** | ✅ For curated subset | Standalone binaries for examples **000–009** and small CGI apps; not arbitrary Composer stacks |
| **JIT (`bin/jit.php`)** | 🚧 Partial | LLVM IR for many constructs; **MCJIT execute** still flaky ([#98](https://github.com/PurHur/php-compiler/issues/98)); EH scripts VM-fallback ([#2114](https://github.com/PurHur/php-compiler/issues/2114)) |
| **Language wave 3** | ✅ Closed batch | **12/12** language + **13/13** stdlib tracker items ([#1380](https://github.com/PurHur/php-compiler/issues/1380)); closures, try/catch, generators (VM), `parent::class`, backed enums (VM), intersection AOT checks |
-| **Self-host north star** | 🚧 ~65% | M3/M4 emit paths are blob copies ([#21860](https://github.com/PurHur/php-compiler/issues/21860)); `--strict` red; spine **6513** / **6513**; vendor prelink **3/3** ([#1492](https://github.com/PurHur/php-compiler/issues/1492)) |
+| **Self-host north star** | 🚧 ~65% | M3/M4 emit paths are blob copies ([#21860](https://github.com/PurHur/php-compiler/issues/21860)); `--strict` red; spine **6517** / **6517**; vendor prelink **3/3** ([#1492](https://github.com/PurHur/php-compiler/issues/1492)) |
### What you can rely on today
@@ -40,7 +40,7 @@ Counts from `php script/bootstrap-spine-count.php` (literal `require_once` in `c
| Milestone | Status | What it means |
|-----------|--------|----------------|
| **M0–M1** | ✅ | `compiler_minimal` + compile-smoke bundles link and run natively |
-| **M2** | ✅ **6513** / **6513** | Full Phase A inventory in spine smoke; native link + lint ✅ |
+| **M2** | ✅ **6517** / **6517** | Full Phase A inventory in spine smoke; native link + lint ✅ |
| **M3** | 🚧 | HelloWorld probe output is a prelinked blob **COPY**, not a native emit ([#21860](https://github.com/PurHur/php-compiler/issues/21860)) |
| **M4** | 🚧 | ladder runs, but gen-1→gen-2 is a sidecar **COPY** ([#21860](https://github.com/PurHur/php-compiler/issues/21860)) — gen-0/gen-2/gen-3 being byte-identical follows from that, and is not fixpoint evidence |
| **M5** | 🚧 | `make north-star5-verify-fast` (daily) ✅; vendor **3/3** ✅; gen-0 sidecars refreshed; **`--strict` red at step 4a2** ([#21417](https://github.com/PurHur/php-compiler/issues/21417)) |
@@ -259,7 +259,7 @@ Full matrices (auto-generated): [`docs/capabilities.md`](docs/capabilities.md) (
**Self-host (experimental, not “stable app” scope)**
-See [Current implementation status](#current-implementation-status-july-2026) for the full M0–M5 ladder. Summary: M0–M5 bootstrap gates ✅; spine **6513** / **6513**; M3 strict native + inventory argv ✅; M4 full `bootstrap-loop-probe` ✅; M5 **`north-star5-verify-fast`** (daily) ✅ — **`--strict` red at step 4a2** ([#21417](https://github.com/PurHur/php-compiler/issues/21417)) ([#1492](https://github.com/PurHur/php-compiler/issues/1492), [#8559](https://github.com/PurHur/php-compiler/issues/8559)). Recent: native spine bundle probe, fast VM execute smoke ([#2201](https://github.com/PurHur/php-compiler/issues/2201)), `GeneratorYieldSourceMarker` spine unit ([#10356](https://github.com/PurHur/php-compiler/pull/10356)).
+See [Current implementation status](#current-implementation-status-july-2026) for the full M0–M5 ladder. Summary: M0–M5 bootstrap gates ✅; spine **6517** / **6517**; M3 strict native + inventory argv ✅; M4 full `bootstrap-loop-probe` ✅; M5 **`north-star5-verify-fast`** (daily) ✅ — **`--strict` red at step 4a2** ([#21417](https://github.com/PurHur/php-compiler/issues/21417)) ([#1492](https://github.com/PurHur/php-compiler/issues/1492), [#8559](https://github.com/PurHur/php-compiler/issues/8559)). Recent: native spine bundle probe, fast VM execute smoke ([#2201](https://github.com/PurHur/php-compiler/issues/2201)), `GeneratorYieldSourceMarker` spine unit ([#10356](https://github.com/PurHur/php-compiler/pull/10356)).
**What we do not target in v1.x**
diff --git a/docs/bootstrap-inventory.md b/docs/bootstrap-inventory.md
index 12d33abf01..85f457e6cf 100644
--- a/docs/bootstrap-inventory.md
+++ b/docs/bootstrap-inventory.md
@@ -8,11 +8,11 @@ Regenerate: `php script/bootstrap-inventory.php`
| Metric | Count |
|--------|------:|
-| PHP files on vm.php path | 6516 |
-| Phase A inventory files (M2 ratio SSOT) | 6516 |
+| PHP files on vm.php path | 6517 |
+| Phase A inventory files (M2 ratio SSOT) | 6517 |
| Phase A ratio-deferred paths | 0 |
| Source constructs flagged (blockers) | 1 |
-| Source constructs flagged (warnings) | 20925 |
+| Source constructs flagged (warnings) | 20929 |
## Compiler CFG gaps (`lib/Compiler.php`)
@@ -4683,6 +4683,7 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
| `lib/Compiler/ClassCompileRegistry.php` | 0 | 1 |
| `lib/Compiler/ClassConstDuplicateCheck.php` | 0 | 3 |
| `lib/Compiler/ClassConstValueFold.php` | 0 | 6 |
+| `lib/Compiler/ClassConstVisibilityInheritCheck.php` | 0 | 3 |
| `lib/Compiler/CompileFatal.php` | 0 | 1 |
| `lib/Compiler/DeprecatedMetadata.php` | 0 | 6 |
| `lib/Compiler/EnumAbstractMethodCompileCheck.php` | 0 | 4 |
@@ -4778,7 +4779,7 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
| `lib/JIT/Builtin/ArrayKeysRuntime.php` | 0 | 1 |
| `lib/JIT/Builtin/ArrayMapRuntime.php` | 0 | 2 |
| `lib/JIT/Builtin/ArrayMergeRecursiveRuntime.php` | 0 | 4 |
-| `lib/JIT/Builtin/ArrayMergeRuntime.php` | 0 | 3 |
+| `lib/JIT/Builtin/ArrayMergeRuntime.php` | 0 | 1 |
| `lib/JIT/Builtin/ArrayPadRuntime.php` | 0 | 1 |
| `lib/JIT/Builtin/ArrayPadTypeJit.php` | 0 | 1 |
| `lib/JIT/Builtin/ArrayPointerRuntime.php` | 0 | 1 |
@@ -5594,7 +5595,7 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
| `lib/JIT/InternalStrictArg.php` | 0 | 1 |
| `lib/JIT/IntersectionParamCheck.php` | 0 | 2 |
| `lib/JIT/IssetHelper.php` | 0 | 1 |
-| `lib/JIT/IssetHelperLlvm.php` | 0 | 4 |
+| `lib/JIT/IssetHelperLlvm.php` | 0 | 5 |
| `lib/JIT/IteratorHelper.php` | 0 | 1 |
| `lib/JIT/IteratorProtocolHelper.php` | 0 | 1 |
| `lib/JIT/JitArrayColumnArg.php` | 0 | 2 |
@@ -5695,7 +5696,7 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
| `lib/JIT/UsortCallbackPolicy.php` | 0 | 1 |
| `lib/JIT/ValueEchoHelper.php` | 0 | 1 |
| `lib/JIT/VarFetchHelper.php` | 0 | 1 |
-| `lib/JIT/Variable.php` | 0 | 30 |
+| `lib/JIT/Variable.php` | 0 | 32 |
| `lib/JIT/VariableFunctionCallHelper.php` | 0 | 1 |
| `lib/JIT/VariableFunctionCallRuntime.php` | 0 | 3 |
| `lib/JIT/VariableTypeMapNative.php` | 0 | 2 |
@@ -9540,79 +9541,79 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
- new ObjectEntry (line 3751)
- new DomNodeState (line 3756)
- new Variable (line 3766)
-- new ObjectEntry (line 4701)
-- new DomNodeState (line 4703)
-- new ObjectEntry (line 5208)
-- new DomNodeState (line 5210)
-- new ObjectEntry (line 5238)
-- new DomNodeState (line 5240)
-- new ObjectEntry (line 5473)
-- new DomNodeState (line 5478)
-- new Variable (line 5913)
-- new DOMException (line 5964)
-- new Error (line 6013)
-- new DOMException (line 6019)
-- new Error (line 6028)
-- new DOMException (line 6243)
-- new DOMException (line 6533)
-- new DOMException (line 6537)
-- new DOMException (line 6612)
-- new DOMException (line 6644)
-- new DOMException (line 6686)
-- new Error (line 6694)
-- new ObjectEntry (line 7439)
-- new DomNodeState (line 7441)
-- new DOMException (line 8042)
-- new Variable (line 8115)
-- new DOMException (line 8406)
-- new DOMException (line 8572)
-- new DOMException (line 8617)
-- new ObjectEntry (line 8721)
-- new DomNodeState (line 8725)
-- new Variable (line 8732)
-- new ObjectEntry (line 8750)
-- new DomNodeState (line 8754)
-- new Variable (line 8761)
-- new ObjectEntry (line 8779)
-- new DomNodeState (line 8783)
-- new Variable (line 8790)
-- new DOMException (line 8873)
-- new ObjectEntry (line 9191)
-- new DomNodeState (line 9195)
-- new Variable (line 9204)
-- new ObjectEntry (line 9254)
-- new DomNodeState (line 9257)
-- new Variable (line 9265)
-- new Variable (line 9470)
-- new DOMException (line 9607)
-- new DOMException (line 9614)
-- new DOMException (line 9649)
-- new Variable (line 9759)
-- new DOMException (line 10853)
-- new Variable (line 10912)
-- new Variable (line 10935)
-- new Variable (line 10964)
-- new Variable (line 11002)
-- new DOMException (line 11013)
-- new Variable (line 11015)
-- new DOMException (line 11189)
-- new DOMException (line 11216)
-- new DOMException (line 11252)
-- new DOMException (line 11348)
-- new DOMException (line 11356)
-- new DOMException (line 11369)
-- new DOMException (line 11380)
-- new DOMException (line 11385)
-- new DOMException (line 11411)
-- new DOMException (line 11432)
-- new DOMException (line 11490)
-- new DOMException (line 11495)
-- new DOMException (line 11498)
-- new DOMException (line 11501)
-- new DOMException (line 11530)
-- new Error (line 12728)
-- new Error (line 12732)
-- 485 class method(s)
+- new ObjectEntry (line 4835)
+- new DomNodeState (line 4837)
+- new ObjectEntry (line 5342)
+- new DomNodeState (line 5344)
+- new ObjectEntry (line 5372)
+- new DomNodeState (line 5374)
+- new ObjectEntry (line 5609)
+- new DomNodeState (line 5614)
+- new Variable (line 6049)
+- new DOMException (line 6100)
+- new Error (line 6149)
+- new DOMException (line 6155)
+- new Error (line 6164)
+- new DOMException (line 6379)
+- new DOMException (line 6669)
+- new DOMException (line 6673)
+- new DOMException (line 6748)
+- new DOMException (line 6780)
+- new DOMException (line 6822)
+- new Error (line 6830)
+- new ObjectEntry (line 7575)
+- new DomNodeState (line 7577)
+- new DOMException (line 8178)
+- new Variable (line 8251)
+- new DOMException (line 8542)
+- new DOMException (line 8708)
+- new DOMException (line 8753)
+- new ObjectEntry (line 8857)
+- new DomNodeState (line 8861)
+- new Variable (line 8868)
+- new ObjectEntry (line 8886)
+- new DomNodeState (line 8890)
+- new Variable (line 8897)
+- new ObjectEntry (line 8915)
+- new DomNodeState (line 8919)
+- new Variable (line 8926)
+- new DOMException (line 9009)
+- new ObjectEntry (line 9327)
+- new DomNodeState (line 9331)
+- new Variable (line 9340)
+- new ObjectEntry (line 9390)
+- new DomNodeState (line 9393)
+- new Variable (line 9401)
+- new Variable (line 9606)
+- new DOMException (line 9743)
+- new DOMException (line 9750)
+- new DOMException (line 9785)
+- new Variable (line 9895)
+- new DOMException (line 10989)
+- new Variable (line 11048)
+- new Variable (line 11071)
+- new Variable (line 11100)
+- new Variable (line 11138)
+- new DOMException (line 11149)
+- new Variable (line 11151)
+- new DOMException (line 11325)
+- new DOMException (line 11352)
+- new DOMException (line 11388)
+- new DOMException (line 11484)
+- new DOMException (line 11492)
+- new DOMException (line 11505)
+- new DOMException (line 11516)
+- new DOMException (line 11521)
+- new DOMException (line 11547)
+- new DOMException (line 11568)
+- new DOMException (line 11626)
+- new DOMException (line 11631)
+- new DOMException (line 11634)
+- new DOMException (line 11637)
+- new DOMException (line 11666)
+- new Error (line 12864)
+- new Error (line 12868)
+- 487 class method(s)
- 4 closure(s)
### `ext/dom/VmDomCollectionDimension.php`
@@ -13917,26 +13918,26 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
- new ObjectEntry (line 177)
- new HashTable (line 387)
- new Variable (line 389)
-- new ArgumentCountError (line 934)
-- new Error (line 942)
-- new IntlException (line 948)
-- new ArgumentCountError (line 965)
-- new ArgumentCountError (line 998)
-- new Error (line 1006)
-- new ArgumentCountError (line 1034)
-- new Error (line 1042)
-- new ArgumentCountError (line 1065)
-- new Error (line 1073)
-- new ArgumentCountError (line 1100)
-- new ArgumentCountError (line 1133)
-- new Error (line 1141)
-- new ArgumentCountError (line 1169)
-- new ArgumentCountError (line 1202)
-- new Error (line 1210)
-- new ArgumentCountError (line 1237)
-- new Error (line 1245)
-- new ArgumentCountError (line 1266)
-- new Error (line 1274)
+- new ArgumentCountError (line 936)
+- new Error (line 944)
+- new IntlException (line 950)
+- new ArgumentCountError (line 967)
+- new ArgumentCountError (line 1000)
+- new Error (line 1008)
+- new ArgumentCountError (line 1036)
+- new Error (line 1044)
+- new ArgumentCountError (line 1067)
+- new Error (line 1075)
+- new ArgumentCountError (line 1102)
+- new ArgumentCountError (line 1135)
+- new Error (line 1143)
+- new ArgumentCountError (line 1171)
+- new ArgumentCountError (line 1204)
+- new Error (line 1212)
+- new ArgumentCountError (line 1239)
+- new Error (line 1247)
+- new ArgumentCountError (line 1268)
+- new Error (line 1276)
- 45 class method(s)
### `ext/intl/VmNormalizer.php`
@@ -13968,40 +13969,40 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
- new NumberFormatterGetErrorMessage (line 265)
- new Error (line 283)
- new ObjectEntry (line 285)
-- new ArgumentCountError (line 1543)
-- new Error (line 1551)
-- new ArgumentCountError (line 1575)
-- new ArgumentCountError (line 1605)
-- new Error (line 1613)
-- new ArgumentCountError (line 1645)
-- new Error (line 1653)
-- new ArgumentCountError (line 1682)
-- new Error (line 1690)
-- new ArgumentCountError (line 1745)
-- new Error (line 1753)
-- new ArgumentCountError (line 1806)
-- new Error (line 1814)
-- new ArgumentCountError (line 1846)
-- new Error (line 1854)
-- new ArgumentCountError (line 1878)
-- new Error (line 1886)
-- new ArgumentCountError (line 1914)
-- new Error (line 1922)
-- new ArgumentCountError (line 1946)
-- new Error (line 1954)
-- new ArgumentCountError (line 1982)
-- new Error (line 1990)
-- new ArgumentCountError (line 2014)
-- new Error (line 2022)
-- new ArgumentCountError (line 2049)
-- new Error (line 2057)
-- new ArgumentCountError (line 2080)
-- new Error (line 2088)
-- new ArgumentCountError (line 2115)
-- new Error (line 2123)
-- new ArgumentCountError (line 2144)
-- new Error (line 2152)
-- 65 class method(s)
+- new ArgumentCountError (line 1857)
+- new Error (line 1865)
+- new ArgumentCountError (line 1889)
+- new ArgumentCountError (line 1919)
+- new Error (line 1927)
+- new ArgumentCountError (line 1959)
+- new Error (line 1967)
+- new ArgumentCountError (line 1996)
+- new Error (line 2004)
+- new ArgumentCountError (line 2059)
+- new Error (line 2067)
+- new ArgumentCountError (line 2120)
+- new Error (line 2128)
+- new ArgumentCountError (line 2160)
+- new Error (line 2168)
+- new ArgumentCountError (line 2192)
+- new Error (line 2200)
+- new ArgumentCountError (line 2228)
+- new Error (line 2236)
+- new ArgumentCountError (line 2260)
+- new Error (line 2268)
+- new ArgumentCountError (line 2296)
+- new Error (line 2304)
+- new ArgumentCountError (line 2328)
+- new Error (line 2336)
+- new ArgumentCountError (line 2363)
+- new Error (line 2371)
+- new ArgumentCountError (line 2394)
+- new Error (line 2402)
+- new ArgumentCountError (line 2429)
+- new Error (line 2437)
+- new ArgumentCountError (line 2458)
+- new Error (line 2466)
+- 71 class method(s)
### `ext/intl/VmResourceBundle.php`
@@ -38546,7 +38547,7 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
### `ext/xml/xml_parser_free.php`
**Warnings** (review for bootstrap subset):
-- new ArgumentCountError (line 26)
+- new ArgumentCountError (line 30)
- 2 class method(s)
### `ext/xml/xml_parser_get_option.php`
@@ -40730,476 +40731,476 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
### `lib/Compiler.php`
**Warnings** (review for bootstrap subset):
-- new CompileError (line 495)
-- new ClassCompileRegistry (line 516)
-- new AttributeClassRegistry (line 517)
-- new ClassCompileRegistry (line 599)
-- new AttributeClassRegistry (line 600)
-- new ClassCompileRegistry (line 640)
-- new AttributeClassRegistry (line 641)
-- new Func\PHP (line 646)
-- new Block (line 873)
-- new Block (line 911)
-- new Block (line 923)
-- new OpCode (line 942)
-- new Block (line 952)
-- new OpCode (line 965)
-- new Literal (line 1351)
-- new Op\Expr\BinaryOp\Coalesce (line 1360)
-- new OpCode (line 1362)
-- new OpCode (line 2036)
-- new OpCode (line 2043)
-- new OpCode (line 2092)
-- new OpCode (line 2530)
-- new OpCode (line 2542)
-- new OpCode (line 3074)
-- new Block (line 3087)
-- new OpCode (line 3093)
-- new Block (line 3139)
-- new OpCode (line 3142)
-- new OpCode (line 3362)
-- new OpCode (line 3371)
-- new Operand\Temporary (line 3408)
-- new OpCode (line 3411)
-- new Op\Expr\ConcatList (line 3456)
-- new OpCode (line 3464)
-- new OpCode (line 3773)
-- new OpCode (line 4133)
-- new Op\Expr\ConcatList (line 4841)
-- new Op\Expr\ConcatList (line 4874)
-- new Operand\Temporary (line 5087)
-- new OpCode (line 5089)
-- new Op\Expr\ConcatList (line 5097)
-- new OpCode (line 5346)
-- new OpCode (line 6123)
-- new OpCode (line 6152)
-- new Variable (line 6180)
-- new Operand\Temporary (line 6182)
-- new OpCode (line 6186)
-- new Block (line 6227)
-- new OpCode (line 6262)
-- new OpCode (line 6267)
-- new Block (line 6293)
-- new Operand\Literal (line 6304)
-- new Variable (line 6306)
-- new Operand\Temporary (line 6315)
-- new OpCode (line 6319)
-- new ParameterMetadata (line 6358)
-- new Variable (line 6482)
-- new Operand\Temporary (line 6484)
-- new OpCode (line 6487)
-- new Variable (line 6609)
-- new Variable (line 6638)
-- new Variable (line 6673)
-- new Block (line 6865)
-- new OpCode (line 6868)
-- new Block (line 6870)
-- new OpCode (line 6873)
-- new Block (line 6877)
-- new OpCode (line 6880)
-- new OpCode (line 6884)
-- new OpCode (line 6889)
-- new Block (line 7321)
-- new OpCode (line 7439)
-- new OpCode (line 7505)
-- new OpCode (line 7510)
-- new OpCode (line 7583)
-- new Variable (line 7613)
-- new Variable (line 7623)
-- new ClassEntry (line 7690)
-- new Operand\Temporary (line 7723)
-- new Operand\Temporary (line 7729)
-- new Operand\Temporary (line 7743)
-- new Operand\Temporary (line 7749)
-- new Operand\Temporary (line 7764)
-- new Operand\Temporary (line 7774)
-- new Operand\Temporary (line 7782)
-- new Variable (line 7972)
-- new Operand\Literal (line 8168)
-- new OpCode (line 8174)
-- new Operand\Variable (line 8265)
-- new Operand\Literal (line 8265)
-- new Operand\Literal (line 8275)
-- new Temporary (line 8278)
-- new OpCode (line 8283)
-- new OpCode (line 8289)
-- new Variable (line 8339)
-- new Operand\Temporary (line 8340)
-- new Op\Type\Literal (line 8545)
-- new Op\Expr\Param (line 8546)
-- new Operand\Literal (line 8547)
-- new Op\Type\Mixed_ (line 8548)
-- new Variable (line 8679)
-- new Variable (line 8844)
-- new Variable (line 8884)
-- new Variable (line 8900)
-- new ClassEntry (line 8908)
-- new ObjectEntry (line 8910)
-- new Variable (line 8920)
-- new Variable (line 8979)
-- new Variable (line 9023)
-- new Variable (line 9028)
-- new Variable (line 9143)
-- new Variable (line 9150)
-- new Variable (line 9162)
-- new Variable (line 9177)
-- new Variable (line 9180)
-- new Variable (line 9186)
-- new Variable (line 9193)
-- new Variable (line 9200)
-- new Variable (line 9206)
-- new Variable (line 9212)
-- new Variable (line 9219)
-- new Variable (line 9226)
-- new Variable (line 9233)
-- new Variable (line 9303)
-- new Variable (line 9447)
-- new Variable (line 9461)
-- new Variable (line 9470)
-- new Variable (line 9477)
-- new Variable (line 9527)
-- new Variable (line 9533)
-- new Variable (line 9546)
-- new Variable (line 9560)
-- new Variable (line 9566)
-- new Variable (line 9579)
-- new Variable (line 9612)
-- new Variable (line 9618)
-- new Variable (line 9623)
-- new Variable (line 9716)
-- new Variable (line 9736)
-- new ReflectionClassConstant (line 9756)
-- new Variable (line 9762)
-- new Variable (line 9768)
-- new Variable (line 9774)
-- new Variable (line 9780)
-- new CompileFatal (line 9817)
-- new Frame (line 9944)
-- new OpCode (line 10181)
-- new Operand\Literal (line 10256)
-- new OpCode (line 10258)
-- new Operand\Literal (line 10281)
-- new OpCode (line 10284)
-- new OpCode (line 10293)
-- new OpCode (line 10300)
-- new OpCode (line 10308)
-- new OpCode (line 10339)
-- new OpCode (line 10343)
-- new OpCode (line 10354)
-- new OpCode (line 10357)
-- new OpCode (line 10414)
-- new OpCode (line 10419)
-- new OpCode (line 10433)
-- new OpCode (line 10451)
-- new OpCode (line 10992)
-- new OpCode (line 11011)
-- new Block (line 11023)
-- new OpCode (line 11030)
-- new OpCode (line 11146)
-- new OpCode (line 11196)
-- new OpCode (line 11217)
-- new OpCode (line 11236)
-- new OpCode (line 11260)
-- new Operand\Literal (line 11274)
-- new OpCode (line 11275)
-- new OpCode (line 11296)
-- new OpCode (line 11303)
-- new OpCode (line 11310)
-- new OpCode (line 11325)
-- new OpCode (line 11335)
-- new OpCode (line 11343)
-- new OpCode (line 11408)
-- new OpCode (line 11427)
-- new OpCode (line 11455)
-- new OpCode (line 11463)
-- new OpCode (line 11483)
-- new OpCode (line 11505)
-- new OpCode (line 11523)
-- new OpCode (line 11534)
-- new OpCode (line 11543)
-- new OpCode (line 11551)
-- new OpCode (line 11578)
-- new OpCode (line 11589)
-- new OpCode (line 11601)
-- new Operand\Literal (line 11616)
-- new Operand\Literal (line 11645)
-- new Operand\Literal (line 11665)
-- new OpCode (line 11667)
-- new OpCode (line 11706)
-- new Operand\Temporary (line 11742)
-- new OpCode (line 11744)
-- new OpCode (line 11765)
-- new OpCode (line 11782)
-- new OpCode (line 11797)
-- new OpCode (line 11803)
-- new OpCode (line 11809)
-- new OpCode (line 11841)
-- new OpCode (line 11848)
-- new OpCode (line 11859)
-- new OpCode (line 11878)
-- new Operand\Literal (line 11915)
-- new OpCode (line 11917)
-- new OpCode (line 11944)
-- new OpCode (line 12183)
-- new Operand\Literal (line 12217)
-- new OpCode (line 12220)
-- new Operand\Literal (line 12236)
-- new OpCode (line 12241)
-- new OpCode (line 12253)
-- new OpCode (line 12463)
-- new OpCode (line 12493)
-- new OpCode (line 12546)
-- new OpCode (line 12693)
-- new OpCode (line 12700)
-- new Block (line 12708)
-- new Block (line 12712)
-- new OpCode (line 12737)
-- new Block (line 12745)
-- new OpCode (line 12755)
-- new OpCode (line 12766)
-- new OpCode (line 12777)
-- new OpCode (line 12787)
-- new OpCode (line 12798)
-- new OpCode (line 12807)
-- new OpCode (line 12810)
-- new OpCode (line 12821)
-- new OpCode (line 12842)
-- new OpCode (line 13217)
-- new OpCode (line 13234)
-- new OpCode (line 13244)
-- new OpCode (line 13258)
-- new OpCode (line 13271)
-- new Block (line 13502)
-- new Block (line 13506)
-- new Operand\Literal (line 13509)
-- new OpCode (line 13512)
-- new OpCode (line 13518)
-- new Block (line 13522)
-- new OpCode (line 13525)
-- new OpCode (line 13531)
-- new OpCode (line 13537)
-- new Block (line 13558)
-- new Block (line 13562)
-- new Operand\Literal (line 13565)
-- new OpCode (line 13568)
-- new OpCode (line 13574)
-- new Block (line 13578)
-- new OpCode (line 13583)
-- new OpCode (line 13592)
-- new OpCode (line 13600)
-- new OpCode (line 13651)
-- new Block (line 13678)
-- new Block (line 13695)
-- new Block (line 13717)
-- new OpCode (line 13721)
-- new OpCode (line 13727)
-- new Block (line 13731)
-- new OpCode (line 13741)
-- new OpCode (line 13746)
-- new OpCode (line 13761)
-- new Block (line 13786)
-- new OpCode (line 13790)
-- new OpCode (line 13796)
-- new Block (line 13800)
-- new OpCode (line 13804)
-- new OpCode (line 13810)
-- new OpCode (line 13815)
-- new OpCode (line 13830)
-- new Block (line 13854)
-- new Block (line 13858)
-- new Operand\Literal (line 13861)
-- new OpCode (line 13864)
-- new OpCode (line 13870)
-- new Block (line 13874)
-- new OpCode (line 13906)
-- new OpCode (line 13919)
-- new OpCode (line 13927)
-- new Variable (line 14029)
-- new Operand\Literal (line 14031)
-- new Block (line 14082)
-- new OpCode (line 14086)
-- new OpCode (line 14100)
-- new OpCode (line 14108)
-- new OpCode (line 14152)
-- new Op\Expr\Param (line 14312)
-- new Operand\Literal (line 14313)
-- new Op\Type\Mixed_ (line 14314)
-- new HashTable (line 14338)
-- new Variable (line 14401)
-- new Variable (line 14470)
-- new Operand\Literal (line 14518)
-- new Operand\Variable (line 14520)
-- new OpCode (line 15133)
-- new Block (line 15165)
-- new Block (line 15168)
-- new OpCode (line 15171)
-- new OpCode (line 15177)
-- new OpCode (line 15207)
-- new Block (line 15221)
-- new OpCode (line 15224)
-- new OpCode (line 15234)
-- new Temporary (line 15244)
-- new Variable (line 15254)
-- new Operand\Temporary (line 15256)
-- new OpCode (line 15303)
-- new Operand\Temporary (line 18284)
-- new Operand\Temporary (line 18335)
-- new Temporary (line 18544)
-- new Operand\Temporary (line 33257)
-- new Operand\Temporary (line 33262)
-- new Operand\Temporary (line 33335)
-- new Operand\Temporary (line 33340)
-- new OpCode (line 33496)
-- new OpCode (line 33614)
-- new OpCode (line 33746)
-- new OpCode (line 33818)
-- new OpCode (line 33921)
-- new OpCode (line 33995)
-- new OpCode (line 34138)
-- new OpCode (line 34241)
-- new OpCode (line 34335)
-- new OpCode (line 34416)
-- new OpCode (line 34501)
-- new OpCode (line 34591)
-- new Variable (line 34642)
-- new Operand\Temporary (line 34649)
-- new Operand\Temporary (line 34654)
-- new OpCode (line 34714)
-- new CfgVariable (line 37370)
-- new Literal (line 37370)
-- new Variable (line 37402)
-- new Variable (line 37456)
-- new OpCode (line 37485)
-- new Operand\Temporary (line 38408)
-- new OpCode (line 38410)
-- new OpCode (line 38438)
-- new OpCode (line 38454)
-- new OpCode (line 38462)
-- new OpCode (line 38469)
-- new OpCode (line 38481)
-- new OpCode (line 38498)
-- new OpCode (line 38504)
-- new OpCode (line 38510)
-- new OpCode (line 38515)
-- new OpCode (line 38531)
-- new OpCode (line 38544)
-- new Variable (line 38557)
-- new Operand\Literal (line 38559)
-- new OpCode (line 38562)
-- new OpCode (line 38594)
-- new OpCode (line 38598)
-- new OpCode (line 38615)
-- new OpCode (line 38676)
-- new OpCode (line 38687)
-- new OpCode (line 38700)
-- new OpCode (line 38877)
-- new CompileFatal (line 38939)
-- new Operand\Variable (line 39290)
-- new Operand\Literal (line 39290)
-- new OpCode (line 39322)
-- new OpCode (line 39344)
-- new OpCode (line 39352)
-- new OpCode (line 39358)
-- new Variable (line 39388)
-- new Temporary (line 39390)
-- new Variable (line 39398)
-- new Temporary (line 39400)
-- new OpCode (line 39448)
-- new Operand\Temporary (line 39469)
-- new Operand\Temporary (line 39475)
-- new Operand\Temporary (line 39481)
-- new Operand\Temporary (line 39487)
-- new Operand\Temporary (line 39504)
-- new Operand\Temporary (line 39513)
-- new Operand\Temporary (line 41764)
-- new Variable (line 42306)
-- new Variable (line 42310)
-- new Variable (line 42318)
-- new Variable (line 42322)
-- new Variable (line 42606)
-- new OpCode (line 42708)
-- new OpCode (line 42744)
-- new OpCode (line 42938)
-- new OpCode (line 42961)
-- new OpCode (line 42994)
-- new OpCode (line 43054)
-- new OpCode (line 43084)
-- new OpCode (line 43115)
-- new OpCode (line 43163)
-- new OpCode (line 43180)
-- new OpCode (line 43199)
-- new OpCode (line 43219)
-- new OpCode (line 43233)
-- new Operand\Temporary (line 43255)
-- new OpCode (line 43289)
-- new OpCode (line 43316)
-- new Operand\Temporary (line 43320)
-- new OpCode (line 43336)
-- new OpCode (line 43369)
-- new OpCode (line 43410)
-- new OpCode (line 43426)
-- new OpCode (line 43449)
-- new OpCode (line 43466)
-- new OpCode (line 43480)
-- new OpCode (line 43502)
-- new OpCode (line 43524)
-- new OpCode (line 43533)
-- new OpCode (line 43553)
-- new OpCode (line 43652)
-- new OpCode (line 43665)
-- new OpCode (line 43678)
-- new OpCode (line 43683)
-- new OpCode (line 43700)
-- new OpCode (line 43746)
-- new OpCode (line 43795)
-- new OpCode (line 43918)
-- new OpCode (line 43957)
-- new OpCode (line 44035)
-- new OpCode (line 44056)
-- new OpCode (line 44091)
-- new OpCode (line 44124)
-- new OpCode (line 44216)
-- new OpCode (line 44270)
-- new OpCode (line 44292)
-- new Operand\Temporary (line 46080)
-- new Operand\Temporary (line 46611)
-- new Operand\Temporary (line 46797)
-- new Operand\Temporary (line 46829)
-- new Operand\Temporary (line 46932)
-- new Operand\Temporary (line 47061)
-- new OpCode (line 47063)
-- new OpCode (line 48669)
-- new Operand\Temporary (line 49140)
-- new OpCode (line 49745)
-- new Operand\Literal (line 50110)
-- new Variable (line 50112)
-- new OpCode (line 50158)
-- new OpCode (line 50373)
-- new OpCode (line 50383)
-- new OpCode (line 50386)
-- new Operand\Temporary (line 50413)
-- new Operand\Temporary (line 50450)
-- new OpCode (line 50452)
-- new OpCode (line 50463)
-- new Operand\Temporary (line 50466)
-- new OpCode (line 50468)
-- new OpCode (line 50476)
-- new OpCode (line 50486)
-- new OpCode (line 50494)
-- new OpCode (line 50497)
-- new OpCode (line 50522)
-- new OpCode (line 50548)
-- new OpCode (line 50566)
-- new OpCode (line 50573)
-- new Operand\Literal (line 51361)
-- new OpCode (line 52904)
-- new Literal (line 53065)
-- new OpCode (line 53164)
-- new Variable (line 53171)
-- new Temporary (line 53173)
-- new OpCode (line 53176)
-- new CompileFatal (line 53511)
-- new CompileFatal (line 53766)
+- new CompileError (line 496)
+- new ClassCompileRegistry (line 517)
+- new AttributeClassRegistry (line 518)
+- new ClassCompileRegistry (line 601)
+- new AttributeClassRegistry (line 602)
+- new ClassCompileRegistry (line 642)
+- new AttributeClassRegistry (line 643)
+- new Func\PHP (line 648)
+- new Block (line 875)
+- new Block (line 913)
+- new Block (line 925)
+- new OpCode (line 944)
+- new Block (line 954)
+- new OpCode (line 967)
+- new Literal (line 1353)
+- new Op\Expr\BinaryOp\Coalesce (line 1362)
+- new OpCode (line 1364)
+- new OpCode (line 2038)
+- new OpCode (line 2045)
+- new OpCode (line 2094)
+- new OpCode (line 2532)
+- new OpCode (line 2544)
+- new OpCode (line 3076)
+- new Block (line 3089)
+- new OpCode (line 3095)
+- new Block (line 3141)
+- new OpCode (line 3144)
+- new OpCode (line 3364)
+- new OpCode (line 3373)
+- new Operand\Temporary (line 3410)
+- new OpCode (line 3413)
+- new Op\Expr\ConcatList (line 3458)
+- new OpCode (line 3466)
+- new OpCode (line 3775)
+- new OpCode (line 4135)
+- new Op\Expr\ConcatList (line 4843)
+- new Op\Expr\ConcatList (line 4876)
+- new Operand\Temporary (line 5089)
+- new OpCode (line 5091)
+- new Op\Expr\ConcatList (line 5099)
+- new OpCode (line 5348)
+- new OpCode (line 6125)
+- new OpCode (line 6154)
+- new Variable (line 6182)
+- new Operand\Temporary (line 6184)
+- new OpCode (line 6188)
+- new Block (line 6229)
+- new OpCode (line 6264)
+- new OpCode (line 6269)
+- new Block (line 6295)
+- new Operand\Literal (line 6306)
+- new Variable (line 6308)
+- new Operand\Temporary (line 6317)
+- new OpCode (line 6321)
+- new ParameterMetadata (line 6360)
+- new Variable (line 6484)
+- new Operand\Temporary (line 6486)
+- new OpCode (line 6489)
+- new Variable (line 6611)
+- new Variable (line 6640)
+- new Variable (line 6675)
+- new Block (line 6867)
+- new OpCode (line 6870)
+- new Block (line 6872)
+- new OpCode (line 6875)
+- new Block (line 6879)
+- new OpCode (line 6882)
+- new OpCode (line 6886)
+- new OpCode (line 6891)
+- new Block (line 7323)
+- new OpCode (line 7441)
+- new OpCode (line 7507)
+- new OpCode (line 7512)
+- new OpCode (line 7585)
+- new Variable (line 7615)
+- new Variable (line 7625)
+- new ClassEntry (line 7692)
+- new Operand\Temporary (line 7725)
+- new Operand\Temporary (line 7731)
+- new Operand\Temporary (line 7745)
+- new Operand\Temporary (line 7751)
+- new Operand\Temporary (line 7766)
+- new Operand\Temporary (line 7776)
+- new Operand\Temporary (line 7784)
+- new Variable (line 7974)
+- new Operand\Literal (line 8170)
+- new OpCode (line 8176)
+- new Operand\Variable (line 8267)
+- new Operand\Literal (line 8267)
+- new Operand\Literal (line 8277)
+- new Temporary (line 8280)
+- new OpCode (line 8285)
+- new OpCode (line 8291)
+- new Variable (line 8341)
+- new Operand\Temporary (line 8342)
+- new Op\Type\Literal (line 8547)
+- new Op\Expr\Param (line 8548)
+- new Operand\Literal (line 8549)
+- new Op\Type\Mixed_ (line 8550)
+- new Variable (line 8681)
+- new Variable (line 8846)
+- new Variable (line 8886)
+- new Variable (line 8902)
+- new ClassEntry (line 8910)
+- new ObjectEntry (line 8912)
+- new Variable (line 8922)
+- new Variable (line 8981)
+- new Variable (line 9025)
+- new Variable (line 9030)
+- new Variable (line 9145)
+- new Variable (line 9152)
+- new Variable (line 9164)
+- new Variable (line 9179)
+- new Variable (line 9182)
+- new Variable (line 9188)
+- new Variable (line 9195)
+- new Variable (line 9202)
+- new Variable (line 9208)
+- new Variable (line 9214)
+- new Variable (line 9221)
+- new Variable (line 9228)
+- new Variable (line 9235)
+- new Variable (line 9305)
+- new Variable (line 9449)
+- new Variable (line 9463)
+- new Variable (line 9472)
+- new Variable (line 9479)
+- new Variable (line 9529)
+- new Variable (line 9535)
+- new Variable (line 9548)
+- new Variable (line 9562)
+- new Variable (line 9568)
+- new Variable (line 9581)
+- new Variable (line 9614)
+- new Variable (line 9620)
+- new Variable (line 9625)
+- new Variable (line 9718)
+- new Variable (line 9738)
+- new ReflectionClassConstant (line 9758)
+- new Variable (line 9764)
+- new Variable (line 9770)
+- new Variable (line 9776)
+- new Variable (line 9782)
+- new CompileFatal (line 9819)
+- new Frame (line 9946)
+- new OpCode (line 10183)
+- new Operand\Literal (line 10258)
+- new OpCode (line 10260)
+- new Operand\Literal (line 10283)
+- new OpCode (line 10286)
+- new OpCode (line 10295)
+- new OpCode (line 10302)
+- new OpCode (line 10310)
+- new OpCode (line 10341)
+- new OpCode (line 10345)
+- new OpCode (line 10356)
+- new OpCode (line 10359)
+- new OpCode (line 10416)
+- new OpCode (line 10421)
+- new OpCode (line 10435)
+- new OpCode (line 10453)
+- new OpCode (line 10994)
+- new OpCode (line 11013)
+- new Block (line 11025)
+- new OpCode (line 11032)
+- new OpCode (line 11148)
+- new OpCode (line 11198)
+- new OpCode (line 11219)
+- new OpCode (line 11238)
+- new OpCode (line 11262)
+- new Operand\Literal (line 11276)
+- new OpCode (line 11277)
+- new OpCode (line 11298)
+- new OpCode (line 11305)
+- new OpCode (line 11312)
+- new OpCode (line 11327)
+- new OpCode (line 11337)
+- new OpCode (line 11345)
+- new OpCode (line 11410)
+- new OpCode (line 11429)
+- new OpCode (line 11457)
+- new OpCode (line 11465)
+- new OpCode (line 11485)
+- new OpCode (line 11507)
+- new OpCode (line 11525)
+- new OpCode (line 11536)
+- new OpCode (line 11545)
+- new OpCode (line 11553)
+- new OpCode (line 11580)
+- new OpCode (line 11591)
+- new OpCode (line 11603)
+- new Operand\Literal (line 11618)
+- new Operand\Literal (line 11647)
+- new Operand\Literal (line 11667)
+- new OpCode (line 11669)
+- new OpCode (line 11708)
+- new Operand\Temporary (line 11744)
+- new OpCode (line 11746)
+- new OpCode (line 11767)
+- new OpCode (line 11784)
+- new OpCode (line 11799)
+- new OpCode (line 11805)
+- new OpCode (line 11811)
+- new OpCode (line 11843)
+- new OpCode (line 11850)
+- new OpCode (line 11861)
+- new OpCode (line 11880)
+- new Operand\Literal (line 11917)
+- new OpCode (line 11919)
+- new OpCode (line 11946)
+- new OpCode (line 12185)
+- new Operand\Literal (line 12219)
+- new OpCode (line 12222)
+- new Operand\Literal (line 12238)
+- new OpCode (line 12243)
+- new OpCode (line 12255)
+- new OpCode (line 12465)
+- new OpCode (line 12495)
+- new OpCode (line 12548)
+- new OpCode (line 12695)
+- new OpCode (line 12702)
+- new Block (line 12710)
+- new Block (line 12714)
+- new OpCode (line 12739)
+- new Block (line 12747)
+- new OpCode (line 12757)
+- new OpCode (line 12768)
+- new OpCode (line 12779)
+- new OpCode (line 12789)
+- new OpCode (line 12800)
+- new OpCode (line 12809)
+- new OpCode (line 12812)
+- new OpCode (line 12823)
+- new OpCode (line 12844)
+- new OpCode (line 13219)
+- new OpCode (line 13236)
+- new OpCode (line 13246)
+- new OpCode (line 13260)
+- new OpCode (line 13273)
+- new Block (line 13504)
+- new Block (line 13508)
+- new Operand\Literal (line 13511)
+- new OpCode (line 13514)
+- new OpCode (line 13520)
+- new Block (line 13524)
+- new OpCode (line 13527)
+- new OpCode (line 13533)
+- new OpCode (line 13539)
+- new Block (line 13560)
+- new Block (line 13564)
+- new Operand\Literal (line 13567)
+- new OpCode (line 13570)
+- new OpCode (line 13576)
+- new Block (line 13580)
+- new OpCode (line 13585)
+- new OpCode (line 13594)
+- new OpCode (line 13602)
+- new OpCode (line 13653)
+- new Block (line 13680)
+- new Block (line 13697)
+- new Block (line 13719)
+- new OpCode (line 13723)
+- new OpCode (line 13729)
+- new Block (line 13733)
+- new OpCode (line 13743)
+- new OpCode (line 13748)
+- new OpCode (line 13763)
+- new Block (line 13788)
+- new OpCode (line 13792)
+- new OpCode (line 13798)
+- new Block (line 13802)
+- new OpCode (line 13806)
+- new OpCode (line 13812)
+- new OpCode (line 13817)
+- new OpCode (line 13832)
+- new Block (line 13856)
+- new Block (line 13860)
+- new Operand\Literal (line 13863)
+- new OpCode (line 13866)
+- new OpCode (line 13872)
+- new Block (line 13876)
+- new OpCode (line 13908)
+- new OpCode (line 13921)
+- new OpCode (line 13929)
+- new Variable (line 14031)
+- new Operand\Literal (line 14033)
+- new Block (line 14084)
+- new OpCode (line 14088)
+- new OpCode (line 14102)
+- new OpCode (line 14110)
+- new OpCode (line 14154)
+- new Op\Expr\Param (line 14314)
+- new Operand\Literal (line 14315)
+- new Op\Type\Mixed_ (line 14316)
+- new HashTable (line 14340)
+- new Variable (line 14403)
+- new Variable (line 14472)
+- new Operand\Literal (line 14520)
+- new Operand\Variable (line 14522)
+- new OpCode (line 15135)
+- new Block (line 15167)
+- new Block (line 15170)
+- new OpCode (line 15173)
+- new OpCode (line 15179)
+- new OpCode (line 15209)
+- new Block (line 15223)
+- new OpCode (line 15226)
+- new OpCode (line 15236)
+- new Temporary (line 15246)
+- new Variable (line 15256)
+- new Operand\Temporary (line 15258)
+- new OpCode (line 15305)
+- new Operand\Temporary (line 18286)
+- new Operand\Temporary (line 18337)
+- new Temporary (line 18546)
+- new Operand\Temporary (line 33259)
+- new Operand\Temporary (line 33264)
+- new Operand\Temporary (line 33337)
+- new Operand\Temporary (line 33342)
+- new OpCode (line 33498)
+- new OpCode (line 33616)
+- new OpCode (line 33748)
+- new OpCode (line 33820)
+- new OpCode (line 33923)
+- new OpCode (line 33997)
+- new OpCode (line 34140)
+- new OpCode (line 34243)
+- new OpCode (line 34337)
+- new OpCode (line 34418)
+- new OpCode (line 34503)
+- new OpCode (line 34593)
+- new Variable (line 34644)
+- new Operand\Temporary (line 34651)
+- new Operand\Temporary (line 34656)
+- new OpCode (line 34716)
+- new CfgVariable (line 37372)
+- new Literal (line 37372)
+- new Variable (line 37404)
+- new Variable (line 37458)
+- new OpCode (line 37487)
+- new Operand\Temporary (line 38410)
+- new OpCode (line 38412)
+- new OpCode (line 38440)
+- new OpCode (line 38456)
+- new OpCode (line 38464)
+- new OpCode (line 38471)
+- new OpCode (line 38483)
+- new OpCode (line 38500)
+- new OpCode (line 38506)
+- new OpCode (line 38512)
+- new OpCode (line 38517)
+- new OpCode (line 38533)
+- new OpCode (line 38546)
+- new Variable (line 38559)
+- new Operand\Literal (line 38561)
+- new OpCode (line 38564)
+- new OpCode (line 38596)
+- new OpCode (line 38600)
+- new OpCode (line 38617)
+- new OpCode (line 38678)
+- new OpCode (line 38689)
+- new OpCode (line 38702)
+- new OpCode (line 38879)
+- new CompileFatal (line 38941)
+- new Operand\Variable (line 39292)
+- new Operand\Literal (line 39292)
+- new OpCode (line 39324)
+- new OpCode (line 39346)
+- new OpCode (line 39354)
+- new OpCode (line 39360)
+- new Variable (line 39390)
+- new Temporary (line 39392)
+- new Variable (line 39400)
+- new Temporary (line 39402)
+- new OpCode (line 39450)
+- new Operand\Temporary (line 39471)
+- new Operand\Temporary (line 39477)
+- new Operand\Temporary (line 39483)
+- new Operand\Temporary (line 39489)
+- new Operand\Temporary (line 39506)
+- new Operand\Temporary (line 39515)
+- new Operand\Temporary (line 41766)
+- new Variable (line 42308)
+- new Variable (line 42312)
+- new Variable (line 42320)
+- new Variable (line 42324)
+- new Variable (line 42608)
+- new OpCode (line 42710)
+- new OpCode (line 42746)
+- new OpCode (line 42940)
+- new OpCode (line 42963)
+- new OpCode (line 42996)
+- new OpCode (line 43056)
+- new OpCode (line 43086)
+- new OpCode (line 43117)
+- new OpCode (line 43165)
+- new OpCode (line 43182)
+- new OpCode (line 43201)
+- new OpCode (line 43221)
+- new OpCode (line 43235)
+- new Operand\Temporary (line 43257)
+- new OpCode (line 43291)
+- new OpCode (line 43318)
+- new Operand\Temporary (line 43322)
+- new OpCode (line 43338)
+- new OpCode (line 43371)
+- new OpCode (line 43412)
+- new OpCode (line 43428)
+- new OpCode (line 43451)
+- new OpCode (line 43468)
+- new OpCode (line 43482)
+- new OpCode (line 43504)
+- new OpCode (line 43526)
+- new OpCode (line 43535)
+- new OpCode (line 43555)
+- new OpCode (line 43654)
+- new OpCode (line 43667)
+- new OpCode (line 43680)
+- new OpCode (line 43685)
+- new OpCode (line 43702)
+- new OpCode (line 43748)
+- new OpCode (line 43797)
+- new OpCode (line 43920)
+- new OpCode (line 43959)
+- new OpCode (line 44037)
+- new OpCode (line 44058)
+- new OpCode (line 44093)
+- new OpCode (line 44126)
+- new OpCode (line 44218)
+- new OpCode (line 44272)
+- new OpCode (line 44294)
+- new Operand\Temporary (line 46082)
+- new Operand\Temporary (line 46613)
+- new Operand\Temporary (line 46799)
+- new Operand\Temporary (line 46831)
+- new Operand\Temporary (line 46934)
+- new Operand\Temporary (line 47063)
+- new OpCode (line 47065)
+- new OpCode (line 48671)
+- new Operand\Temporary (line 49142)
+- new OpCode (line 49747)
+- new Operand\Literal (line 50112)
+- new Variable (line 50114)
+- new OpCode (line 50160)
+- new OpCode (line 50375)
+- new OpCode (line 50385)
+- new OpCode (line 50388)
+- new Operand\Temporary (line 50415)
+- new Operand\Temporary (line 50452)
+- new OpCode (line 50454)
+- new OpCode (line 50465)
+- new Operand\Temporary (line 50468)
+- new OpCode (line 50470)
+- new OpCode (line 50478)
+- new OpCode (line 50488)
+- new OpCode (line 50496)
+- new OpCode (line 50499)
+- new OpCode (line 50524)
+- new OpCode (line 50550)
+- new OpCode (line 50568)
+- new OpCode (line 50575)
+- new Operand\Literal (line 51363)
+- new OpCode (line 52906)
+- new Literal (line 53067)
+- new OpCode (line 53166)
+- new Variable (line 53173)
+- new Temporary (line 53175)
+- new OpCode (line 53178)
+- new CompileFatal (line 53513)
+- new CompileFatal (line 53768)
- 1091 class method(s)
- 51 closure(s)
@@ -41291,6 +41292,13 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
- new Variable (line 86)
- 4 class method(s)
+### `lib/Compiler/ClassConstVisibilityInheritCheck.php`
+
+**Warnings** (review for bootstrap subset):
+- new self (line 41)
+- new CompileFatal (line 117)
+- 11 class method(s)
+
### `lib/Compiler/CompileFatal.php`
**Warnings** (review for bootstrap subset):
@@ -42049,9 +42057,7 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
### `lib/JIT/Builtin/ArrayMergeRuntime.php`
**Warnings** (review for bootstrap subset):
-- new JIT (line 225)
- 14 class method(s)
-- 1 closure(s)
### `lib/JIT/Builtin/ArrayPadRuntime.php`
@@ -46759,6 +46765,7 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
- new Variable (line 189)
- new Variable (line 216)
- new Variable (line 230)
+- new Variable (line 257)
- 9 class method(s)
### `lib/JIT/IteratorHelper.php`
@@ -47358,19 +47365,21 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
- new self (line 702)
- new self (line 715)
- new self (line 725)
-- new Variable (line 871)
-- new Variable (line 880)
-- new Variable (line 910)
-- new Variable (line 956)
-- new Variable (line 978)
-- new Variable (line 992)
-- new Variable (line 1036)
-- new Variable (line 1057)
-- new Variable (line 1079)
-- new Variable (line 1132)
-- new Variable (line 1183)
-- new Variable (line 1196)
-- 21 class method(s)
+- new Variable (line 865)
+- new Variable (line 881)
+- new Variable (line 890)
+- new Variable (line 920)
+- new Variable (line 966)
+- new Variable (line 988)
+- new Variable (line 1002)
+- new Variable (line 1046)
+- new Variable (line 1067)
+- new Variable (line 1089)
+- new Variable (line 1142)
+- new Variable (line 1193)
+- new Variable (line 1206)
+- new self (line 1276)
+- 23 class method(s)
### `lib/JIT/VariableFunctionCallHelper.php`
@@ -47783,289 +47792,289 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
- new VM\MagicMethodInvocationAborted (line 287)
- new VM\MagicMethodInvocationAborted (line 323)
- new Variable (line 376)
-- new Error (line 472)
-- new Error (line 475)
-- new Variable (line 497)
-- new Variable (line 501)
-- new VM\MagicMethodInvocationAborted (line 504)
-- new VM\Builtin\ExceptionGetMessage (line 523)
-- new Variable (line 570)
-- new Variable (line 574)
-- new VM\MagicMethodInvocationAborted (line 579)
-- new Variable (line 637)
-- new HashTable (line 662)
-- new Variable (line 668)
-- new Variable (line 683)
-- new Variable (line 692)
-- new Variable (line 712)
-- new Variable (line 715)
-- new Variable (line 738)
-- new Variable (line 759)
-- new Variable (line 764)
-- new Variable (line 780)
-- new Variable (line 783)
-- new Variable (line 805)
-- new Variable (line 902)
-- new Variable (line 908)
-- new Variable (line 975)
-- new Error (line 980)
-- new Variable (line 982)
-- new Variable (line 1044)
-- new Error (line 1086)
-- new Variable (line 1088)
-- new Variable (line 1109)
-- new Variable (line 1250)
-- new Variable (line 1323)
-- new Variable (line 1357)
-- new Variable (line 1378)
-- new Variable (line 1385)
-- new Variable (line 1558)
-- new Variable (line 1567)
-- new Variable (line 1610)
-- new Variable (line 1620)
-- new Variable (line 1733)
-- new Variable (line 1853)
-- new Error (line 1859)
-- new Error (line 1868)
-- new Error (line 1891)
-- new Error (line 1903)
-- new Error (line 1906)
-- new Variable (line 1940)
-- new Variable (line 1965)
-- new Variable (line 2014)
-- new Variable (line 2131)
-- new Variable (line 2140)
-- new Variable (line 2153)
-- new Variable (line 2160)
-- new Variable (line 2174)
-- new Variable (line 2339)
-- new Variable (line 2347)
-- new Variable (line 2374)
-- new Variable (line 2380)
-- new Variable (line 2397)
-- new Variable (line 2438)
-- new Variable (line 2451)
-- new Variable (line 2464)
-- new Variable (line 2522)
-- new Variable (line 2535)
-- new Variable (line 2549)
-- new Variable (line 2570)
-- new Variable (line 2739)
-- new Variable (line 2759)
-- new Variable (line 2764)
-- new Variable (line 2797)
-- new Variable (line 2811)
-- new Variable (line 2813)
-- new Variable (line 2917)
-- new Variable (line 2924)
-- new Frame (line 2966)
-- new Variable (line 2976)
-- new Variable (line 3018)
-- new VM\NativeFiberError (line 3047)
-- new Variable (line 3054)
-- new VM\NativeFiberError (line 3070)
-- new VM\NativeFiberError (line 3073)
-- new Variable (line 3089)
-- new VM\NativeFiberError (line 3105)
-- new VM\NativeFiberError (line 3108)
-- new Variable (line 3114)
-- new Variable (line 3142)
-- new Variable (line 3153)
-- new Variable (line 3176)
-- new Variable (line 3188)
-- new Variable (line 3226)
-- new VM\FiberUncaughtThrow (line 3235)
-- new VM\FiberUncaughtThrow (line 3248)
-- new HashTable (line 3291)
-- new Variable (line 3298)
-- new Variable (line 3315)
-- new HashTable (line 3357)
-- new Variable (line 3360)
-- new HashTable (line 3370)
-- new Variable (line 3380)
+- new Error (line 509)
+- new Error (line 512)
+- new Variable (line 534)
+- new Variable (line 538)
+- new VM\MagicMethodInvocationAborted (line 541)
+- new VM\Builtin\ExceptionGetMessage (line 560)
+- new Variable (line 607)
+- new Variable (line 611)
+- new VM\MagicMethodInvocationAborted (line 616)
+- new Variable (line 674)
+- new HashTable (line 699)
+- new Variable (line 705)
+- new Variable (line 720)
+- new Variable (line 729)
+- new Variable (line 749)
+- new Variable (line 752)
+- new Variable (line 775)
+- new Variable (line 796)
+- new Variable (line 801)
+- new Variable (line 817)
+- new Variable (line 820)
+- new Variable (line 842)
+- new Variable (line 939)
+- new Variable (line 945)
+- new Variable (line 1012)
+- new Error (line 1017)
+- new Variable (line 1019)
+- new Variable (line 1081)
+- new Error (line 1123)
+- new Variable (line 1125)
+- new Variable (line 1146)
+- new Variable (line 1287)
+- new Variable (line 1360)
+- new Variable (line 1394)
+- new Variable (line 1415)
+- new Variable (line 1422)
+- new Variable (line 1595)
+- new Variable (line 1604)
+- new Variable (line 1647)
+- new Variable (line 1657)
+- new Variable (line 1770)
+- new Variable (line 1890)
+- new Error (line 1896)
+- new Error (line 1905)
+- new Error (line 1928)
+- new Error (line 1940)
+- new Error (line 1943)
+- new Variable (line 1977)
+- new Variable (line 2002)
+- new Variable (line 2051)
+- new Variable (line 2168)
+- new Variable (line 2177)
+- new Variable (line 2190)
+- new Variable (line 2197)
+- new Variable (line 2211)
+- new Variable (line 2376)
+- new Variable (line 2384)
+- new Variable (line 2411)
+- new Variable (line 2417)
+- new Variable (line 2434)
+- new Variable (line 2475)
+- new Variable (line 2488)
+- new Variable (line 2501)
+- new Variable (line 2559)
+- new Variable (line 2572)
+- new Variable (line 2586)
+- new Variable (line 2607)
+- new Variable (line 2776)
+- new Variable (line 2796)
+- new Variable (line 2801)
+- new Variable (line 2834)
+- new Variable (line 2848)
+- new Variable (line 2850)
+- new Variable (line 2954)
+- new Variable (line 2961)
+- new Frame (line 3003)
+- new Variable (line 3013)
+- new Variable (line 3055)
+- new VM\NativeFiberError (line 3084)
+- new Variable (line 3091)
+- new VM\NativeFiberError (line 3107)
+- new VM\NativeFiberError (line 3110)
+- new Variable (line 3126)
+- new VM\NativeFiberError (line 3142)
+- new VM\NativeFiberError (line 3145)
+- new Variable (line 3151)
+- new Variable (line 3179)
+- new Variable (line 3190)
+- new Variable (line 3213)
+- new Variable (line 3225)
+- new Variable (line 3263)
+- new VM\FiberUncaughtThrow (line 3272)
+- new VM\FiberUncaughtThrow (line 3285)
+- new HashTable (line 3328)
+- new Variable (line 3335)
+- new Variable (line 3352)
+- new HashTable (line 3394)
+- new Variable (line 3397)
+- new HashTable (line 3407)
- new Variable (line 3417)
-- new ObjectEntry (line 3479)
-- new Variable (line 3482)
-- new Variable (line 3511)
-- new VM\GeneratorUncaughtThrow (line 3526)
-- new VM\FiberUncaughtThrow (line 3540)
-- new VM\DestructorThrowCatchSignal (line 3545)
-- new Variable (line 3673)
-- new Variable (line 3893)
-- new Variable (line 3981)
-- new Variable (line 4028)
-- new Variable (line 4044)
-- new Error (line 4148)
-- new HashTable (line 4233)
-- new Variable (line 4273)
-- new Variable (line 4275)
-- new VM\ArrayAccessDimension (line 4277)
-- new Variable (line 4299)
-- new Variable (line 4326)
-- new Variable (line 4338)
-- new Variable (line 4420)
-- new VM\ArrayAccessDimension (line 4421)
-- new Variable (line 4424)
-- new VM\ObjectEntry (line 4582)
-- new Variable (line 4880)
-- new Func\PHP (line 5867)
-- new ClosureState (line 5879)
-- new Variable (line 5902)
-- new Func\PHP (line 5949)
-- new Variable (line 6177)
-- new Variable (line 6186)
-- new GeneratorState (line 6261)
-- new Variable (line 6627)
-- new VM\ClassEntry (line 6751)
-- new ClassEntry (line 6777)
-- new Variable (line 6791)
-- new Variable (line 6794)
-- new ClassEntry (line 6822)
-- new ClassEntry (line 6856)
-- new ObjectEntry (line 6997)
-- new Variable (line 7246)
-- new Variable (line 7269)
-- new Variable (line 7344)
-- new Variable (line 7417)
-- new Variable (line 7737)
-- new WeakMapIterator (line 8124)
-- new ObjectPropertyIterator (line 8129)
-- new Variable (line 8362)
-- new Variable (line 8840)
-- new Variable (line 8852)
-- new Variable (line 8958)
-- new Variable (line 9013)
-- new Variable (line 9140)
-- new Variable (line 9199)
-- new Variable (line 9223)
-- new Variable (line 9577)
-- new Variable (line 9584)
-- new Variable (line 9651)
-- new Variable (line 9682)
-- new VM\PropertyHookRefWriteSignal (line 9687)
-- new VM\PropertyHookFiberSuspendSignal (line 9690)
-- new Variable (line 9716)
-- new Variable (line 9723)
-- new Variable (line 9740)
-- new VM\NativeFiberStackOverflow (line 10704)
-- new VM\BuiltinCallbackCatchRedirect (line 10755)
-- new VM\BuiltinCallbackCatchRedirect (line 10773)
-- new Variable (line 10887)
-- new Variable (line 10995)
-- new VM\GeneratorUncaughtThrow (line 11099)
-- new VM\FiberUncaughtThrow (line 11106)
-- new Variable (line 11151)
-- new ScriptExit (line 11317)
-- new Exception (line 11334)
-- new ScriptExit (line 11342)
-- new Error (line 11605)
-- new VM\PropertyHookRefWriteSignal (line 11653)
-- new Variable (line 11677)
-- new VM\PropertyHookRefWriteSignal (line 11682)
-- new VM\PropertyHookFiberSuspendSignal (line 11685)
-- new VM\PropertyHookRefWriteSignal (line 11834)
-- new Variable (line 11851)
-- new VM\PropertyHookRefWriteSignal (line 11865)
-- new VM\PropertyHookRefWriteSignal (line 11877)
-- new Variable (line 12019)
-- new VM\PropertyHookRef (line 12020)
-- new Variable (line 12042)
-- new Variable (line 12052)
-- new VM\PropertyHookRef (line 12053)
-- new Variable (line 12229)
-- new Variable (line 12248)
-- new Variable (line 12293)
-- new Variable (line 12303)
-- new Variable (line 12313)
-- new VM\PropertyHookRefWriteSignal (line 12319)
-- new VM\PropertyHookRefWriteSignal (line 12327)
-- new VM\PropertyHookRefWriteSignal (line 12330)
-- new Variable (line 12342)
-- new Variable (line 12354)
-- new VM\PropertyHookRefWriteSignal (line 12359)
-- new Variable (line 12376)
-- new VM\PropertyHookRefWriteSignal (line 12382)
-- new Variable (line 12413)
-- new VM\PropertyHookRefWriteSignal (line 12418)
-- new VM\PropertyHookFiberSuspendSignal (line 12421)
-- new Error (line 13003)
-- new Error (line 13013)
-- new Error (line 13023)
-- new Error (line 13033)
-- new Error (line 13057)
-- new ClassEntry (line 13869)
-- new Variable (line 13870)
-- new VM\ClassProperty (line 13871)
-- new ObjectEntry (line 13874)
-- new Variable (line 13877)
-- new Variable (line 13958)
-- new Error (line 14044)
-- new Variable (line 14136)
-- new VM\GeneratorUncaughtThrow (line 14138)
-- new Error (line 14207)
-- new Variable (line 14252)
-- new VM\GeneratorUncaughtThrow (line 14266)
-- new Variable (line 14365)
-- new VM\GeneratorUncaughtThrow (line 14388)
-- new Variable (line 14467)
-- new Variable (line 14469)
-- new Variable (line 14473)
-- new Variable (line 14603)
-- new Variable (line 14645)
-- new Variable (line 14816)
-- new Variable (line 14832)
-- new Variable (line 14877)
-- new Variable (line 15018)
-- new Variable (line 15092)
-- new Variable (line 15256)
-- new VM\PropertyIsInitializedHandler (line 15265)
-- new Error (line 15397)
-- new VM\EnumFromHandler (line 15423)
-- new CompileError (line 16155)
-- new VM\ClassProperty (line 16380)
-- new Variable (line 16696)
-- new CompileError (line 16714)
-- new Variable (line 16919)
-- new Variable (line 16921)
-- new ClassEntry (line 16964)
-- new Func\PHP (line 16971)
-- new VM\ClassProperty (line 17066)
-- new Func\PHP (line 17274)
-- new Variable (line 17350)
-- new Variable (line 17357)
-- new Variable (line 17363)
-- new Variable (line 17400)
-- new Variable (line 17429)
-- new Variable (line 17617)
-- new Variable (line 17663)
-- new VM\ClassProperty (line 17728)
-- new Error (line 17775)
-- new Error (line 17810)
-- new Error (line 17813)
-- new Error (line 17816)
-- new Error (line 17819)
-- new ObjectEntry (line 17821)
-- new Error (line 17834)
-- new Error (line 17837)
-- new Error (line 17840)
-- new Error (line 17861)
-- new ObjectEntry (line 17866)
-- new Variable (line 17868)
-- new Variable (line 17886)
-- new Variable (line 17899)
-- new Variable (line 17920)
-- new Variable (line 17933)
-- new Error (line 18063)
-- new Error (line 18068)
-- new VM\ObjectEntry (line 18072)
-- new Variable (line 18216)
-- new Variable (line 18234)
-- new NoDiscardMetadata (line 18403)
-- new Variable (line 18572)
-- new Variable (line 18574)
-- new CompileError (line 18602)
-- new Variable (line 18705)
-- 518 class method(s)
+- new Variable (line 3454)
+- new ObjectEntry (line 3516)
+- new Variable (line 3519)
+- new Variable (line 3548)
+- new VM\GeneratorUncaughtThrow (line 3563)
+- new VM\FiberUncaughtThrow (line 3577)
+- new VM\DestructorThrowCatchSignal (line 3582)
+- new Variable (line 3710)
+- new Variable (line 3930)
+- new Variable (line 4018)
+- new Variable (line 4065)
+- new Variable (line 4081)
+- new Error (line 4185)
+- new HashTable (line 4270)
+- new Variable (line 4310)
+- new Variable (line 4312)
+- new VM\ArrayAccessDimension (line 4314)
+- new Variable (line 4336)
+- new Variable (line 4372)
+- new Variable (line 4384)
+- new Variable (line 4466)
+- new VM\ArrayAccessDimension (line 4467)
+- new Variable (line 4470)
+- new VM\ObjectEntry (line 4628)
+- new Variable (line 4926)
+- new Func\PHP (line 5913)
+- new ClosureState (line 5925)
+- new Variable (line 5948)
+- new Func\PHP (line 5995)
+- new Variable (line 6223)
+- new Variable (line 6232)
+- new GeneratorState (line 6307)
+- new Variable (line 6673)
+- new VM\ClassEntry (line 6797)
+- new ClassEntry (line 6823)
+- new Variable (line 6837)
+- new Variable (line 6840)
+- new ClassEntry (line 6868)
+- new ClassEntry (line 6902)
+- new ObjectEntry (line 7043)
+- new Variable (line 7292)
+- new Variable (line 7315)
+- new Variable (line 7390)
+- new Variable (line 7463)
+- new Variable (line 7783)
+- new WeakMapIterator (line 8170)
+- new ObjectPropertyIterator (line 8175)
+- new Variable (line 8408)
+- new Variable (line 8886)
+- new Variable (line 8898)
+- new Variable (line 9004)
+- new Variable (line 9059)
+- new Variable (line 9186)
+- new Variable (line 9245)
+- new Variable (line 9269)
+- new Variable (line 9623)
+- new Variable (line 9630)
+- new Variable (line 9697)
+- new Variable (line 9728)
+- new VM\PropertyHookRefWriteSignal (line 9733)
+- new VM\PropertyHookFiberSuspendSignal (line 9736)
+- new Variable (line 9762)
+- new Variable (line 9769)
+- new Variable (line 9786)
+- new VM\NativeFiberStackOverflow (line 10750)
+- new VM\BuiltinCallbackCatchRedirect (line 10801)
+- new VM\BuiltinCallbackCatchRedirect (line 10819)
+- new Variable (line 10933)
+- new Variable (line 11041)
+- new VM\GeneratorUncaughtThrow (line 11145)
+- new VM\FiberUncaughtThrow (line 11152)
+- new Variable (line 11197)
+- new ScriptExit (line 11363)
+- new Exception (line 11380)
+- new ScriptExit (line 11388)
+- new Error (line 11651)
+- new VM\PropertyHookRefWriteSignal (line 11699)
+- new Variable (line 11723)
+- new VM\PropertyHookRefWriteSignal (line 11728)
+- new VM\PropertyHookFiberSuspendSignal (line 11731)
+- new VM\PropertyHookRefWriteSignal (line 11880)
+- new Variable (line 11897)
+- new VM\PropertyHookRefWriteSignal (line 11911)
+- new VM\PropertyHookRefWriteSignal (line 11923)
+- new Variable (line 12065)
+- new VM\PropertyHookRef (line 12066)
+- new Variable (line 12088)
+- new Variable (line 12098)
+- new VM\PropertyHookRef (line 12099)
+- new Variable (line 12275)
+- new Variable (line 12294)
+- new Variable (line 12339)
+- new Variable (line 12349)
+- new Variable (line 12359)
+- new VM\PropertyHookRefWriteSignal (line 12365)
+- new VM\PropertyHookRefWriteSignal (line 12373)
+- new VM\PropertyHookRefWriteSignal (line 12376)
+- new Variable (line 12388)
+- new Variable (line 12400)
+- new VM\PropertyHookRefWriteSignal (line 12405)
+- new Variable (line 12422)
+- new VM\PropertyHookRefWriteSignal (line 12428)
+- new Variable (line 12459)
+- new VM\PropertyHookRefWriteSignal (line 12464)
+- new VM\PropertyHookFiberSuspendSignal (line 12467)
+- new Error (line 13049)
+- new Error (line 13059)
+- new Error (line 13069)
+- new Error (line 13079)
+- new Error (line 13103)
+- new ClassEntry (line 13915)
+- new Variable (line 13916)
+- new VM\ClassProperty (line 13917)
+- new ObjectEntry (line 13920)
+- new Variable (line 13923)
+- new Variable (line 14004)
+- new Error (line 14090)
+- new Variable (line 14182)
+- new VM\GeneratorUncaughtThrow (line 14184)
+- new Error (line 14253)
+- new Variable (line 14298)
+- new VM\GeneratorUncaughtThrow (line 14312)
+- new Variable (line 14411)
+- new VM\GeneratorUncaughtThrow (line 14434)
+- new Variable (line 14513)
+- new Variable (line 14515)
+- new Variable (line 14519)
+- new Variable (line 14649)
+- new Variable (line 14691)
+- new Variable (line 14862)
+- new Variable (line 14878)
+- new Variable (line 14923)
+- new Variable (line 15064)
+- new Variable (line 15138)
+- new Variable (line 15302)
+- new VM\PropertyIsInitializedHandler (line 15311)
+- new Error (line 15452)
+- new VM\EnumFromHandler (line 15478)
+- new CompileError (line 16210)
+- new VM\ClassProperty (line 16435)
+- new Variable (line 16751)
+- new CompileError (line 16769)
+- new Variable (line 16974)
+- new Variable (line 16976)
+- new ClassEntry (line 17019)
+- new Func\PHP (line 17026)
+- new VM\ClassProperty (line 17121)
+- new Func\PHP (line 17329)
+- new Variable (line 17405)
+- new Variable (line 17412)
+- new Variable (line 17418)
+- new Variable (line 17455)
+- new Variable (line 17484)
+- new Variable (line 17672)
+- new Variable (line 17718)
+- new VM\ClassProperty (line 17783)
+- new Error (line 17830)
+- new Error (line 17865)
+- new Error (line 17868)
+- new Error (line 17871)
+- new Error (line 17874)
+- new ObjectEntry (line 17876)
+- new Error (line 17889)
+- new Error (line 17892)
+- new Error (line 17895)
+- new Error (line 17916)
+- new ObjectEntry (line 17921)
+- new Variable (line 17923)
+- new Variable (line 17941)
+- new Variable (line 17954)
+- new Variable (line 17975)
+- new Variable (line 17988)
+- new Error (line 18118)
+- new Error (line 18123)
+- new VM\ObjectEntry (line 18127)
+- new Variable (line 18271)
+- new Variable (line 18289)
+- new NoDiscardMetadata (line 18458)
+- new Variable (line 18627)
+- new Variable (line 18629)
+- new CompileError (line 18657)
+- new Variable (line 18760)
+- 519 class method(s)
- 25 closure(s)
### `lib/VM/AbstractPropertyHookCheck.php`
@@ -48110,13 +48119,13 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
### `lib/VM/BackedEnum.php`
**Warnings** (review for bootstrap subset):
-- new EnumCaseEntry (line 85)
-- new EnumCaseEntry (line 110)
-- new Variable (line 153)
-- new Variable (line 159)
-- new Variable (line 196)
-- new Variable (line 240)
-- 15 class method(s)
+- new EnumCaseEntry (line 102)
+- new EnumCaseEntry (line 127)
+- new Variable (line 170)
+- new Variable (line 176)
+- new Variable (line 227)
+- new Variable (line 273)
+- 16 class method(s)
### `lib/VM/Builtin/AttributeConstruct.php`
@@ -51691,9 +51700,9 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
**Warnings** (review for bootstrap subset):
- new Variable (line 125)
-- new ScriptExit (line 470)
-- new Variable (line 642)
-- 50 class method(s)
+- new ScriptExit (line 489)
+- new Variable (line 661)
+- 51 class method(s)
### `lib/VM/ExceptionHandlerStack.php`
@@ -52377,7 +52386,7 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
### `lib/VM/StringOffsetJitHelper.php`
**Warnings** (review for bootstrap subset):
-- 8 class method(s)
+- 10 class method(s)
### `lib/VM/StringableSupport.php`
@@ -52479,34 +52488,34 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
- new Error (line 727)
- new Error (line 903)
- new Error (line 914)
-- new self (line 1192)
-- new Error (line 1229)
-- new Variable (line 1383)
-- new EnumCaseEntry (line 1385)
-- new self (line 1914)
-- new self (line 1932)
-- new self (line 2101)
-- new self (line 2109)
-- new self (line 2117)
-- new self (line 2119)
-- new self (line 2356)
-- new ArithmeticError (line 2461)
-- new self (line 2481)
-- new self (line 2575)
-- new Error (line 2582)
-- new DivisionByZeroError (line 2687)
-- new DivisionByZeroError (line 2694)
-- new self (line 2715)
-- new Error (line 2744)
-- new self (line 2765)
-- new self (line 2777)
-- new Error (line 2804)
-- new self (line 2825)
-- new self (line 2833)
-- new Error (line 3018)
-- new Error (line 3024)
-- new Error (line 3034)
-- 128 class method(s)
+- new self (line 1293)
+- new Error (line 1330)
+- new Variable (line 1484)
+- new EnumCaseEntry (line 1486)
+- new self (line 2015)
+- new self (line 2033)
+- new self (line 2202)
+- new self (line 2210)
+- new self (line 2218)
+- new self (line 2220)
+- new self (line 2457)
+- new ArithmeticError (line 2562)
+- new self (line 2582)
+- new self (line 2676)
+- new Error (line 2683)
+- new DivisionByZeroError (line 2788)
+- new DivisionByZeroError (line 2795)
+- new self (line 2816)
+- new Error (line 2845)
+- new self (line 2866)
+- new self (line 2878)
+- new Error (line 2905)
+- new self (line 2926)
+- new self (line 2934)
+- new Error (line 3119)
+- new Error (line 3125)
+- new Error (line 3135)
+- 129 class method(s)
### `lib/VM/VariableFunctionCall.php`
@@ -52565,7 +52574,7 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag
**Warnings** (review for bootstrap subset):
- new Variable (line 71)
- new Variable (line 81)
-- new Variable (line 112)
+- new Variable (line 116)
- 2 class method(s)
### `lib/VM/VmEnumNumericOperandGuard.php`
diff --git a/docs/bootstrap-profile.json b/docs/bootstrap-profile.json
index fc84b11782..3d744555f1 100644
--- a/docs/bootstrap-profile.json
+++ b/docs/bootstrap-profile.json
@@ -4749,6 +4749,7 @@
"lib/Compiler/ClassCompileRegistry.php",
"lib/Compiler/ClassConstDuplicateCheck.php",
"lib/Compiler/ClassConstValueFold.php",
+ "lib/Compiler/ClassConstVisibilityInheritCheck.php",
"lib/Compiler/CompileFatal.php",
"lib/Compiler/CompileTimeEnumCase.php",
"lib/Compiler/CompileTimeNew.php",
@@ -6751,9 +6752,9 @@
"test/bootstrap-aot/lib_opcode/main.php"
],
"totals": {
- "inventory_files": 6516,
+ "inventory_files": 6517,
"excluded": 1,
- "eligible": 6515,
+ "eligible": 6516,
"aot_lint_targets": 113,
"aot_link_targets": 100,
"aot_link_lib_targets": 1
diff --git a/docs/bootstrap-selfhost.md b/docs/bootstrap-selfhost.md
index 35f0348021..9a65e07a10 100644
--- a/docs/bootstrap-selfhost.md
+++ b/docs/bootstrap-selfhost.md
@@ -2,7 +2,7 @@
**Gen-0 without Zend:** `BOOTSTRAP_M5_NO_ZEND=1 make bootstrap-selfhost-link` installs `prelinked/bootstrap-gen0/bin-compile-aot` and links `compiler_minimal` without `php bin/compile.php` ([#3053](https://github.com/PurHur/php-compiler/issues/3053)). **M5 lib spine compile:** `BOOTSTRAP_NO_ZEND_FALLBACK=1 make bootstrap-selfhost-lib-spine-smoke` (default in link script) refuses host `php bin/compile.php` on the spine emit path ([#8716](https://github.com/PurHur/php-compiler/issues/8716)). **Contributor workflow:** [bootstrap-dev-workflow.md](bootstrap-dev-workflow.md) (tiered gen-1+ path, spine checklist, CI).
-**Project north star:** The **compiler fully compiles itself** — native AOT from `lib/` (no `vendor/` at cold boot), then compiles PHP and rebuilds the next compiler revision without Zend. **M2 spine:** **6513** / **6513** Phase A inventory (`php script/bootstrap-spine-count.php`; `check-selfhost-spine-coverage-sync.php`). **M5 daily gate:** `make north-star5-verify-fast` (~1–2 min) ✅; **`--strict`** (~1h) pre-merge only. Committed `prelinked/bootstrap-gen0/` sidecars + vendor **3/3** cold boot. **Hot loop:** VM driver execute probe ~**20ms**; full spine relink only with `BOOTSTRAP_VM_DRIVER_EXECUTE_PROBE_FULL_LINK=1` ([#2201](https://github.com/PurHur/php-compiler/issues/2201)). **Living tracker:** [#1492](https://github.com/PurHur/php-compiler/issues/1492) (was [#1056](https://github.com/PurHur/php-compiler/issues/1056)) · **re-root doc:** [self-host-target.md](self-host-target.md) · **generation ladder:** [bootstrap-generations.md](bootstrap-generations.md) · **M5 fast path:** [bootstrap-m5-fast-path.md](bootstrap-m5-fast-path.md) · public status: [development-status § North star](https://purhur.github.io/php-compiler/development-status.html#north-star-self-host). Parent tracking: [#78](https://github.com/PurHur/php-compiler/issues/78) (roadmap), [#212](https://github.com/PurHur/php-compiler/issues/212) (closed umbrella).
+**Project north star:** The **compiler fully compiles itself** — native AOT from `lib/` (no `vendor/` at cold boot), then compiles PHP and rebuilds the next compiler revision without Zend. **M2 spine:** **6517** / **6517** Phase A inventory (`php script/bootstrap-spine-count.php`; `check-selfhost-spine-coverage-sync.php`). **M5 daily gate:** `make north-star5-verify-fast` (~1–2 min) ✅; **`--strict`** (~1h) pre-merge only. Committed `prelinked/bootstrap-gen0/` sidecars + vendor **3/3** cold boot. **Hot loop:** VM driver execute probe ~**20ms**; full spine relink only with `BOOTSTRAP_VM_DRIVER_EXECUTE_PROBE_FULL_LINK=1` ([#2201](https://github.com/PurHur/php-compiler/issues/2201)). **Living tracker:** [#1492](https://github.com/PurHur/php-compiler/issues/1492) (was [#1056](https://github.com/PurHur/php-compiler/issues/1056)) · **re-root doc:** [self-host-target.md](self-host-target.md) · **generation ladder:** [bootstrap-generations.md](bootstrap-generations.md) · **M5 fast path:** [bootstrap-m5-fast-path.md](bootstrap-m5-fast-path.md) · public status: [development-status § North star](https://purhur.github.io/php-compiler/development-status.html#north-star-self-host). Parent tracking: [#78](https://github.com/PurHur/php-compiler/issues/78) (roadmap), [#212](https://github.com/PurHur/php-compiler/issues/212) (closed umbrella).
## Current gates
@@ -10,9 +10,9 @@
|------|---------|--------|
| Phase A inventory | `make bootstrap-inventory-check` | ✅ vm.php-path inventory; **0** source blockers; M2 ratio SSOT: `Phase A inventory files` row in `docs/bootstrap-inventory.md` (no ratio-deferred paths — [#2543](https://github.com/PurHur/php-compiler/issues/2543)); `lib/JIT/Builtin/StringPregMatch.php` and `lib/AOT/Linker.php` **included** in spine |
| Spine PHPCfg parse | `php script/bootstrap-spine-php-cfg-parse-check.php` (`--minimal` for M0 bundle) | ✅ no unsupported php-cfg expr/stmt on spine ([#2575](https://github.com/PurHur/php-compiler/issues/2575)); `BOOTSTRAP_SPINE_PHPCFG_PARSE_GATE=1` in `ci-fast.sh` |
-| Phase B lib AOT lint | `php bin/compile.php -l lib/*.php` (with `script/php-env.sh`) | ✅ **6513/6513** top-level `lib/*.php` units ([#534](https://github.com/PurHur/php-compiler/pull/534)) |
+| Phase B lib AOT lint | `php bin/compile.php -l lib/*.php` (with `script/php-env.sh`) | ✅ **6517/6517** top-level `lib/*.php` units ([#534](https://github.com/PurHur/php-compiler/pull/534)) |
| Phase B fixture lint | `php script/bootstrap-aot-lint.php` | ✅ **13** procedural targets under `test/bootstrap-aot/` + `examples/000-HelloWorld` |
-| Phase C native run | `make bootstrap-aot-link` or `./script/bootstrap-aot-link.sh` | ✅ **6513/6513** link targets OK |
+| Phase C native run | `make bootstrap-aot-link` or `./script/bootstrap-aot-link.sh` | ✅ **6517/6517** link targets OK |
| Phase D `lib/` link | `make bootstrap-aot-link-lib` or `./script/bootstrap-aot-link-lib.sh` | ✅ `test/bootstrap-aot/lib_opcode/main.php` bundles `lib/OpCode.php` ([#540](https://github.com/PurHur/php-compiler/issues/540)) |
| Bundled `lib/Compiler.php` lint | `./script/bootstrap-selfhost-lint.sh` | ✅ `test/selfhost/compiler_minimal/main.php` + literal `require_once` units toward `bin/vm.php` (no `vendor/`) ([#559](https://github.com/PurHur/php-compiler/issues/559)) |
| Compiler compile smoke lint | `php bin/compile.php -l test/selfhost/compiler_compile_smoke/main.php` | ✅ `compiler_minimal` bundle + literal `require_once` of `test/bootstrap-aot/compiler_smoke.php` (named function CFG) |
diff --git a/docs/pages/development-status.md b/docs/pages/development-status.md
index 15c88c130a..c928e7b353 100644
--- a/docs/pages/development-status.md
+++ b/docs/pages/development-status.md
@@ -14,8 +14,8 @@ permalink: /development-status.html
| **What it is** | PHP → CFG → VM / LLVM JIT → AOT native binaries |
| **North star** | Compiler compiles itself without Zend ([#1492](https://github.com/PurHur/php-compiler/issues/1492)) |
| **v1.1.0 theme** | M5 fast-path stability; enum/property hooks; `preg_match` JIT; `spl_autoload*`; php-in-PHP JIT helpers ([#78](https://github.com/PurHur/php-compiler/issues/78)) |
-| **Wave 3** | Language **6513/6513** · Stdlib **6513/6513** on master ([#1380](https://github.com/PurHur/php-compiler/issues/1380)) |
-| **Spine SSOT** | `php script/bootstrap-spine-count.php` → **6513** / **6513** |
+| **Wave 3** | Language **6517/6517** · Stdlib **6517/6517** on master ([#1380](https://github.com/PurHur/php-compiler/issues/1380)) |
+| **Spine SSOT** | `php script/bootstrap-spine-count.php` → **6517** / **6517** |
| **Builtin matrix** | **1555** functions ([`docs/capabilities.md`](https://github.com/PurHur/php-compiler/blob/master/docs/capabilities.md)) |
| **Try it** | [`docs/GETTING-STARTED.md`](https://github.com/PurHur/php-compiler/blob/master/docs/GETTING-STARTED.md) |
@@ -33,7 +33,7 @@ permalink: /development-status.html
| M5 spine runtime + bootstrap | `fix/spine-aot-jit-blockers` | Native bundle-OK probe; inventory argv spine-lint fallback; gen-0 sidecars refreshed ([#8559](https://github.com/PurHur/php-compiler/issues/8559)) |
| VM driver execute probe | [9493e806d](https://github.com/PurHur/php-compiler/commit/9493e806d) | **~20ms** feedback loop — no full relink on stale SHA; `BOOTSTRAP_VM_DRIVER_EXECUTE_PROBE_FULL_LINK=1` for rebuild ([#2201](https://github.com/PurHur/php-compiler/issues/2201)) |
| M5 presenter | `make north-star5-verify-fast` | Daily PR gate (~1–2 min); `--strict` (~1h) pre-merge only ([#1492](https://github.com/PurHur/php-compiler/issues/1492)) |
-| Gen-0 refresh | [a8cffaa0e](https://github.com/PurHur/php-compiler/commit/a8cffaa0e) | Spine runtime probe + gen-0 sidecars (**6513/6513**); inventory argv spine-lint fallback ([#8559](https://github.com/PurHur/php-compiler/issues/8559)) |
+| Gen-0 refresh | [a8cffaa0e](https://github.com/PurHur/php-compiler/commit/a8cffaa0e) | Spine runtime probe + gen-0 sidecars (**6517/6517**); inventory argv spine-lint fallback ([#8559](https://github.com/PurHur/php-compiler/issues/8559)) |
| Parallel compile jobs | [#10347](https://github.com/PurHur/php-compiler/pull/10347) | `PHP_COMPILER_COMPILE_JOBS` for vendor prelink + M3 sidecar warmup |
| Spine coverage | [#10356](https://github.com/PurHur/php-compiler/pull/10356) | `GeneratorYieldSourceMarker.php` in spine; inventory **3276** Phase A files |
| v1.1.0 docs sync | [#10369](https://github.com/PurHur/php-compiler/issues/10369) | README, development-status, examples README, capability matrix (**1555** builtins) |
@@ -50,7 +50,7 @@ permalink: /development-status.html
### Still open (high signal)
- **MCJIT execute** — `bin/jit.php -r` SIGSEGV ([#98](https://github.com/PurHur/php-compiler/issues/98))
-- **Literal spine ratio** — **6513/6513** ✅ (Jul 2026)
+- **Literal spine ratio** — **6517/6517** ✅ (Jul 2026)
- **Compile-spine stub retirement** — shrink `PHP_COMPILER_SELFHOST_AOT` on M3 allowlist ([#1402](https://github.com/PurHur/php-compiler/issues/1402))
- **007-ThrowsWeb AOT execute** — invalid POST segfault at runtime (link OK; slice `EXAMPLES_AOT_SMOKE_ONLY=007`)
- **LLVM 14+ upgrade** — experimental `script/install-llvm14.sh` ([#174](https://github.com/PurHur/php-compiler/issues/174))
@@ -62,7 +62,7 @@ permalink: /development-status.html
- **`phpc` CLI** — `run`, `serve`, `build`, `deploy`, `lint`, `test`, `init`, `doctor`
- **Examples 000–009** — VM and AOT link/execute for the curated web subset
- **Self-host M0** — `compiler_minimal bundle OK` ✅
-- **Self-host M2** — spine **6513/6513** ✅; native link + lint ✅
+- **Self-host M2** — spine **6517/6517** ✅; native link + lint ✅
- **Self-host M3** — HelloWorld strict `emit_path=native` ✅ ([#1493](https://github.com/PurHur/php-compiler/issues/1493)); inventory argv `bin/compile.php` ✅ ([#3024](https://github.com/PurHur/php-compiler/issues/3024) closed); compile-smoke strict native ✅ ([#1937](https://github.com/PurHur/php-compiler/issues/1937))
- **Self-host M4** — `make bootstrap-loop-probe` full ladder ✅; gen-2→gen-3 full-spine recompile ✅
- **Self-host M3–M5** — vendor prelink **3/3** ✅; **`make north-star5-verify-fast`** daily ✅; VM probe ~**20ms**. **`--strict` red** ([#21417](https://github.com/PurHur/php-compiler/issues/21417)) and **M3/M4 emit paths are prelinked blob COPIES, not native compiles** ([#21860](https://github.com/PurHur/php-compiler/issues/21860)) — the byte-identical gen-0/gen-2/gen-3 result follows from copying and is not fixpoint evidence
@@ -92,7 +92,7 @@ See [`docs/bootstrap-selfhost.md`](https://github.com/PurHur/php-compiler/blob/m
|-----------|--------|
| **M0** — Small `lib/` bundle runs | ✅ |
| **M1** — Compiler-shaped bundle + compile-smoke | ✅ |
-| **M2** — Spine toward full inventory | ✅ **6513** / **6513** |
+| **M2** — Spine toward full inventory | ✅ **6517** / **6517** |
| **M3** — Native compiles PHP (no Zend emit) | ✅ Smoke + inventory argv driver strict native |
| **M4** — Bootstrap loop (next revision) | ✅ `bootstrap-loop-probe` full ladder |
| **M5** — Full self-host, no `vendor/` cold boot | ✅ Presenter strict + compiled-only empty `build/` cold boot ([#3053](https://github.com/PurHur/php-compiler/issues/3053)) |
diff --git a/docs/pages/index.html b/docs/pages/index.html
index 31cdce691e..c8eedb8b46 100644
--- a/docs/pages/index.html
+++ b/docs/pages/index.html
@@ -70,7 +70,7 @@ A compiler for PHP in PHP that compiles itself
VM + JIT + AOT
Closures · try/catch
321 builtins
- Spine **6513** / **6513**
+ Spine **6517** / **6517**
M5 strict ✅
M3 strict emit
MCJIT execute
@@ -391,7 +391,7 @@ Self-host progress
fix/spine-aot-jit-blockers @ a8cffaa0e (15 Jun 2026, LLVM 9).
- M2 spine SSOT: php script/bootstrap-spine-count.php → **6513** / **6513** Phase A inventory (literal coverage ✅).
+ M2 spine SSOT: php script/bootstrap-spine-count.php → **6517** / **6517** Phase A inventory (literal coverage ✅).
M4: make bootstrap-loop-probe full ladder ✅.
M5: make north-star5-verify-fast ✅ daily; --strict pre-merge; VM driver probe ~20ms in CI loops.
Remaining: MCJIT execute ([#98](https://github.com/PurHur/php-compiler/issues/98)); honest PHP main() in full spine AOT (native bundle-OK probe is bootstrap smoke).
@@ -416,7 +416,7 @@
M0–M1
✓
M2
- Spine **6513** / **6513** Phase A inventory — literal coverage ✅; native link + lint ✅
+
Spine **6517** / **6517** Phase A inventory — literal coverage ✅; native link + lint ✅
(#8559).
@@ -437,7 +437,7 @@ M4
✓
M5
Vendor prelink 3/3 ✅; committed .o cold boot ✅;
- north-star5-verify-fast ✅ daily; --strict pre-merge; spine **6513** / **6513**; prelinked gen-0 refreshed;
+ north-star5-verify-fast ✅ daily; --strict pre-merge; spine **6517** / **6517**; prelinked gen-0 refreshed;
fast VM execute probe (~20ms); compiled-only cold boot via BOOTSTRAP_M5_NO_ZEND=1 ✅
(#3053,
#8559,
@@ -494,7 +494,7 @@
Get involved
PHP compare ·
Getting started
-
+
diff --git a/docs/roadmap-wave3.md b/docs/roadmap-wave3.md
index d443af0abf..962d85fc26 100644
--- a/docs/roadmap-wave3.md
+++ b/docs/roadmap-wave3.md
@@ -1,6 +1,6 @@
# Roadmap wave 3 tracker (#1354–#1379)
-> **Wave 3 complete on master (May 2026):** language **6513/6513** + stdlib **6513/6513** ([#1380](https://github.com/PurHur/php-compiler/issues/1380)). Phase-2 / JIT-only deferrals: [#1936](https://github.com/PurHur/php-compiler/issues/1936) (attributes reflection), [#1776](https://github.com/PurHur/php-compiler/issues/1776) (stdlib JIT audit), [#1238](https://github.com/PurHur/php-compiler/issues/1238).
+> **Wave 3 complete on master (May 2026):** language **6517/6517** + stdlib **6517/6517** ([#1380](https://github.com/PurHur/php-compiler/issues/1380)). Phase-2 / JIT-only deferrals: [#1936](https://github.com/PurHur/php-compiler/issues/1936) (attributes reflection), [#1776](https://github.com/PurHur/php-compiler/issues/1776) (stdlib JIT audit), [#1238](https://github.com/PurHur/php-compiler/issues/1238).
Living status for the **25 issues** filed May 2026 toward full PHP language + stdlib coverage. Umbrella: [#1380](https://github.com/PurHur/php-compiler/issues/1380). North stars: [#1044](https://github.com/PurHur/php-compiler/issues/1044), [#1492](https://github.com/PurHur/php-compiler/issues/1492) (self-host; was [#1056](https://github.com/PurHur/php-compiler/issues/1056)).
@@ -19,7 +19,7 @@ Regenerate capability truth: `php script/capability-matrix.php`, `php script/cap
Related merges outside this wave: `goto` ([#1228](https://github.com/PurHur/php-compiler/issues/1228) / [#1333](https://github.com/PurHur/php-compiler/pull/1333)), anonymous classes ([#1233](https://github.com/PurHur/php-compiler/issues/1233) / [#1386](https://github.com/PurHur/php-compiler/pull/1386)).
-**M2 spine:** **6513** / **6513** (`php script/bootstrap-spine-count.php`) — full Phase A inventory in `compiler_lib_spine_smoke`; coverage sync ✅ (`check-selfhost-spine-coverage-sync.php`). Native spine **link** + **lint** ✅ ([#2134](https://github.com/PurHur/php-compiler/issues/2134), [#8559](https://github.com/PurHur/php-compiler/issues/8559)). **M5 daily gate:** `make north-star5-verify-fast` + VM probe ~20ms ([#2201](https://github.com/PurHur/php-compiler/issues/2201)); `--strict` pre-merge only. M4 gen-2→gen-3 recompile ✅. Target doc: [self-host-target.md](self-host-target.md)
+**M2 spine:** **6517** / **6517** (`php script/bootstrap-spine-count.php`) — full Phase A inventory in `compiler_lib_spine_smoke`; coverage sync ✅ (`check-selfhost-spine-coverage-sync.php`). Native spine **link** + **lint** ✅ ([#2134](https://github.com/PurHur/php-compiler/issues/2134), [#8559](https://github.com/PurHur/php-compiler/issues/8559)). **M5 daily gate:** `make north-star5-verify-fast` + VM probe ~20ms ([#2201](https://github.com/PurHur/php-compiler/issues/2201)); `--strict` pre-merge only. M4 gen-2→gen-3 recompile ✅. Target doc: [self-host-target.md](self-host-target.md)
## Language (#1354–#1366)
@@ -69,4 +69,4 @@ Related merges outside this wave: `goto` ([#1228](https://github.com/PurHur/php-
---
-**Wave 3 close-out (May 2026):** language **6513/6513**, stdlib **6513/6513** on master. Do not reopen [#1354](https://github.com/PurHur/php-compiler/issues/1354)–[#1379](https://github.com/PurHur/php-compiler/issues/1379) for phase-1 gaps — use phase-2 trackers [#1936](https://github.com/PurHur/php-compiler/issues/1936) (attributes reflection), [#1776](https://github.com/PurHur/php-compiler/issues/1776) (stdlib JIT audit), [#1238](https://github.com/PurHur/php-compiler/issues/1238).
+**Wave 3 close-out (May 2026):** language **6517/6517**, stdlib **6517/6517** on master. Do not reopen [#1354](https://github.com/PurHur/php-compiler/issues/1354)–[#1379](https://github.com/PurHur/php-compiler/issues/1379) for phase-1 gaps — use phase-2 trackers [#1936](https://github.com/PurHur/php-compiler/issues/1936) (attributes reflection), [#1776](https://github.com/PurHur/php-compiler/issues/1776) (stdlib JIT audit), [#1238](https://github.com/PurHur/php-compiler/issues/1238).
diff --git a/docs/self-host-target.md b/docs/self-host-target.md
index 0b98066e0a..00538dadc0 100644
--- a/docs/self-host-target.md
+++ b/docs/self-host-target.md
@@ -34,8 +34,8 @@ That is **M5**. Everything below is the honest path from today’s bootstrap to
| Layer | Today | Target |
|-------|-------|--------|
| **Bootstrap driver** | Prelinked gen-0 refreshed via honest inventory argv emit; native `build/bin-compile-aot-inventory` for M4/M5 | Compiled `bin/compile.php` only |
-| **Bundle size** | **6513/6513** literal Phase A inventory in spine smoke | Full vm.php closure |
-| **Inventory coverage** | **6513** / **6513** ✅ | Full closure |
+| **Bundle size** | **6517/6517** literal Phase A inventory in spine smoke | Full vm.php closure |
+| **Inventory coverage** | **6517** / **6517** ✅ | Full closure |
| **HelloWorld** | ✅ `emit_path=native` via gen-0 argv emit helper (`DRIVER -o OUT SOURCE`; [#22178](https://github.com/PurHur/php-compiler/issues/22178)) | Native compile for arbitrary PHP |
| **Bootstrap loop (M4)** | `make bootstrap-loop-probe` full ladder ✅ — gen-1→gen-2, gen-2→gen-3 full spine, full-revision argv | Native full revision rebuild |
| **Vendor** | **3/3** vendor `object_ok`; committed `.o` cold boot without `vendor/` ✅; `make north-star5-verify-fast` daily ✅; `--strict` ❌ **red at step 4a2** ([#21417](https://github.com/PurHur/php-compiler/issues/21417)) | No Zend `vendor/autoload.php` at bootstrap |
@@ -56,8 +56,8 @@ That is **M5**. Everything below is the honest path from today’s bootstrap to
| M4 `make bootstrap-selfhost-full-revision-probe` | ✅ gen-2 inventory argv → gen-3 + fixture smoke ([#2880](https://github.com/PurHur/php-compiler/issues/2880)) |
| M4 `make bootstrap-loop-gen2-recompile-spine` | ✅ gen-2→gen-3 full spine native argv |
| M4 `make bootstrap-loop-probe` | 🚧 **DEGRADED** — gen-1→gen-2 is a prelinked sidecar COPY, not a native compile ([#21860](https://github.com/PurHur/php-compiler/issues/21860)); gen-2→gen-3 + full-revision then run on that copy, so byte-comparing gen-0/gen-2/gen-3 proves nothing. Require a real emit: `BOOTSTRAP_M4_REQUIRE_NATIVE_EMIT=1` ([#1498](https://github.com/PurHur/php-compiler/issues/1498)) |
-| `make bootstrap-aot-link` | ✅ **6513/6513** |
-| `make bootstrap-inventory-check` | ✅ **6513/6513** Phase A files, **0** source blockers |
+| `make bootstrap-aot-link` | ✅ **6517/6517** |
+| `make bootstrap-inventory-check` | ✅ **6517/6517** Phase A files, **0** source blockers |
| `make north-star5-verify-fast` | ✅ daily M5 PR gate (~1–2 min) |
| `make north-star5-verify ARGS=--strict` | ❌ **red on master** — step 4a2 `bootstrap-selfhost-driver-smoke`: standalone AOT emit leaves the LLVM builder detached ([#21417](https://github.com/PurHur/php-compiler/issues/21417)). Steps 1–4a pass. Was masked by a 4096M OOM ([#21104](https://github.com/PurHur/php-compiler/issues/21104)) and a `trigger_error` `ValueError` ([#21400](https://github.com/PurHur/php-compiler/issues/21400)), both now fixed |
@@ -69,7 +69,7 @@ That is **M5**. Everything below is the honest path from today’s bootstrap to
|-----------|----------------|--------|-----|
| **M0** | AOT can link a **small** honest `lib/` subset | ✅ | 100% |
| **M1** | Bundle is **compiler-shaped** (lint + compile-smoke) | ✅ | 100% |
-| **M2** | Spine grows toward full `bin/vm.php` inventory | ✅ **6513** / **6513** | **100%** |
+| **M2** | Spine grows toward full `bin/vm.php` inventory | ✅ **6517** / **6517** | **100%** |
| **M3** | Self-host binary **compiles external PHP** (HelloWorld) without Zend emit | ✅ `emit_path=native` via gen-0 argv helper ([#22178](https://github.com/PurHur/php-compiler/issues/22178)) | **~90%** |
| **M4** | Self-host binary **rebuilds** the next compiler tree | 🚧 ladder runs but gen-1→gen-2 is a COPY ([#21860](https://github.com/PurHur/php-compiler/issues/21860)) | **~60%** |
| **M5** | Full self-host; Zend retired from loop | 🚧 `north-star5-verify-fast` daily ✅; **`--strict` red at step 4a2** ([#21417](https://github.com/PurHur/php-compiler/issues/21417)); `BOOTSTRAP_M5_NO_ZEND=1` empty `build/` ([#3053](https://github.com/PurHur/php-compiler/issues/3053)) | **~75%** |
@@ -80,7 +80,7 @@ That is **M5**. Everything below is the honest path from today’s bootstrap to
| Indicator | Formula | Jul 2026 |
|-----------|---------|----------|
-| **M2 spine progress** | `require_once` units in `compiler_lib_spine_smoke` ÷ Phase A inventory file count | **6513** / **6513** (`php script/bootstrap-spine-count.php`) |
+| **M2 spine progress** | `require_once` units in `compiler_lib_spine_smoke` ÷ Phase A inventory file count | **6517** / **6517** (`php script/bootstrap-spine-count.php`) |
| **Public “Self-host” row** | Same M2 ratio until M3–M5 gates add weight ([`development-status.md`](pages/development-status.md)) | **~97%** |
| **M5 vendor prelink** | `object_ok` packages ÷ 3 | **3 / 3** (cfg, types, llvm) |
| **Composite (internal)** | Milestone weights in table above (M0–M1 = 100%, M2 = spine %, M3–M5 = gate %) | **~65%** |
@@ -134,7 +134,7 @@ Parallel batches ([#1419](https://github.com/PurHur/php-compiler/issues/1419), [
| Entry | Units | Role |
|-------|------:|------|
| `test/selfhost/compiler_minimal/main.php` | **108** | M0 core |
-| `test/selfhost/compiler_lib_spine_smoke/main.php` | **6513/6513** Phase A | M2 complete ([#8559](https://github.com/PurHur/php-compiler/issues/8559)) |
+| `test/selfhost/compiler_lib_spine_smoke/main.php` | **6517/6517** Phase A | M2 complete ([#8559](https://github.com/PurHur/php-compiler/issues/8559)) |
| `test/selfhost/compiler_helloworld_smoke/` | — | M3 probe + compile driver |
| `test/selfhost/bootstrap_loop_smoke/` | — | M4 scaffold (gen-1→gen-2→gen-3 loop; [#1498](https://github.com/PurHur/php-compiler/issues/1498)) |
diff --git a/prelinked/bootstrap-gen0/.bootstrap_lowering_source.sha b/prelinked/bootstrap-gen0/.bootstrap_lowering_source.sha
index 1120578654..b7131a6d5e 100644
--- a/prelinked/bootstrap-gen0/.bootstrap_lowering_source.sha
+++ b/prelinked/bootstrap-gen0/.bootstrap_lowering_source.sha
@@ -1 +1 @@
-90a045b515c59bdd03802fdde1ff929fedf170dd9ea350f23416966620d85293
\ No newline at end of file
+ca66dbcca6a70e3dd63c2b13622023c3ad99aa111952073cba291dfeba2875d4
\ No newline at end of file
diff --git a/prelinked/bootstrap-gen0/.m3_compiler_lib_sidecar.sha b/prelinked/bootstrap-gen0/.m3_compiler_lib_sidecar.sha
index 750b103543..7b89a8cbac 100755
--- a/prelinked/bootstrap-gen0/.m3_compiler_lib_sidecar.sha
+++ b/prelinked/bootstrap-gen0/.m3_compiler_lib_sidecar.sha
@@ -1 +1 @@
-faf7dd95bc3eb086aaf23fab97a099c600ccdfc9
\ No newline at end of file
+2c4fb883a7625533c221e000e2c4808692f814cd
\ No newline at end of file
diff --git a/prelinked/bootstrap-gen0/manifest.json b/prelinked/bootstrap-gen0/manifest.json
index 653c593540..0828b935c8 100644
--- a/prelinked/bootstrap-gen0/manifest.json
+++ b/prelinked/bootstrap-gen0/manifest.json
@@ -1,6 +1,6 @@
{
"version": 1,
- "generated_at": "2026-07-24T21:14:00+00:00",
+ "generated_at": "2026-07-24T23:32:47+00:00",
"driver": "prelinked/bootstrap-gen0/bin-compile-aot",
"compiler_minimal_sidecar": "prelinked/bootstrap-gen0/compiler_minimal_aot_blob",
"compiler_lib_sidecar": "prelinked/bootstrap-gen0/compiler_lib_aot_blob",
@@ -29,5 +29,5 @@
],
"build_target": "inventory argv emit (Zend native rebuild, BOOTSTRAP_INVENTORY_DRIVER_USE_PRELINKED=0)",
"issue": "#3053, #1492, #2880, #3046, #8713",
- "lowering_source_fingerprint": "90a045b515c59bdd03802fdde1ff929fedf170dd9ea350f23416966620d85293"
+ "lowering_source_fingerprint": "ca66dbcca6a70e3dd63c2b13622023c3ad99aa111952073cba291dfeba2875d4"
}
diff --git a/test/selfhost/compiler_lib_spine_smoke/main.php b/test/selfhost/compiler_lib_spine_smoke/main.php
index 6735daef6e..c05a4bc466 100644
--- a/test/selfhost/compiler_lib_spine_smoke/main.php
+++ b/test/selfhost/compiler_lib_spine_smoke/main.php
@@ -4462,6 +4462,7 @@
require_once __DIR__.'/../../../lib/Compiler/ClassCompileRegistry.php';
require_once __DIR__.'/../../../lib/Compiler/ClassConstDuplicateCheck.php';
require_once __DIR__.'/../../../lib/Compiler/ClassConstValueFold.php';
+require_once __DIR__.'/../../../lib/Compiler/ClassConstVisibilityInheritCheck.php';
require_once __DIR__.'/../../../lib/Compiler/CompileFatal.php';
require_once __DIR__.'/../../../lib/Compiler/CompileTimeEnumCase.php';
require_once __DIR__.'/../../../lib/Compiler/CompileTimeNew.php';
diff --git a/test/unit/BootstrapSelfhostBundleTest.php b/test/unit/BootstrapSelfhostBundleTest.php
index a348222d97..bf5527e03e 100644
--- a/test/unit/BootstrapSelfhostBundleTest.php
+++ b/test/unit/BootstrapSelfhostBundleTest.php
@@ -537,7 +537,7 @@ public function testCompilerLibSpineSmokeBundleUnitCountAndKeyUnits(): void
$this->assertFileExists($entry);
$contents = (string) file_get_contents($entry);
$count = bootstrap_spine_counts(self::$root)['spine'];
- $this->assertSame(6513, $count, 'M2 spine require_once units track Phase A inventory (#8559, #9234, #11629, #18550)');
+ $this->assertSame(6517, $count, 'M2 spine require_once units track Phase A inventory (#8559, #9234, #11629, #18550)');
foreach (self::LIB_SPINE_SMOKE_NEW_UNITS as $unit) {
$this->assertStringContainsString(
"require_once __DIR__.'/../../../{$unit}';",