diff options
| -rw-r--r-- | compiler/dex/quick/gen_common.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/compiler/dex/quick/gen_common.cc b/compiler/dex/quick/gen_common.cc index b31e9a2efa..6dc019ac53 100644 --- a/compiler/dex/quick/gen_common.cc +++ b/compiler/dex/quick/gen_common.cc @@ -820,11 +820,12 @@ void Mir2Lir::GenIGet(MIR* mir, int opt_flags, OpSize size, } else { GenIgetCall<4>(this, is_long_or_double, is_object, &field_info, rl_obj); } + // FIXME: pGetXXInstance always return an int or int64 regardless of rl_dest.fp. if (is_long_or_double) { - RegLocation rl_result = GetReturnWide(LocToRegClass(rl_dest)); + RegLocation rl_result = GetReturnWide(kCoreReg); StoreValueWide(rl_dest, rl_result); } else { - RegLocation rl_result = GetReturn(LocToRegClass(rl_dest)); + RegLocation rl_result = GetReturn(rl_dest.ref ? kRefReg : kCoreReg); StoreValue(rl_dest, rl_result); } } |