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}';",