From: <eri...@us...> - 2010-07-08 15:24:45
|
Revision: 15886 http://jikesrvm.svn.sourceforge.net/jikesrvm/?rev=15886&view=rev Author: eris2006 Date: 2010-07-08 15:24:39 +0000 (Thu, 08 Jul 2010) Log Message: ----------- First Commit Modified Paths: -------------- rvmroot/branches/RVM-RegAlloc-ELS/trunk/rvm/src/org/jikesrvm/compilers/opt/regalloc/LiveIntervalElement.java Modified: rvmroot/branches/RVM-RegAlloc-ELS/trunk/rvm/src/org/jikesrvm/compilers/opt/regalloc/LiveIntervalElement.java =================================================================== --- rvmroot/branches/RVM-RegAlloc-ELS/trunk/rvm/src/org/jikesrvm/compilers/opt/regalloc/LiveIntervalElement.java 2010-07-08 15:24:22 UTC (rev 15885) +++ rvmroot/branches/RVM-RegAlloc-ELS/trunk/rvm/src/org/jikesrvm/compilers/opt/regalloc/LiveIntervalElement.java 2010-07-08 15:24:39 UTC (rev 15886) @@ -12,10 +12,15 @@ */ package org.jikesrvm.compilers.opt.regalloc; +import java.util.Iterator; + import org.jikesrvm.compilers.opt.ir.BasicBlock; import org.jikesrvm.compilers.opt.ir.Instruction; import org.jikesrvm.compilers.opt.ir.Register; +import org.jikesrvm.compilers.opt.regalloc.LinearScan.CompoundInterval; +import org.jikesrvm.compilers.opt.regalloc.LinearScan.Interval; + /** * This class defines a LiveInterval node created by Live Variable analysis * and used in Linear Scan. @@ -75,6 +80,8 @@ register = reg; this.begin = begin; this.end = end; + + } public String toString() { @@ -105,4 +112,26 @@ public BasicBlock getBasicBlock() { return bb; } public void setBasicBlock(BasicBlock bb) { this.bb = bb; } + /* + * Returns the BasicInterval represented by the LiveIntervalElement if and only if we are doing the register + * allocation at BasicInterval level else return the compound interval it belongs to. + * This may return null, so do a assertion after the call. + */ + public Interval getInterval(){ + Interval result=null; + Instruction begin = this.getBegin(); + Instruction end = this.getEnd(); + int start,finish; + if(begin != null) + start = this.getBegin().scratch; + else + start = this.getBasicBlock().firstInstruction().scratch; + if(end != null) + finish = this.getEnd().scratch; + else + finish = this.getBasicBlock().lastInstruction().scratch; + CompoundInterval ci = (CompoundInterval)this.getRegister().scratchObject; + result=ci.getInterval(start,finish); + return result; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |