Make sure that array_iftables_ is initialized when loading from an image.
This fixes test 009-instanceof2.
Change-Id: Ieba95a295e34381aeb16f5950376ff8700b624de
diff --git a/src/class_linker.cc b/src/class_linker.cc
index ff3c6be..c7006df 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -515,6 +515,9 @@
// if possible add new checks there to catch errors early
}
+ CHECK(array_iftable_ != NULL);
+ CHECK(array_interfaces_ != NULL);
+
// disable the slow paths in FindClass and CreatePrimitiveClass now
// that Object, Class, and Object[] are setup
init_done_ = true;
@@ -614,9 +617,11 @@
Object* class_roots_object = spaces[0]->GetImageHeader().GetImageRoot(ImageHeader::kClassRoots);
class_roots_ = class_roots_object->AsObjectArray<Class>();
- // reinit array_interfaces_ from any array class instance, they should all be ==
+ // reinit array_interfaces_ and array_iftable_ from any array class instance, they should all be ==
array_interfaces_ = GetClassRoot(kObjectArrayClass)->GetInterfaces();
DCHECK(array_interfaces_ == GetClassRoot(kBooleanArrayClass)->GetInterfaces());
+ array_iftable_ = GetClassRoot(kObjectArrayClass)->GetIfTable();
+ DCHECK(array_iftable_ == GetClassRoot(kBooleanArrayClass)->GetIfTable());
String::SetClass(GetClassRoot(kJavaLangString));
Field::SetClass(GetClassRoot(kJavaLangReflectField));
@@ -1275,6 +1280,8 @@
// Use the single, global copies of "interfaces" and "iftable"
// (remember not to free them for arrays).
+ CHECK(array_interfaces_ != NULL);
+ CHECK(array_iftable_ != NULL);
new_class->SetInterfaces(array_interfaces_);
new_class->SetIfTable(array_iftable_);