[vm] Canonicalize empty Class::interfaces_.
TEST=ci
Change-Id: I921eb1796b5e142aba8a8f8649a0105ef0e396e4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/243380
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc
index bab3326..a9835fa 100644
--- a/runtime/vm/kernel_loader.cc
+++ b/runtime/vm/kernel_loader.cc
@@ -1377,15 +1377,19 @@
// Build implemented interface types
intptr_t interface_count = helper_.ReadListLength();
- const Array& interfaces =
- Array::Handle(Z, Array::New(interface_count, Heap::kOld));
- for (intptr_t i = 0; i < interface_count; i++) {
- const AbstractType& type =
- T.BuildTypeWithoutFinalization(); // read ith type.
- interfaces.SetAt(i, type);
+ if (interface_count == 0) {
+ klass->set_interfaces(Object::empty_array());
+ } else {
+ const Array& interfaces =
+ Array::Handle(Z, Array::New(interface_count, Heap::kOld));
+ for (intptr_t i = 0; i < interface_count; i++) {
+ const AbstractType& type =
+ T.BuildTypeWithoutFinalization(); // read ith type.
+ interfaces.SetAt(i, type);
+ }
+ klass->set_interfaces(interfaces);
}
class_helper->SetJustRead(ClassHelper::kImplementedClasses);
- klass->set_interfaces(interfaces);
if (class_helper->is_abstract()) klass->set_is_abstract();