diff options
author | Mathieu Chartier <mathieuc@google.com> | 2014-06-05 17:42:53 -0700 |
---|---|---|
committer | Mathieu Chartier <mathieuc@google.com> | 2014-06-06 13:12:17 -0700 |
commit | 61c5ebc6aee2cac1c363de6fbdac25ada1697fdb (patch) | |
tree | 444936c3e3718b692ba7f1981b863190f26b4ed7 /compiler/driver/compiler_driver-inl.h | |
parent | 25c4f6a25b3de9b9d7ca5162f1629753a0b7f003 (diff) | |
download | art-61c5ebc6aee2cac1c363de6fbdac25ada1697fdb.zip art-61c5ebc6aee2cac1c363de6fbdac25ada1697fdb.tar.gz art-61c5ebc6aee2cac1c363de6fbdac25ada1697fdb.tar.bz2 |
Change FieldHelper to use a handle.
Fixed compaction bugs related to FieldHelper::GetType in:
artSet32InstanceFromCode
SetFieldValueImpl
CheckReceiver
Field_set
interpreter::DoFieldPut
MethodVerifier::VerifyISGet
MethodVerifier::VerifyISPut
MethodVerifier::VerifyIGetQuick
Bug: 13077697
Change-Id: I7de9ded2893b5568d43e4daa86fd135bf5508b72
Diffstat (limited to 'compiler/driver/compiler_driver-inl.h')
-rw-r--r-- | compiler/driver/compiler_driver-inl.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/driver/compiler_driver-inl.h b/compiler/driver/compiler_driver-inl.h index 45abfcc..324f717 100644 --- a/compiler/driver/compiler_driver-inl.h +++ b/compiler/driver/compiler_driver-inl.h @@ -135,8 +135,10 @@ inline std::pair<bool, bool> CompilerDriver::IsFastStaticField( } else { // Search dex file for localized ssb index, may fail if field's class is a parent // of the class mentioned in the dex file and there is no dex cache entry. + StackHandleScope<1> hs(Thread::Current()); const DexFile::StringId* string_id = - dex_file->FindStringId(FieldHelper(resolved_field).GetDeclaringClassDescriptor()); + dex_file->FindStringId( + FieldHelper(hs.NewHandle(resolved_field)).GetDeclaringClassDescriptor()); if (string_id != nullptr) { const DexFile::TypeId* type_id = dex_file->FindTypeId(dex_file->GetIndexForStringId(*string_id)); |