Move ArtFields and ArtMethods to be a length prefixed array
Fixes race conditions between changing method and fields arrays
being seen in the wrong order by the GC.
Bug: 22832610
Change-Id: Ia21d6698f73ba207a6392c3d6b9be2658933073f
diff --git a/runtime/mirror/field.cc b/runtime/mirror/field.cc
index 02e4484..ff6847c 100644
--- a/runtime/mirror/field.cc
+++ b/runtime/mirror/field.cc
@@ -61,10 +61,10 @@
DCHECK_EQ(declaring_class->NumStaticFields(), 2U);
// 0 == Class[] interfaces; 1 == Class[][] throws;
if (GetDexFieldIndex() == 0) {
- return &declaring_class->GetSFields()[0];
+ return &declaring_class->GetSFieldsPtr()->At(0);
} else {
DCHECK_EQ(GetDexFieldIndex(), 1U);
- return &declaring_class->GetSFields()[1];
+ return &declaring_class->GetSFieldsPtr()->At(1);
}
}
mirror::DexCache* const dex_cache = declaring_class->GetDexCache();