Index: runtime/vm/flow_graph_allocator.h |
diff --git a/runtime/vm/flow_graph_allocator.h b/runtime/vm/flow_graph_allocator.h |
index ab05f25dcb44ecbffbb9e55f95112bf94c4b7427..e795552bd90d56448a54b7f21ef782b738444884 100644 |
--- a/runtime/vm/flow_graph_allocator.h |
+++ b/runtime/vm/flow_graph_allocator.h |
@@ -113,7 +113,8 @@ class FlowGraphAllocator : public ValueObject { |
intptr_t pos, |
Location* in_ref, |
Value* input, |
- intptr_t vreg); |
+ intptr_t vreg, |
+ RegisterSet* live_registers); |
void ProcessOneOutput(BlockEntryInstr* block, |
Instruction* current, |
intptr_t pos, |
@@ -317,6 +318,11 @@ class FlowGraphAllocator : public ValueObject { |
// are disjoint. |
GrowableArray<bool> quad_spill_slots_; |
+ // Track whether a spill slot is expected to hold a tagged or untagged value. |
+ // This is used to keep tagged and untagged spill slots disjoint. See bug |
+ // #18955 for details. |
+ GrowableArray<bool> untagged_spill_slots_; |
+ |
intptr_t cpu_spill_slot_count_; |
DISALLOW_COPY_AND_ASSIGN(FlowGraphAllocator); |
@@ -498,6 +504,7 @@ class AllocationFinger : public ValueObject { |
Location FirstHint(); |
UsePosition* FirstRegisterUse(intptr_t after_pos); |
UsePosition* FirstRegisterBeneficialUse(intptr_t after_pos); |
+ UsePosition* FirstInterferingUse(intptr_t after_pos); |
private: |
UseInterval* first_pending_use_interval_; |