From 476e13a5e9f577daecc254221dba7bc3258a78bc Mon Sep 17 00:00:00 2001 From: Daco Harkes Date: Wed, 18 Jan 2023 21:08:38 +0000 Subject: [PATCH] [vm] Enable annotations on libraries in AOT We have no use cases for this until the dependent CL. TEST=dependent CL Closes: https://github.com/dart-lang/sdk/issues/50539 Change-Id: Iee91f90ddd474cef3b7218def4d3e716ab2639ab Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/272421 Reviewed-by: Martin Kustermann --- runtime/vm/kernel_loader.cc | 4 +++- runtime/vm/object.cc | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc index 8b281b35ac1..bb75cf56b86 100644 --- a/runtime/vm/kernel_loader.cc +++ b/runtime/vm/kernel_loader.cc @@ -1027,7 +1027,9 @@ LibraryPtr KernelLoader::LoadLibrary(intptr_t index) { FinishTopLevelClassLoading(toplevel_class, library, library_index); } - if (FLAG_enable_mirrors && annotation_count > 0) { + // Used for mirrors and allows VM to recognize @pragma annotations on + // libraries. + if (annotation_count > 0) { ASSERT(annotations_kernel_offset > 0); library.AddMetadata(library, annotations_kernel_offset); } diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc index a0757bb2c73..822604492d4 100644 --- a/runtime/vm/object.cc +++ b/runtime/vm/object.cc @@ -4017,7 +4017,9 @@ bool Library::FindPragma(Thread* T, auto Z = T->zone(); auto& lib = Library::Handle(Z); - if (obj.IsClass()) { + if (obj.IsLibrary()) { + lib = Library::Cast(obj).ptr(); + } else if (obj.IsClass()) { auto& klass = Class::Cast(obj); if (!klass.has_pragma()) return false; lib = klass.library();