Mercurial > hg > graal-compiler
changeset 22449:9efd5e976b66
TraceRA: share spilling information between traces.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Thu, 13 Aug 2015 14:08:34 +0200 |
parents | 417ae972af50 |
children | 7932a885e4bb |
files | graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanLifetimeAnalysisPhase.java |
diffstat | 1 files changed, 7 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanLifetimeAnalysisPhase.java Thu Aug 13 11:20:41 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanLifetimeAnalysisPhase.java Thu Aug 13 14:08:34 2015 +0200 @@ -148,6 +148,13 @@ Interval from = allocator.getOrCreateInterval((AllocatableValue) fromValue); Interval to = allocator.getOrCreateInterval((AllocatableValue) toValue); setHint(label, to, from); + } else if (TraceRAshareSpillInformation.getValue() && TraceUtil.isShadowedRegisterValue(fromValue)) { + ShadowedRegisterValue shadowedRegisterValue = TraceUtil.asShadowedRegisterValue(fromValue); + Interval from = allocator.getOrCreateInterval(shadowedRegisterValue.getRegister()); + Interval to = allocator.getOrCreateInterval((AllocatableValue) toValue); + setHint(label, to, from); + to.setSpillSlot(shadowedRegisterValue.getStackSlot()); + to.setSpillState(SpillState.StartInMemory); } } }