diff options
author | Mathieu Chartier <mathieuc@google.com> | 2014-02-08 16:20:58 -0800 |
---|---|---|
committer | Mathieu Chartier <mathieuc@google.com> | 2014-02-08 16:26:12 -0800 |
commit | 5bb99037bef70784ae4630c2e4b81688d2a18621 (patch) | |
tree | 7c01146719c9bd445f983d470980206952d8719b /runtime/interpreter/interpreter.cc | |
parent | 9c7f35435b51cdeae8665aabb8e63392105db787 (diff) | |
download | art-5bb99037bef70784ae4630c2e4b81688d2a18621.zip art-5bb99037bef70784ae4630c2e4b81688d2a18621.tar.gz art-5bb99037bef70784ae4630c2e4b81688d2a18621.tar.bz2 |
Fix CreateMultiArray to be compaction safe.
It used to be compaction safe before moving classes was enabled.
Added missing SIRTs.
Change-Id: I92963ed71fa6d2a20d16ec0e400b8fa0e41ac196
Diffstat (limited to 'runtime/interpreter/interpreter.cc')
-rw-r--r-- | runtime/interpreter/interpreter.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/runtime/interpreter/interpreter.cc b/runtime/interpreter/interpreter.cc index 02a9aa6..922e642 100644 --- a/runtime/interpreter/interpreter.cc +++ b/runtime/interpreter/interpreter.cc @@ -57,7 +57,10 @@ static void UnstartedRuntimeJni(Thread* self, ArtMethod* method, } else if (name == "int java.lang.String.fastIndexOf(int, int)") { result->SetI(receiver->AsString()->FastIndexOf(args[0], args[1])); } else if (name == "java.lang.Object java.lang.reflect.Array.createMultiArray(java.lang.Class, int[])") { - result->SetL(Array::CreateMultiArray(self, reinterpret_cast<Object*>(args[0])->AsClass(), reinterpret_cast<Object*>(args[1])->AsIntArray())); + SirtRef<mirror::Class> sirt_class(self, reinterpret_cast<Object*>(args[0])->AsClass()); + SirtRef<mirror::IntArray> sirt_dimensions(self, + reinterpret_cast<Object*>(args[1])->AsIntArray()); + result->SetL(Array::CreateMultiArray(self, sirt_class, sirt_dimensions)); } else if (name == "java.lang.Object java.lang.Throwable.nativeFillInStackTrace()") { ScopedObjectAccessUnchecked soa(self); result->SetL(soa.Decode<Object*>(self->CreateInternalStackTrace(soa))); |