Runtime shrink: lazy HashTable strtol decl (peer #35626 / #31988) - #35747
Merged
Merged
Conversation
HashTable::implement no longer calls ensureLibcStrtol on every full load; numeric-string key lookup ensures the module-local strtol(3) decl only when that path is emitted. Reduces cold-build LLVM surface for hello-world (#31894 / #32122 .1 mint class). Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
strtol(3)on everyHashTable::implement()full load — onlytryLookupPackedIntFromStringKey()(Zend numeric-string → int key fallback, php-srczend_hash.c/ Stdlib: array numeric-string keys — "1" matches int key 1 (Zend zend_hash.c parity) #3679) callsensureLibcStrtol()beforelookupFunction('strtol').strcoll/strnatcmp) and AOT DOM: fix DTD isId regression and setIdAttributeNode(null) LLVM verify (#34821, #33758) #35648 (undef-key trigger_error): thin hello-world AOT skips the decl during HashTable init, avoiding the Fix: AOT link fails for EVERY binary — duplicate memset declaration #31894 / Release v1.1.0: fix cold-build-check compile_failed on hello world (LLVM Module.php line 180; re-#24302) #32122*.1mint class on cold-build.Root cause
HashTable::implement()eagerly calledensureLibcStrtol()at entry even thoughstrtolis only used on the numeric-string key lookup path. Every compile (including hello-world) paid for a libc extern that most scripts never touch.Verification
Not run:
./script/release-readiness.sh(pillar 1 already green on master this run), full differential sweep,ci-fast.sh(006 benchmark README drift pre-existing on master).Made with Cursor