diff options
author | 2017-08-10 22:45:45 +0000 | |
---|---|---|
committer | 2017-08-10 22:45:45 +0000 | |
commit | eac21ef2617cc02e6a093d811a926115fb69bd05 (patch) | |
tree | b9ea86a35a870669029e6375e2a01e5f90297212 /compiler/optimizing/scheduler.cc | |
parent | 73de4a8f0936bfb8b74db0465f277a2b68d16905 (diff) | |
parent | 1545ccc4852255870b5c4676203fc7c2f2fa393f (diff) |
Merge "scheduler should not schedule volatile field accesses."
Diffstat (limited to 'compiler/optimizing/scheduler.cc')
-rw-r--r-- | compiler/optimizing/scheduler.cc | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/compiler/optimizing/scheduler.cc b/compiler/optimizing/scheduler.cc index 3e373d16fb..38cd51bef6 100644 --- a/compiler/optimizing/scheduler.cc +++ b/compiler/optimizing/scheduler.cc @@ -724,8 +724,8 @@ bool HScheduler::IsSchedulable(const HInstruction* instruction) const { instruction->IsClassTableGet() || instruction->IsCurrentMethod() || instruction->IsDivZeroCheck() || - instruction->IsInstanceFieldGet() || - instruction->IsInstanceFieldSet() || + (instruction->IsInstanceFieldGet() && !instruction->AsInstanceFieldGet()->IsVolatile()) || + (instruction->IsInstanceFieldSet() && !instruction->AsInstanceFieldSet()->IsVolatile()) || instruction->IsInstanceOf() || instruction->IsInvokeInterface() || instruction->IsInvokeStaticOrDirect() || @@ -741,14 +741,10 @@ bool HScheduler::IsSchedulable(const HInstruction* instruction) const { instruction->IsReturn() || instruction->IsReturnVoid() || instruction->IsSelect() || - instruction->IsStaticFieldGet() || - instruction->IsStaticFieldSet() || + (instruction->IsStaticFieldGet() && !instruction->AsStaticFieldGet()->IsVolatile()) || + (instruction->IsStaticFieldSet() && !instruction->AsStaticFieldSet()->IsVolatile()) || instruction->IsSuspendCheck() || - instruction->IsTypeConversion() || - instruction->IsUnresolvedInstanceFieldGet() || - instruction->IsUnresolvedInstanceFieldSet() || - instruction->IsUnresolvedStaticFieldGet() || - instruction->IsUnresolvedStaticFieldSet(); + instruction->IsTypeConversion(); } bool HScheduler::IsSchedulable(const HBasicBlock* block) const { |