Skip to content

AOT: ReflectionExtension::isPersistent/isTemporary thin proxies (#34154) - #34159

Closed
PurHur wants to merge 1 commit into
masterfrom
fix/34154-reflection-extension-ispersistent-aot
Closed

AOT: ReflectionExtension::isPersistent/isTemporary thin proxies (#34154)#34159
PurHur wants to merge 1 commit into
masterfrom
fix/34154-reflection-extension-ispersistent-aot

Conversation

@PurHur

@PurHur PurHur commented Aug 23, 2026

Copy link
Copy Markdown
Owner

Summary

  • Thin AOT had no ReflectionExtension::isPersistent() / isTemporary() proxies — ExternalMethod returned NULL.
  • Bake loaded-extension lowercase names → true for isPersistent (thin AOT __compiler_extension_loaded is 0 under HELPER_RUNTIME_O=0); isTemporary always false (no dl()).
  • Register proxies in Context.php; spine requires for Call + Runtime.

php-src: ext/reflection/php_reflection.czim_ReflectionExtension_isPersistent / isTemporary.

Closes #34154

Test plan

  • ./script/aot-smoke.sh8 passed, 0 failed
  • Repro Zend/VM/AOT: test/repro/issue_34154_reflection_extension_ispersistent_aot.phppersistent=1 temporary=0
  • ./script/phpunit.sh --filter Issue34154ReflectionExtensionIsPersistentAotTest → OK (4 tests, 17 assertions)
  • php script/check-selfhost-spine-coverage-sync.php → OK

Not covered: full compliance suite, differential sweep, ci-fast.sh, north-star5-verify --strict.

Made with Cursor

Bake loaded-extension names for isPersistent; isTemporary always false (no dl()).
Closes #34154.

Co-authored-by: Cursor <cursoragent@cursor.com>
@PurHur

PurHur commented Aug 23, 2026

Copy link
Copy Markdown
Owner Author

Superseded by already-merged #34156 (same #34154). Closing duplicate.

@PurHur PurHur closed this Aug 23, 2026
@PurHur
PurHur deleted the fix/34154-reflection-extension-ispersistent-aot branch August 23, 2026 06:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

AOT: ReflectionExtension::isPersistent/isTemporary return NULL — thin AOT omits proxies (ext/reflection/php_reflection.c)

1 participant