summaryrefslogtreecommitdiff
path: root/compiler/optimizing/scheduler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/optimizing/scheduler.cc')
-rw-r--r--compiler/optimizing/scheduler.cc28
1 files changed, 20 insertions, 8 deletions
diff --git a/compiler/optimizing/scheduler.cc b/compiler/optimizing/scheduler.cc
index 116f52605e..299418adfe 100644
--- a/compiler/optimizing/scheduler.cc
+++ b/compiler/optimizing/scheduler.cc
@@ -150,7 +150,8 @@ size_t SideEffectDependencyAnalysis::MemoryDependencyAnalysis::FieldAccessHeapLo
DCHECK(heap_location_collector_ != nullptr);
HInstruction* ref = instr->IsPredicatedInstanceFieldGet()
- ? instr->AsPredicatedInstanceFieldGet()->GetTarget()
+ // TODO: Remove "OrNull".
+ ? instr->AsPredicatedInstanceFieldGetOrNull()->GetTarget()
: instr->InputAt(0);
size_t heap_loc = heap_location_collector_->GetFieldHeapLocation(ref, GetFieldInfo(instr));
// This field access should be analyzed and added to HeapLocationCollector before.
@@ -490,9 +491,11 @@ SchedulingNode* CriticalPathSchedulingNodeSelector::SelectMaterializedCondition(
DCHECK(instruction != nullptr);
if (instruction->IsIf()) {
- condition = instruction->AsIf()->InputAt(0)->AsCondition();
+ // TODO: Remove first "OrNull", keep the second.
+ condition = instruction->AsIfOrNull()->InputAt(0)->AsConditionOrNull();
} else if (instruction->IsSelect()) {
- condition = instruction->AsSelect()->GetCondition()->AsCondition();
+ // TODO: Remove first "OrNull", keep the second.
+ condition = instruction->AsSelectOrNull()->GetCondition()->AsConditionOrNull();
}
SchedulingNode* condition_node = (condition != nullptr) ? graph.GetNode(condition) : nullptr;
@@ -733,10 +736,15 @@ bool HScheduler::IsSchedulable(const HInstruction* instruction) const {
instruction->IsClassTableGet() ||
instruction->IsCurrentMethod() ||
instruction->IsDivZeroCheck() ||
- (instruction->IsInstanceFieldGet() && !instruction->AsInstanceFieldGet()->IsVolatile()) ||
+ (instruction->IsInstanceFieldGet() &&
+ // TODO: Remove "OrNull".
+ !instruction->AsInstanceFieldGetOrNull()->IsVolatile()) ||
(instruction->IsPredicatedInstanceFieldGet() &&
- !instruction->AsPredicatedInstanceFieldGet()->IsVolatile()) ||
- (instruction->IsInstanceFieldSet() && !instruction->AsInstanceFieldSet()->IsVolatile()) ||
+ // TODO: Remove "OrNull".
+ !instruction->AsPredicatedInstanceFieldGetOrNull()->IsVolatile()) ||
+ (instruction->IsInstanceFieldSet() &&
+ // TODO: Remove "OrNull".
+ !instruction->AsInstanceFieldSetOrNull()->IsVolatile()) ||
instruction->IsInstanceOf() ||
instruction->IsInvokeInterface() ||
instruction->IsInvokeStaticOrDirect() ||
@@ -752,8 +760,12 @@ bool HScheduler::IsSchedulable(const HInstruction* instruction) const {
instruction->IsReturn() ||
instruction->IsReturnVoid() ||
instruction->IsSelect() ||
- (instruction->IsStaticFieldGet() && !instruction->AsStaticFieldGet()->IsVolatile()) ||
- (instruction->IsStaticFieldSet() && !instruction->AsStaticFieldSet()->IsVolatile()) ||
+ (instruction->IsStaticFieldGet() &&
+ // TODO: Remove "OrNull".
+ !instruction->AsStaticFieldGetOrNull()->IsVolatile()) ||
+ (instruction->IsStaticFieldSet() &&
+ // TODO: Remove "OrNull".
+ !instruction->AsStaticFieldSetOrNull()->IsVolatile()) ||
instruction->IsSuspendCheck() ||
instruction->IsTypeConversion();
}