From ed2899ea4ac32c59caf8a34e6c9b015d8f7de0e2 Mon Sep 17 00:00:00 2001 From: Ryan Macnak Date: Fri, 2 Dec 2022 18:45:03 +0000 Subject: [PATCH] [vm] Don't unroll initialization code based on macro lists. -30k (-0.07%) out/ReleaseX64/exe.stripped/dart -29k (-0.25%) out/ReleaseX64/exe.stripped/dart_precompiled_runtime TEST=ci Change-Id: I7c05705ada10dcaa388d9c8a8abd4edd9495cdc0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/273009 Reviewed-by: Alexander Aprelev Commit-Queue: Ryan Macnak --- runtime/vm/raw_object_fields.cc | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/runtime/vm/raw_object_fields.cc b/runtime/vm/raw_object_fields.cc index fd2fff67219..61b4cffa742 100644 --- a/runtime/vm/raw_object_fields.cc +++ b/runtime/vm/raw_object_fields.cc @@ -299,13 +299,13 @@ bool is_compressed_pointer() { } void OffsetsTable::Init() { + static const OffsetsTable::OffsetsTableEntry table[] { #define DEFINE_OFFSETS_TABLE_ENTRY(class_name, field_name) \ - field_offsets_table.Add( \ - {class_name::kClassId, #field_name, \ - is_compressed_pointer(), \ - OFFSET_OF(Untagged##class_name, field_name)}); + {class_name::kClassId, #field_name, \ + is_compressed_pointer(), \ + OFFSET_OF(Untagged##class_name, field_name)}, - COMMON_CLASSES_AND_FIELDS(DEFINE_OFFSETS_TABLE_ENTRY) + COMMON_CLASSES_AND_FIELDS(DEFINE_OFFSETS_TABLE_ENTRY) #if !defined(PRODUCT) NON_PRODUCT_CLASSES_AND_FIELDS(DEFINE_OFFSETS_TABLE_ENTRY) #endif @@ -327,6 +327,11 @@ void OffsetsTable::Init() { #endif #undef DEFINE_OFFSETS_TABLE_ENTRY + }; + + for (const OffsetsTableEntry& entry : table) { + field_offsets_table.Add(entry); + } } void OffsetsTable::Cleanup() {