diff options
| author | 2014-07-09 14:28:35 -0700 | |
|---|---|---|
| committer | 2014-07-15 18:39:57 -0700 | |
| commit | d9cb8ae2ed78f957a773af61759432d7a7bf78af (patch) | |
| tree | 884d76d6e47193f704a7c7cb27c9a6c1ed2b49f3 /compiler/dex/quick/gen_common.cc | |
| parent | ebaca192314e21d26b97646fa962e468ff07b893 (diff) | |
Fix art test failures for Mips.
This patch fixes the following art test failures for Mips:
003-omnibus-opcodes
030-bad-finalizer
041-narrowing
059-finalizer-throw
Change-Id: I4e0e9ff75f949c92059dd6b8d579450dc15f4467
Signed-off-by: Douglas Leung <douglas@mips.com>
Diffstat (limited to 'compiler/dex/quick/gen_common.cc')
| -rw-r--r-- | compiler/dex/quick/gen_common.cc | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/compiler/dex/quick/gen_common.cc b/compiler/dex/quick/gen_common.cc index 1fc0cff678..5d1b1fb072 100644 --- a/compiler/dex/quick/gen_common.cc +++ b/compiler/dex/quick/gen_common.cc @@ -581,8 +581,7 @@ void Mir2Lir::GenSput(MIR* mir, RegLocation rl_src, bool is_long_or_double, const MirSFieldLoweringInfo& field_info = mir_graph_->GetSFieldLoweringInfo(mir); cu_->compiler_driver->ProcessedStaticField(field_info.FastPut(), field_info.IsReferrersClass()); OpSize store_size = LoadStoreOpSize(is_long_or_double, is_object); - if (!SLOW_FIELD_PATH && field_info.FastPut() && - (!field_info.IsVolatile() || SupportsVolatileLoadStore(store_size))) { + if (!SLOW_FIELD_PATH && field_info.FastPut()) { DCHECK_GE(field_info.FieldOffset().Int32Value(), 0); RegStorage r_base; if (field_info.IsReferrersClass()) { @@ -682,8 +681,7 @@ void Mir2Lir::GenSget(MIR* mir, RegLocation rl_dest, const MirSFieldLoweringInfo& field_info = mir_graph_->GetSFieldLoweringInfo(mir); cu_->compiler_driver->ProcessedStaticField(field_info.FastGet(), field_info.IsReferrersClass()); OpSize load_size = LoadStoreOpSize(is_long_or_double, is_object); - if (!SLOW_FIELD_PATH && field_info.FastGet() && - (!field_info.IsVolatile() || SupportsVolatileLoadStore(load_size))) { + if (!SLOW_FIELD_PATH && field_info.FastGet()) { DCHECK_GE(field_info.FieldOffset().Int32Value(), 0); RegStorage r_base; if (field_info.IsReferrersClass()) { @@ -787,6 +785,8 @@ static void GenIgetCall(Mir2Lir* mir_to_lir, bool is_long_or_double, bool is_obj is_long_or_double ? QUICK_ENTRYPOINT_OFFSET(pointer_size, pGet64Instance) : (is_object ? QUICK_ENTRYPOINT_OFFSET(pointer_size, pGetObjInstance) : QUICK_ENTRYPOINT_OFFSET(pointer_size, pGet32Instance)); + // Second argument of pGetXXInstance is always a reference. + DCHECK_EQ(static_cast<unsigned int>(rl_obj.wide), 0U); mir_to_lir->CallRuntimeHelperImmRegLocation(getter_offset, field_info->FieldIndex(), rl_obj, true); } @@ -797,8 +797,7 @@ void Mir2Lir::GenIGet(MIR* mir, int opt_flags, OpSize size, const MirIFieldLoweringInfo& field_info = mir_graph_->GetIFieldLoweringInfo(mir); cu_->compiler_driver->ProcessedInstanceField(field_info.FastGet()); OpSize load_size = LoadStoreOpSize(is_long_or_double, is_object); - if (!SLOW_FIELD_PATH && field_info.FastGet() && - (!field_info.IsVolatile() || SupportsVolatileLoadStore(load_size))) { + if (!SLOW_FIELD_PATH && field_info.FastGet()) { RegisterClass reg_class = RegClassForFieldLoadStore(load_size, field_info.IsVolatile()); DCHECK_GE(field_info.FieldOffset().Int32Value(), 0); rl_obj = LoadValue(rl_obj, kRefReg); @@ -854,8 +853,7 @@ void Mir2Lir::GenIPut(MIR* mir, int opt_flags, OpSize size, const MirIFieldLoweringInfo& field_info = mir_graph_->GetIFieldLoweringInfo(mir); cu_->compiler_driver->ProcessedInstanceField(field_info.FastPut()); OpSize store_size = LoadStoreOpSize(is_long_or_double, is_object); - if (!SLOW_FIELD_PATH && field_info.FastPut() && - (!field_info.IsVolatile() || SupportsVolatileLoadStore(store_size))) { + if (!SLOW_FIELD_PATH && field_info.FastPut()) { RegisterClass reg_class = RegClassForFieldLoadStore(store_size, field_info.IsVolatile()); DCHECK_GE(field_info.FieldOffset().Int32Value(), 0); rl_obj = LoadValue(rl_obj, kRefReg); |