Category
php-in-php · runtime-shrink (#1492, peer #32855 / re-#32122)
Problem
Builtin\Type::register() still addFunctions empty always-on shells for __compiler_openssl_encrypt, __compiler_openssl_decrypt, __compiler_openssl_encrypt_take_tag, and __compiler_openssl_encrypt_tag_is_null on every JIT/AOT module. OpensslEncryptRuntime already owns these ABIs via bridges, but implementIfMissing still lookupFunctions Type-declared empty decls — leftover Type shells can mint openssl_encrypt.1 when Runtime ABI drift lands (#31894 / #32122 class).
Peer #32855 removed password crypto Type shells with the same declareAbi / getNamedFunction-first shape.
php-src reference
PHP implementation target
lib/JIT/Builtin/OpensslEncryptRuntime.php — declare each ABI module-locally (getNamedFunction first + addFunction when absent); stop depending on Type empty decls via lookupFunction
lib/JIT/Builtin/Type.php — remove always-on openssl_encrypt/decrypt/take_tag/tag_is_null rows; OpensslEncryptRuntime::ensureLinked from Type::initialize
- Keep
OpensslEncryptCrypto / OpensslEncryptJitHelper / JitOpensslEncrypt user-script path
- unit shrink test peer
TypeDeadPasswordCryptoAbiRuntimeShrinkTest
Done when
Parent
Category
php-in-php· runtime-shrink (#1492, peer #32855 / re-#32122)Problem
Builtin\Type::register()stilladdFunctions empty always-on shells for__compiler_openssl_encrypt,__compiler_openssl_decrypt,__compiler_openssl_encrypt_take_tag, and__compiler_openssl_encrypt_tag_is_nullon every JIT/AOT module.OpensslEncryptRuntimealready owns these ABIs via bridges, butimplementIfMissingstilllookupFunctions Type-declared empty decls — leftover Type shells can mintopenssl_encrypt.1when Runtime ABI drift lands (#31894 / #32122 class).Peer #32855 removed password crypto Type shells with the same
declareAbi/ getNamedFunction-first shape.php-src reference
ext/openssl/openssl.c—PHP_FUNCTION(openssl_encrypt)/PHP_FUNCTION(openssl_decrypt)PHP implementation target
lib/JIT/Builtin/OpensslEncryptRuntime.php— declare each ABI module-locally (getNamedFunctionfirst +addFunctionwhen absent); stop depending on Type empty decls vialookupFunctionlib/JIT/Builtin/Type.php— remove always-on openssl_encrypt/decrypt/take_tag/tag_is_null rows;OpensslEncryptRuntime::ensureLinkedfromType::initializeOpensslEncryptCrypto/OpensslEncryptJitHelper/JitOpensslEncryptuser-script pathTypeDeadPasswordCryptoAbiRuntimeShrinkTestDone when
Type.phpdoes not always-declare the four openssl_encrypt ABI shellsOpensslEncryptRuntimeowns the ABIs module-locally;Type::initializeensureLinks it./script/aot-smoke.shstays 8/8runtime/*.cParent