Index: src/compiler/greedy-allocator.h |
diff --git a/src/compiler/greedy-allocator.h b/src/compiler/greedy-allocator.h |
index c4e330eb97cc0425d4ec7de4fdb7e0fe5d938fb9..7b808cf8fb31fe3d6786b8a04e10b3aededdc0f5 100644 |
--- a/src/compiler/greedy-allocator.h |
+++ b/src/compiler/greedy-allocator.h |
@@ -125,6 +125,22 @@ class GreedyAllocator final : public RegisterAllocator { |
// This is the extension point for splitting heuristics. |
void SplitOrSpillBlockedRange(LiveRange* range); |
+ // Find a good position where to fill, after a range was spilled after a call. |
+ LifetimePosition FindSplitPositionAfterCall(const LiveRange* range, |
+ int call_index); |
+ // Split a range around all calls it passes over. Returns true if any changes |
+ // were made, or false if no calls were found. |
+ bool TrySplitAroundCalls(LiveRange* range); |
+ |
+ // Finds the first call instruction in the path of this range. Splits before |
+ // and requeues that segment (if any), spills the section over the call, and |
+ // returns the section after the call. The return is: |
+ // - same range, if no call was found |
+ // - nullptr, if the range finished at the call and there's no "after the |
+ // call" portion. |
+ // - the portion after the call. |
+ LiveRange* GetRemainderAfterSplittingAroundFirstCall(LiveRange* range); |
+ |
// Necessary heuristic: spill when all else failed. |
void SpillRangeAsLastResort(LiveRange* range); |