fix(codegen): omit unused object allocator storage

master
韩天峰 2 days ago
parent 87c7eda964
commit 30e2bb6121
  1. 14
      phpunit/src/NewObjectCodegenTest.php
  2. 5
      src/Translator.php

@ -70,6 +70,20 @@ final class NewObjectCodegenTest extends \BaseTest
);
}
public function testCreateObjectFunctionStorageIsOnlyDeclaredForClassesThatUseIt(): void
{
[, $extension] = $this->compileFixtureAndExtension();
self::assertStringNotContainsString(
'static zend_object* (*create_object_KnownNewObjectCodegen)',
$extension,
);
self::assertStringContainsString(
'static zend_object* (*create_object_RuntimeArrayDefaultCodegen)',
$extension,
);
}
public function testRuntimeArrayDefaultsUseLazyRequestTemplates(): void
{
[, $extension] = $this->compileFixtureAndExtension();

@ -1200,7 +1200,10 @@ CODE;
&& !$classDef->trait
&& !$classDef->enum
) {
$code .= 'static zend_object* (*create_object_' . $classDef->getNamespacedName() . ")(zend_class_entry *class_type);\n";
if ($classDef->requireCtor) {
$code .= 'static zend_object* (*create_object_' . $classDef->getNamespacedName()
. ")(zend_class_entry *class_type);\n";
}
$code .= 'static zend_object_handlers property_handlers_' . $classDef->getNamespacedName() . ";\n";
}
foreach ($classDef->constants as $constant) {

Loading…
Cancel
Save