From 8826f67ad53099021f6442364348fa66729288d7 Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Fri, 17 Apr 2015 09:15:11 +0100 Subject: Callee/caller save logic in register allocator. Prevent intervals that do not span a 'will-call' safepoint to allocate a callee-save register when caller-saves are available. Change-Id: I6e613ab54b087f433bbc433aa62847fbca423377 --- compiler/optimizing/ssa_liveness_analysis.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'compiler/optimizing/ssa_liveness_analysis.h') diff --git a/compiler/optimizing/ssa_liveness_analysis.h b/compiler/optimizing/ssa_liveness_analysis.h index 82c5454bb0..5ee44a85cc 100644 --- a/compiler/optimizing/ssa_liveness_analysis.h +++ b/compiler/optimizing/ssa_liveness_analysis.h @@ -542,6 +542,15 @@ class LiveInterval : public ArenaObject { return defined_by_; } + bool HasWillCallSafepoint() const { + for (SafepointPosition* safepoint = first_safepoint_; + safepoint != nullptr; + safepoint = safepoint->GetNext()) { + if (safepoint->GetLocations()->WillCall()) return true; + } + return false; + } + SafepointPosition* FindSafepointJustBefore(size_t position) const { for (SafepointPosition* safepoint = first_safepoint_, *previous = nullptr; safepoint != nullptr; -- cgit v1.2.3-59-g8ed1b