summaryrefslogtreecommitdiff
path: root/src/compiler/codegen/arm/MethodCodegenDriver.cc
diff options
context:
space:
mode:
author Elliott Hughes <enh@google.com> 2011-09-11 16:14:31 -0700
committer Elliott Hughes <enh@google.com> 2011-09-11 16:14:31 -0700
commitb153906f2cd770ae460a480d3c9eb7ad421ff0ae (patch)
tree127c9d02cc53646798982f85aab86a9ada709f66 /src/compiler/codegen/arm/MethodCodegenDriver.cc
parent61ae414dc086a0437701ab80c1260611a88af04a (diff)
Use the right dex cache in the SGET/SPUT fast paths.
Otherwise we get the wrong types. Change-Id: Ibd5278e0a94c3cb96b9c2f862b0ee6dcfd0bd15e
Diffstat (limited to 'src/compiler/codegen/arm/MethodCodegenDriver.cc')
-rw-r--r--src/compiler/codegen/arm/MethodCodegenDriver.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/compiler/codegen/arm/MethodCodegenDriver.cc b/src/compiler/codegen/arm/MethodCodegenDriver.cc
index a9d77ec4e1..929bbef9ce 100644
--- a/src/compiler/codegen/arm/MethodCodegenDriver.cc
+++ b/src/compiler/codegen/arm/MethodCodegenDriver.cc
@@ -162,7 +162,7 @@ static void genSput(CompilationUnit* cUnit, MIR* mir, RegLocation rlSrc)
art::ClassLinker* class_linker = art::Runtime::Current()->
GetClassLinker();
const art::DexFile& dex_file = class_linker->
- FindDexFile(field->GetDeclaringClass()->GetDexCache());
+ FindDexFile(cUnit->method->GetDeclaringClass()->GetDexCache());
const art::DexFile::FieldId& field_id = dex_file.GetFieldId(fieldIdx);
int typeIdx = field_id.class_idx_;
// Using fixed register to sync with slow path
@@ -220,7 +220,7 @@ static void genSputWide(CompilationUnit* cUnit, MIR* mir, RegLocation rlSrc)
art::ClassLinker* class_linker = art::Runtime::Current()->
GetClassLinker();
const art::DexFile& dex_file = class_linker->
- FindDexFile(field->GetDeclaringClass()->GetDexCache());
+ FindDexFile(cUnit->method->GetDeclaringClass()->GetDexCache());
const art::DexFile::FieldId& field_id = dex_file.GetFieldId(fieldIdx);
int typeIdx = field_id.class_idx_;
// Using fixed register to sync with slow path
@@ -278,7 +278,7 @@ static void genSgetWide(CompilationUnit* cUnit, MIR* mir,
art::ClassLinker* class_linker = art::Runtime::Current()->
GetClassLinker();
const art::DexFile& dex_file = class_linker->
- FindDexFile(field->GetDeclaringClass()->GetDexCache());
+ FindDexFile(cUnit->method->GetDeclaringClass()->GetDexCache());
const art::DexFile::FieldId& field_id = dex_file.GetFieldId(fieldIdx);
int typeIdx = field_id.class_idx_;
// Using fixed register to sync with slow path
@@ -341,7 +341,7 @@ static void genSget(CompilationUnit* cUnit, MIR* mir,
art::ClassLinker* class_linker = art::Runtime::Current()->
GetClassLinker();
const art::DexFile& dex_file = class_linker->
- FindDexFile(field->GetDeclaringClass()->GetDexCache());
+ FindDexFile(cUnit->method->GetDeclaringClass()->GetDexCache());
const art::DexFile::FieldId& field_id = dex_file.GetFieldId(fieldIdx);
int typeIdx = field_id.class_idx_;
// Using fixed register to sync with slow path