diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstIRFactory.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstIRFactory.java index 9da35df4b..524da1efc 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstIRFactory.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstIRFactory.java @@ -13,6 +13,7 @@ package com.ibm.wala.cast.ir.ssa; import java.util.Map; import java.util.Map.Entry; +import com.ibm.wala.cast.ir.ssa.SSAConversion.SSAInformation; import com.ibm.wala.cast.loader.AstMethod; import com.ibm.wala.cast.loader.AstMethod.LexicalInformation; import com.ibm.wala.cast.tree.CAstSourcePositionMap.Position; @@ -73,7 +74,7 @@ public class AstIRFactory implements IRFactory { public static class AstIR extends IR { private final LexicalInformation lexicalInfo; - private final SSA2LocalMap localMap; + private final SSAConversion.SSAInformation localMap; public LexicalInformation lexicalInfo() { return lexicalInfo; @@ -100,7 +101,7 @@ public class AstIRFactory implements IRFactory { } @Override - protected SSA2LocalMap getLocalMap() { + public SSAInformation getLocalMap() { return localMap; } diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/SSAConversion.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/SSAConversion.java index 7ed877ad6..1e0e6ac8e 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/SSAConversion.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/SSAConversion.java @@ -12,7 +12,6 @@ package com.ibm.wala.cast.ir.ssa; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -20,7 +19,6 @@ import com.ibm.wala.cast.ir.ssa.analysis.LiveAnalysis; import com.ibm.wala.cast.loader.AstMethod; import com.ibm.wala.cast.loader.AstMethod.DebuggingInformation; import com.ibm.wala.cast.loader.AstMethod.LexicalInformation; -import com.ibm.wala.ssa.IR.SSA2LocalMap; import com.ibm.wala.ssa.SSACFG; import com.ibm.wala.ssa.SSAInstruction; import com.ibm.wala.ssa.SSAOptions; @@ -62,7 +60,7 @@ public class SSAConversion extends AbstractSSAConversion { private final LiveAnalysis.Result liveness; - private SSA2LocalMap computedLocalMap; + private SSAInformation computedLocalMap; private Map assignments = HashMapFactory.make(); @@ -74,11 +72,19 @@ public class SSAConversion extends AbstractSSAConversion { private final ArrayList R[]; - private static class UseRecord { + public static class UseRecord { final int instructionIndex; final int useNumber; + public int getInstructionIndex() { + return instructionIndex; + } + + public int getUseNumber() { + return useNumber; + } + private UseRecord(int instructionIndex, int useNumber) { this.useNumber = useNumber; this.instructionIndex = instructionIndex; @@ -101,7 +107,7 @@ public class SSAConversion extends AbstractSSAConversion { } } - private class PhiUseRecord { + public class PhiUseRecord { final int BBnumber; final int phiNumber; @@ -114,6 +120,18 @@ public class SSAConversion extends AbstractSSAConversion { this.useNumber = useNumber; } + public int getBBnumber() { + return BBnumber; + } + + public int getPhiNumber() { + return phiNumber; + } + + public int getUseNumber() { + return useNumber; + } + @Override public String toString() { return "[use " + useNumber + " of " + phiNumber + " of block " + BBnumber + "]"; @@ -131,7 +149,7 @@ public class SSAConversion extends AbstractSSAConversion { } } - private class CopyPropagationRecord { + public class CopyPropagationRecord { final int rhs; final int instructionIndex; @@ -140,6 +158,22 @@ public class SSAConversion extends AbstractSSAConversion { private final Set childRecords = HashSetFactory.make(1); + public int getRhs() { + return rhs; + } + + public int getInstructionIndex() { + return instructionIndex; + } + + public Set getRenamedUses() { + return renamedUses; + } + + public Set getChildRecords() { + return childRecords; + } + @Override public String toString() { StringBuffer sb = new StringBuffer(" getCopyHistory() { + public Map getCopyHistory() { return copyPropagationMap; } @@ -519,10 +553,8 @@ public class SSAConversion extends AbstractSSAConversion { @SuppressWarnings("unchecked") private SSAConversion(AstMethod M, AstIRFactory.AstIR ir, SSAOptions options) { super(ir, options); - HashMap m = HashMapFactory.make(); - this.copyPropagationMap = (ir.getLocalMap() instanceof SSAInformation) ? ((SSAInformation) ir.getLocalMap()).getCopyHistory() - : m; - + Map m = HashMapFactory.make(); + this.copyPropagationMap = (ir.getLocalMap() != null) ? ir.getLocalMap().getCopyHistory() : m; this.ir = ir; this.debugInfo = M.debugInfo(); this.lexicalInfo = ir.lexicalInfo(); @@ -605,7 +637,7 @@ public class SSAConversion extends AbstractSSAConversion { super.fail(v); } - public SSA2LocalMap getComputedLocalMap() { + public SSAInformation getComputedLocalMap() { return computedLocalMap; } @@ -655,11 +687,11 @@ public class SSAConversion extends AbstractSSAConversion { return foundTwo; } - public static SSA2LocalMap convert(AstMethod M, AstIRFactory.AstIR ir, SSAOptions options) { + public static SSAInformation convert(AstMethod M, AstIRFactory.AstIR ir, SSAOptions options) { return convert(M, ir, options, valuesToConvert(ir)); } - public static SSA2LocalMap convert(AstMethod M, final AstIRFactory.AstIR ir, SSAOptions options, final IntSet values) { + public static SSAInformation convert(AstMethod M, final AstIRFactory.AstIR ir, SSAOptions options, final IntSet values) { try { if (DEBUG) { System.err.println(("starting conversion for " + values));