| Index: src/compiler/register-allocator.h
|
| diff --git a/src/compiler/register-allocator.h b/src/compiler/register-allocator.h
|
| index 38fad05ed327a171edc2a911badf5202b93433b8..b96a43ccec4431606bee4719bb76383088db85e4 100644
|
| --- a/src/compiler/register-allocator.h
|
| +++ b/src/compiler/register-allocator.h
|
| @@ -579,17 +579,14 @@
|
| // and instead let the LiveRangeConnector perform the spills within the
|
| // deferred blocks. If so, we insert here spills for non-spilled ranges
|
| // with slot use positions.
|
| - void TreatAsSpilledInDeferredBlock(Zone* zone, int total_block_count) {
|
| + void MarkSpilledInDeferredBlock() {
|
| spill_start_index_ = -1;
|
| spilled_in_deferred_blocks_ = true;
|
| spill_move_insertion_locations_ = nullptr;
|
| - list_of_blocks_requiring_spill_operands_ =
|
| - new (zone) BitVector(total_block_count, zone);
|
| - }
|
| -
|
| - void CommitSpillInDeferredBlocks(RegisterAllocationData* data,
|
| - const InstructionOperand& spill_operand,
|
| - BitVector* necessary_spill_points);
|
| + }
|
| +
|
| + bool TryCommitSpillInDeferredBlock(InstructionSequence* code,
|
| + const InstructionOperand& spill_operand);
|
|
|
| TopLevelLiveRange* splintered_from() const { return splintered_from_; }
|
| bool IsSplinter() const { return splintered_from_ != nullptr; }
|
| @@ -620,8 +617,7 @@
|
|
|
| struct SpillMoveInsertionList;
|
|
|
| - SpillMoveInsertionList* GetSpillMoveInsertionLocations() const {
|
| - DCHECK(!IsSpilledOnlyInDeferredBlocks());
|
| + SpillMoveInsertionList* spill_move_insertion_locations() const {
|
| return spill_move_insertion_locations_;
|
| }
|
| TopLevelLiveRange* splinter() const { return splinter_; }
|
| @@ -637,16 +633,6 @@
|
|
|
| void MarkHasPreassignedSlot() { has_preassigned_slot_ = true; }
|
| bool has_preassigned_slot() const { return has_preassigned_slot_; }
|
| -
|
| - void AddBlockRequiringSpillOperand(RpoNumber block_id) {
|
| - DCHECK(IsSpilledOnlyInDeferredBlocks());
|
| - GetListOfBlocksRequiringSpillOperands()->Add(block_id.ToInt());
|
| - }
|
| -
|
| - BitVector* GetListOfBlocksRequiringSpillOperands() const {
|
| - DCHECK(IsSpilledOnlyInDeferredBlocks());
|
| - return list_of_blocks_requiring_spill_operands_;
|
| - }
|
|
|
| private:
|
| void SetSplinteredFrom(TopLevelLiveRange* splinter_parent);
|
| @@ -664,12 +650,7 @@
|
| InstructionOperand* spill_operand_;
|
| SpillRange* spill_range_;
|
| };
|
| -
|
| - union {
|
| - SpillMoveInsertionList* spill_move_insertion_locations_;
|
| - BitVector* list_of_blocks_requiring_spill_operands_;
|
| - };
|
| -
|
| + SpillMoveInsertionList* spill_move_insertion_locations_;
|
| // TODO(mtrofin): generalize spilling after definition, currently specialized
|
| // just for spill in a single deferred block.
|
| bool spilled_in_deferred_blocks_;
|
| @@ -1144,7 +1125,6 @@
|
| };
|
|
|
|
|
| -class LiveRangeBoundArray;
|
| // Insert moves of the form
|
| //
|
| // Operand(child_(k+1)) = Operand(child_k)
|
| @@ -1177,10 +1157,6 @@
|
| const InstructionBlock* pred,
|
| const InstructionOperand& pred_op);
|
|
|
| - void CommitSpillsInDeferredBlocks(TopLevelLiveRange* range,
|
| - LiveRangeBoundArray* array,
|
| - Zone* temp_zone);
|
| -
|
| RegisterAllocationData* const data_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(LiveRangeConnector);
|
|
|