Skip to content

php-in-php: drop Context ensureMinimalUserStandaloneBodies always-on StringTriggerError — lazy at call sites #34641

Description

@PurHur

Category

Foundation · php-in-php · runtime-shrink · cold-build / #32122 class

Problem

Context::ensureMinimalUserStandaloneBodies() still eagerly NestedJIT/links StringTriggerError on every thin AOT user-script init (hello-world / aot-smoke path), even when the script never calls trigger_error / undefined-array-key / related warning ABIs:

  • StringTriggerError::ensureStandaloneBodiesStringTriggerErrorJit::implement (NestedJIT / bridge)

Same always-on NestedJIT vs Runtime ABI drift / cold-build surface class as closed #34631 / #34621 / #34612 / #34605. Leftover Context NestedJIT vs Runtime ABI drift mints *.1 (#31894 / #32122).

Call sites already StringTriggerError::ensureLinked before lookup (ext/standard/trigger_error_.php, JitBuiltinWarning, JitIncDec, HashTableResourceKeyLlvm, …). Peer #33234 dropped Type always-on shells for the same reason.

php-src reference

  • php/php-src Zend/zend_error.cphp_error_docref / trigger_error path
  • Peer: #33234 Type always-on drop; #34631 LastError lazy from ensureMinimal

PHP implementation target

  • lib/JIT/Context.php ensureMinimalUserStandaloneBodies — remove StringTriggerError::ensureStandaloneBodies
  • Keep full standalone ensureFullStandaloneBodies linking (after AssertFail peers)
  • Update ContextMinimalStandaloneLazyLastErrorRuntimeShrinkTest keep-list
  • Unit shrink test + ./script/aot-smoke.sh 8/8

Done when

  • ensureMinimalUserStandaloneBodies does not call StringTriggerError::ensureStandaloneBodies
  • Call-site ensureLinked coverage remains for trigger_error / undef-key paths
  • ./script/aot-smoke.sh stays 8/8
  • Targeted unit shrink test green

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:compilerCompiler / CFG / JITenhancementNew feature or requestimplementation-readySpec complete: repro, php-src ref, done-when — safe for workers to claimphase-0:FoundationPhase 0 – foundation & DevEx

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions