Repository navigation
Stdlib/AOT: ob_get_contents/get_length/end_clean user-script link (#4914) - #17653
Merged
Merged
Conversation
…#4914) Extend ObOutputExecCaptureLlvm with LLVM bridges for the ob read/discard ABI symbols that user-script AOT already lowered but never linked, and lazy-link them from JitOb* lowering via ObOutputRuntime. Co-authored-by: Cursor <cursoragent@cursor.com>
This was referenced Jul 10, 2026
Stdlib: ob_get_contents()/ob_get_length()/ob_end_clean() — JIT/AOT lowering (phase 2 of #3236)
#4914
Closed
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
PHP_COMPILER_AOT_USER_SCRIPT=1) loweredob_get_contents(),ob_get_length(),ob_end_clean(), andob_get_level()but link failed with undefined__phpc_ob_*symbols — JIT/VM were already green viaObOutputJitHelper/ nested JIT.ObOutputExecCaptureLlvm(php-srcext/standard/output.cparity) with LLVM bridges on the existingObStorageGlobalschar-buffer stack for read/discard ABI symbols.JitObGetContents/JitObGetLength/JitObEndClean/JitObGetLevelthroughObOutputRuntime::ensureObStackLinked().php-src reference
ext/standard/output.c—php_ob_get_contents,php_ob_get_length,php_ob_end_clean,php_ob_get_levelPHP implementation
lib/JIT/Builtin/ObOutputExecCaptureLlvm.php— LLVM emit (no new C runtime)lib/JIT/Builtin/ObOutputRuntime.php— lazy read-API link for deferred nested-JIT user-script AOText/standard/JitOb*.php— ensure stack linked before ABI lookupVerification
Closes #4914
Made with Cursor