diff --git a/com.ibm.wala.core/.classpath b/com.ibm.wala.core/.classpath index 68d79530a..4e7d55455 100644 --- a/com.ibm.wala.core/.classpath +++ b/com.ibm.wala.core/.classpath @@ -5,6 +5,5 @@ - diff --git a/com.ibm.wala.core/META-INF/MANIFEST.MF b/com.ibm.wala.core/META-INF/MANIFEST.MF index 3d4ee989f..1b0c5cccf 100644 --- a/com.ibm.wala.core/META-INF/MANIFEST.MF +++ b/com.ibm.wala.core/META-INF/MANIFEST.MF @@ -66,5 +66,4 @@ Export-Package: ., com.ibm.wala.viz.viewer Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Eclipse-BuddyPolicy: registered -Bundle-ClassPath: lib/slf4j-api-1.7.2.jar, - . +Bundle-ClassPath: . diff --git a/com.ibm.wala.core/build.properties b/com.ibm.wala.core/build.properties index a39f73a2d..2628d9342 100644 --- a/com.ibm.wala.core/build.properties +++ b/com.ibm.wala.core/build.properties @@ -1,9 +1,8 @@ -bin.includes = lib/primordial.jar.model,\ - plugin.properties,\ +bin.includes = plugin.properties,\ dat/natives.xml,\ META-INF/,\ .,\ - lib/slf4j-api-1.7.2.jar + lib/ jars.compile.order = . output.. = bin/ source.. = dat/,\ diff --git a/com.ibm.wala.core/lib/slf4j-api-1.7.2.jar b/com.ibm.wala.core/lib/slf4j-api-1.7.2.jar deleted file mode 100644 index 1a8870833..000000000 Binary files a/com.ibm.wala.core/lib/slf4j-api-1.7.2.jar and /dev/null differ diff --git a/com.ibm.wala.core/src/com/ibm/wala/cfg/InducedCFG.java b/com.ibm.wala.core/src/com/ibm/wala/cfg/InducedCFG.java index 04a449bd9..eed8e6e08 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/cfg/InducedCFG.java +++ b/com.ibm.wala.core/src/com/ibm/wala/cfg/InducedCFG.java @@ -42,8 +42,6 @@ import com.ibm.wala.util.graph.GraphIntegrity; import com.ibm.wala.util.graph.GraphIntegrity.UnsoundGraphException; import com.ibm.wala.util.graph.impl.NodeWithNumber; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * A {@link ControlFlowGraph} computed from a set of {@link SSAInstruction} instructions. * @@ -51,8 +49,8 @@ import org.slf4j.LoggerFactory; * unsuited for flow-sensitive analysis. Someday this should be nuked. */ public class InducedCFG extends AbstractCFG { - private static final Logger logger = LoggerFactory.getLogger(InducedCFG.class); - private static final boolean DEBUG = logger.isDebugEnabled() || false; + + private static final boolean DEBUG = false; /** * A partial map from Instruction -> BasicBlock @@ -198,7 +196,7 @@ public class InducedCFG extends AbstractCFG 0) { - logger.trace(" Instuction before is: " + instructions[i - 1]); - } - if (i < instructions.length - 1) { - logger.trace(" Instuction after is: " + instructions[i + 1]); - } - continue; - } - if (instructions[i].iindex == iindex) { - return i; + if (instructions[i] == null) { + // There are holes in the instructions array ?! + // Perhaps from Phi-functions? + if (DEBUG) { + System.err.println("The " + i +"th instrction is null! Mathod: " + getMethod()); + if (i > 0) { + System.err.println(" Instuction before is: " + instructions[i - 1]); + } + if (i < instructions.length - 1) { + System.err.println(" Instuction after is: " + instructions[i + 1]); + } } + continue; + } + if (instructions[i].iindex == iindex) { + return i; + } } throw new IllegalStateException("The searched iindex (" + iindex + ") does not exist! In " + diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/summaries/SummarizedMethodWithNames.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/summaries/SummarizedMethodWithNames.java index f3b6ac7bb..d349199ad 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/summaries/SummarizedMethodWithNames.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/summaries/SummarizedMethodWithNames.java @@ -52,9 +52,6 @@ import com.ibm.wala.types.TypeReference; import java.util.Map; import com.ibm.wala.util.strings.Atom; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - /** * A SummarizedMethod (for synthetic functions) with variable names. * @@ -66,8 +63,9 @@ import org.slf4j.LoggerFactory; * @since 2013-11-25 */ public class SummarizedMethodWithNames extends SummarizedMethod { - private static final Logger logger = LoggerFactory.getLogger(SummarizedMethodWithNames.class); + private static final boolean DEBUG = false; + private final MethodSummary summary; private final Map localNames; @@ -78,7 +76,7 @@ public class SummarizedMethodWithNames extends SummarizedMethod { this.summary = summary; this.localNames = localNames; - logger.debug("From old MSUM"); + if (DEBUG) { System.err.println("From old MSUM"); } } public SummarizedMethodWithNames(MethodReference ref, VolatileMethodSummary summary, IClass declaringClass) @@ -86,15 +84,9 @@ public class SummarizedMethodWithNames extends SummarizedMethod { super(ref, summary.getMethodSummary(), declaringClass); this.summary = summary.getMethodSummary(); this.localNames = ((VolatileMethodSummary)summary).getLocalNames(); - if (this.localNames.isEmpty()) { - logger.warn("Local names are empty for " + ref); + if (DEBUG && this.localNames.isEmpty()) { + System.err.println("Local names are empty for " + ref); } - - /*{ // DEBUG - for (final Integer key : this.localNames.keySet()) { - logger.debug("Local " + key + " is " + this.localNames.get(key)); - } - } // */ } public static class SyntheticIRWithNames extends SyntheticIR { @@ -112,7 +104,7 @@ public class SummarizedMethodWithNames extends SummarizedMethod { */ @Override public String[] getLocalNames(int index, int vn) { - logger.debug("IR.getLocalNames({}, {})", index, vn); + if (DEBUG) { System.err.printf("IR.getLocalNames({}, {})", index, vn); } if (this.localNames.containsKey(vn)) { return new String[] { this.localNames.get(vn).toString() }; } else { @@ -142,10 +134,10 @@ public class SummarizedMethodWithNames extends SummarizedMethod { public String getLocalVariableName(int bcIndex, int localNumber) { if (this.localNames.containsKey(localNumber)) { String name = this.localNames.get(localNumber).toString(); - logger.debug("getLocalVariableName(bc={}, no={}) = {}", bcIndex, localNumber, name); + if (DEBUG) { System.err.printf("getLocalVariableName(bc={}, no={}) = {}", bcIndex, localNumber, name); } return name; } else { - logger.debug("No name for {}", localNumber); + if (DEBUG) { System.err.printf("No name for {}", localNumber); } return super.getLocalVariableName(bcIndex, localNumber); } } diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/summaries/VolatileMethodSummary.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/summaries/VolatileMethodSummary.java index 4cb00d2a3..458306600 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/summaries/VolatileMethodSummary.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/summaries/VolatileMethodSummary.java @@ -45,9 +45,6 @@ import java.util.Map; import java.util.HashMap; import com.ibm.wala.util.strings.Atom; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - /** * Instructions can be added in a non-ascending manner. * @@ -74,8 +71,8 @@ import org.slf4j.LoggerFactory; * @since 2013-09-08 */ public class VolatileMethodSummary { - private static final Logger logger = LoggerFactory.getLogger(VolatileMethodSummary.class); + private static final boolean DEBUG = false; private boolean allowReservedPC = false; private MethodSummary summary; private List instructions = new ArrayList(); @@ -260,7 +257,7 @@ public class VolatileMethodSummary { boolean didOverwrite = isUsed(statement.iindex); while (this.instructions.size() - 1 < statement.iindex) this.instructions.add(null); - logger.debug("Setting {} to {}", statement.iindex, statement); + if (DEBUG) { System.err.printf("Setting {} to {}", statement.iindex, statement); } this.instructions.set(statement.iindex, statement); return didOverwrite; } @@ -286,10 +283,10 @@ public class VolatileMethodSummary { final SSAInstruction inst = this.instructions.get(i); if ((inst == null) || (inst == RESERVED)) { - logger.warn("No instruction at iindex {}", i); + if (DEBUG) { System.err.printf("No instruction at iindex {}", i); } } else { - logger.debug("Adding @{}: ", inst); - this.summary.addStatement(inst); + if (DEBUG) { System.err.printf("Adding @{}: ", inst); } + this.summary.addStatement(inst); } } diff --git a/com.ibm.wala.core/src/com/ibm/wala/util/ssa/ParameterAccessor.java b/com.ibm.wala.core/src/com/ibm/wala/util/ssa/ParameterAccessor.java index d88ad7532..87d0b396a 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/util/ssa/ParameterAccessor.java +++ b/com.ibm.wala.core/src/com/ibm/wala/util/ssa/ParameterAccessor.java @@ -31,34 +31,23 @@ */ package com.ibm.wala.util.ssa; -import com.ibm.wala.types.TypeReference; -import com.ibm.wala.types.TypeName; -import com.ibm.wala.types.MethodReference; -import com.ibm.wala.classLoader.IMethod; -import com.ibm.wala.classLoader.IClass; -import com.ibm.wala.types.Selector; -import com.ibm.wala.util.PrimitiveAssignability; -import com.ibm.wala.util.ssa.ClassLookupException; -import com.ibm.wala.util.ssa.IInstantiator; -import com.ibm.wala.util.ssa.SSAValue; -import com.ibm.wala.util.ssa.SSAValue.NamedKey; -import com.ibm.wala.util.ssa.SSAValue.VariableKey; -import com.ibm.wala.util.ssa.SSAValue.WeaklyNamedKey; - -import com.ibm.wala.ipa.cha.IClassHierarchy; -import com.ibm.wala.classLoader.IClassLoader; - +import java.util.ArrayList; import java.util.Collections; +import java.util.HashSet; import java.util.Iterator; import java.util.List; -import java.util.ArrayList; import java.util.Set; -import java.util.HashSet; -import com.ibm.wala.util.debug.Assertions; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import com.ibm.wala.classLoader.IClass; +import com.ibm.wala.classLoader.IClassLoader; +import com.ibm.wala.classLoader.IMethod; +import com.ibm.wala.ipa.cha.IClassHierarchy; +import com.ibm.wala.types.MethodReference; +import com.ibm.wala.types.Selector; +import com.ibm.wala.types.TypeName; +import com.ibm.wala.types.TypeReference; +import com.ibm.wala.util.PrimitiveAssignability; +import com.ibm.wala.util.ssa.SSAValue.WeaklyNamedKey; /** * Access parameters without confusion on their numbers. @@ -80,9 +69,10 @@ import org.slf4j.LoggerFactory; * @author Tobias Blaschke * @since 2013-10-19 */ -public class ParameterAccessor { // extends Param-Manager - private static final Logger logger = LoggerFactory.getLogger(ParameterAccessor.class); +public class ParameterAccessor { + private final static boolean DEBUG = false; + /** * The Constructor used to create ParameterAccessor influences the parameter-offset. * @@ -310,7 +300,7 @@ public class ParameterAccessor { // extends Param-Manager final boolean hasImplicitThis; Set targets = cha.getPossibleTargets(mRef); if (targets.size() < 1) { - logger.warn("Unable to look up the method {} starting extensive search...", mRef); + warn("Unable to look up the method {} starting extensive search...", mRef); targets = new HashSet(); final TypeReference mClass = mRef.getDeclaringClass(); @@ -330,11 +320,11 @@ public class ParameterAccessor { // extends Param-Manager final IClass lookedUp; lookedUp = cha.lookupClass(mClass); if (lookedUp != null) { - logger.debug("Found using cha.lookupClass()"); + debug("Found using cha.lookupClass()"); testClasses.add(lookedUp); } - logger.info("Searching the classes {} for the method", testClasses); + info("Searching the classes {} for the method", testClasses); for (IClass testClass : testClasses) { final IMethod cand = testClass.getMethod(mSel); @@ -345,16 +335,16 @@ public class ParameterAccessor { // extends Param-Manager } if (targets.size() < 1) { - logger.warn("Still no candidates for the method - continuing with super-classes (TODO)"); + warn("Still no candidates for the method - continuing with super-classes (TODO)"); // TODO { // DEBUG for (IClass testClass : testClasses) { - logger.info("Known Methods in " + testClass); + info("Known Methods in " + testClass); for (IMethod contained : testClass.getAllMethods()) { System.out.println(contained); - logger.info("\t" + contained); + info("\t" + contained); } } } // */ @@ -377,11 +367,11 @@ public class ParameterAccessor { // extends Param-Manager } if (hasImplicitThis) { - logger.info("The method {} has an implicit this pointer", mRef); + info("The method {} has an implicit this pointer", mRef); this.implicitThis = 1; this.descriptorOffset = -1; } else { - logger.info("The method {} has no implicit this pointer", mRef); + info("The method {} has no implicit this pointer", mRef); this.implicitThis = -1; this.descriptorOffset = 0; } @@ -407,11 +397,11 @@ public class ParameterAccessor { // extends Param-Manager this.numberOfParameters = mRef.getNumberOfParameters(); if (hasImplicitThis) { - logger.info("The method {} has an implicit this pointer", mRef); + info("The method {} has an implicit this pointer", mRef); this.implicitThis = 1; this.descriptorOffset = -1; } else { - logger.info("The method {} has no implicit this pointer", mRef); + info("The method {} has no implicit this pointer", mRef); this.implicitThis = -1; this.descriptorOffset = 0; } @@ -543,7 +533,7 @@ public class ParameterAccessor { // extends Param-Manager { final int firstInSelector = firstInSelector(); for (int i = ((hasImplicitThis())?1:0); i < this.method.getNumberOfParameters(); ++i) { - logger.debug("all() adding: Parameter({}, {}, {}, {}, {})", (i + 1), this.method.getParameterType(i), + debug("all() adding: Parameter({}, {}, {}, {}, {})", (i + 1), this.method.getParameterType(i), this.base, this.method, this.descriptorOffset); all.add(new Parameter(i + 1, null, this.method.getParameterType(i), ParamerterDisposition.PARAM, this.base, this.method.getReference(), this.descriptorOffset)); @@ -719,18 +709,18 @@ public class ParameterAccessor { // extends Param-Manager switch (this.base) { case IMETHOD: if (this.hasImplicitThis()) { // XXX TODO BUG! - logger.debug("This IMethod {} has an implicit this pointer at {}, so firstInSelector is accessible using SSA-Value {}", this.method, this.implicitThis, (this.implicitThis + 1)); + debug("This IMethod {} has an implicit this pointer at {}, so firstInSelector is accessible using SSA-Value {}", this.method, this.implicitThis, (this.implicitThis + 1)); return this.implicitThis + 1; } else { - logger.debug("This IMethod {} has no implicit this pointer, so firstInSelector is accessible using SSA-Value 1" , this.method); + debug("This IMethod {} has no implicit this pointer, so firstInSelector is accessible using SSA-Value 1" , this.method); return 1; } case METHOD_REFERENCE: if (this.hasImplicitThis()) { - logger.debug("This IMethod {} has an implicit this pointer at {}, so firstInSelector is accessible using SSA-Value {}", this.mRef, this.implicitThis, (this.implicitThis + 1)); + debug("This IMethod {} has an implicit this pointer at {}, so firstInSelector is accessible using SSA-Value {}", this.mRef, this.implicitThis, (this.implicitThis + 1)); return this.implicitThis + 1; } else { - logger.debug("This mRef {} has no implicit this pointer, so firstInSelector is accessible using SSA-Value 1", this.mRef); + debug("This mRef {} has no implicit this pointer, so firstInSelector is accessible using SSA-Value 1", this.mRef); return 1; } default: @@ -857,7 +847,7 @@ public class ParameterAccessor { // extends Param-Manager if (searchType == null) { throw new IllegalStateException("Could not find " + tName + " in any loader!"); } else { - logger.debug("Retrieved {} as {}", tName, searchType); + debug("Retrieved {} as {}", tName, searchType); } for (final Parameter cand : all) { @@ -871,7 +861,7 @@ public class ParameterAccessor { // extends Param-Manager for (final IClassLoader loader: cha.getLoaders()) { final IClass c = loader.lookupClass(cand.getType().getName()); if (c != null) { - logger.info("Using alternative for from: {}", cand); + info("Using alternative for from: {}", cand); if (cha.isSubclassOf(c, searchType)) { allExctends.add(cand); } @@ -879,7 +869,7 @@ public class ParameterAccessor { // extends Param-Manager } // TODO: That's true for base-type too - logger.warn("Unable to look up IClass of {}", cand); + warn("Unable to look up IClass of {}", cand); } } @@ -912,7 +902,7 @@ public class ParameterAccessor { // extends Param-Manager if (searchType == null) { throw new IllegalStateException("Could not find the IClass of " + tRef); } else { - logger.debug("Reteived {} as {}", tRef, searchType); + debug("Reteived {} as {}", tRef, searchType); } for (final Parameter cand : all) { @@ -924,7 +914,7 @@ public class ParameterAccessor { // extends Param-Manager } } else { // TODO: That's true for base-type too - logger.warn("Unable to look up IClass of {}", cand); + warn("Unable to look up IClass of {}", cand); } } @@ -971,7 +961,7 @@ public class ParameterAccessor { // extends Param-Manager if (searchType == null) { throw new IllegalStateException("Could not find " + tName + " in any loader!"); } else { - logger.debug("Reteived {} as {}", tName, searchType); + debug("Reteived {} as {}", tName, searchType); } for (final Parameter cand : all) { @@ -985,7 +975,7 @@ public class ParameterAccessor { // extends Param-Manager for (final IClassLoader loader: cha.getLoaders()) { final IClass c = loader.lookupClass(cand.getType().getName()); if (c != null) { - logger.info("Using alternative for from: {}", cand); + info("Using alternative for from: {}", cand); if (cha.isSubclassOf(c, searchType)) { return cand; } @@ -993,7 +983,7 @@ public class ParameterAccessor { // extends Param-Manager } // TODO: That's true for primitive-type too - logger.warn("Unable to look up IClass of {}", cand); + warn("Unable to look up IClass of {}", cand); } } @@ -1026,7 +1016,7 @@ public class ParameterAccessor { // extends Param-Manager if (searchType == null) { throw new IllegalStateException("Could not find the IClass of " + tRef); } else { - logger.debug("Reteived {} as {}", tRef, searchType); + debug("Reteived {} as {}", tRef, searchType); } for (final Parameter cand : all) { @@ -1038,7 +1028,7 @@ public class ParameterAccessor { // extends Param-Manager } } else { // TODO: That's true for base-type too - logger.warn("Unable to look up IClass of {}", cand); + warn("Unable to look up IClass of {}", cand); } } @@ -1070,7 +1060,7 @@ public class ParameterAccessor { // extends Param-Manager } if ((args.get(1) instanceof Parameter) && (((Parameter)args.get(1)).getDisposition() == ParamerterDisposition.THIS)) { - logger.warn("The first argument is an implicit this: {} this may be ok however.", args.get(1)); + warn("The first argument is an implicit this: {} this may be ok however.", args.get(1)); } // **** @@ -1115,7 +1105,7 @@ public class ParameterAccessor { // extends Param-Manager } if ((args.get(1) instanceof Parameter) && (((Parameter)args.get(1)).getDisposition() == ParamerterDisposition.THIS)) { - logger.warn("The first argument is an implicit this: {} this may be ok however.", args.get(1)); + warn("The first argument is an implicit this: {} this may be ok however.", args.get(1)); } // **** @@ -1167,7 +1157,7 @@ public class ParameterAccessor { // extends Param-Manager int[] params = new int[args.size() + 1]; if ((params.length > 1) && (args.get(1) instanceof Parameter) && (((Parameter)args.get(1)).getDisposition() == ParamerterDisposition.THIS)) { - logger.warn("The first argument is an implicit this: {} this may be ok however.", args.get(1)); + warn("The first argument is an implicit this: {} this may be ok however.", args.get(1)); } // **** @@ -1218,7 +1208,7 @@ public class ParameterAccessor { // extends Param-Manager int[] params = new int[args.size() + 1]; if ((params.length > 1) && (args.get(1) instanceof Parameter) && (((Parameter)args.get(1)).getDisposition() == ParamerterDisposition.THIS)) { - logger.warn("The first argument is an implicit this: {} this may be ok however.", args.get(1)); + warn("The first argument is an implicit this: {} this may be ok however.", args.get(1)); } // **** @@ -1289,21 +1279,21 @@ public class ParameterAccessor { // extends Param-Manager // **** // Implementation starts here - logger.debug("Collecting parameters for callee {}", ((callee.mRef!=null)?callee.mRef:callee.method)); - logger.debug("\tThe calling function is {}", ((this.mRef!=null)?this.mRef:this.method)); + debug("Collecting parameters for callee {}", ((callee.mRef!=null)?callee.mRef:callee.method)); + debug("\tThe calling function is {}", ((this.mRef!=null)?this.mRef:this.method)); forEachParameter: for (final Parameter param : calleeParams) { - logger.debug("\tSearching candidate for {}", param); + debug("\tSearching candidate for {}", param); final TypeReference paramType = param.getType(); { // Exact match in overrides for (final SSAValue cand : overrides) { if (cand.getType().getName().equals(paramType.getName())) { // XXX: What about the loader? assigned.add(cand); - logger.debug("\t\tAsigning: {} from the overrides (eq)", cand); + debug("\t\tAsigning: {} from the overrides (eq)", cand); continue forEachParameter; } else { - logger.debug("\t\tSkipping: {} of the overrides (eq)", cand); + debug("\t\tSkipping: {} of the overrides (eq)", cand); } } } @@ -1312,10 +1302,10 @@ public class ParameterAccessor { // extends Param-Manager for (final Parameter cand : thisParams) { if (cand.getType().getName().equals(paramType.getName())) { assigned.add(cand); - logger.debug("\t\tAsigning: {} from callers params (eq)", cand); + debug("\t\tAsigning: {} from callers params (eq)", cand); continue forEachParameter; } else { - logger.debug("\t\tSkipping: {} of the callers params (eq)", cand); + debug("\t\tSkipping: {} of the callers params (eq)", cand); } } } @@ -1324,13 +1314,13 @@ public class ParameterAccessor { // extends Param-Manager for (final SSAValue cand : defaults) { if (cand.getType().getName().equals(paramType.getName())) { assigned.add(cand); - logger.debug("\t\tAsigning: {} from the defaults (eq)", cand); + debug("\t\tAsigning: {} from the defaults (eq)", cand); continue forEachParameter; } } } - logger.debug("\tThe parameter is still not found - try again using an assignability check..."); + debug("\tThe parameter is still not found - try again using an assignability check..."); // If we got here we need cha if (cha != null) { @@ -1339,7 +1329,7 @@ public class ParameterAccessor { // extends Param-Manager for (final SSAValue cand : overrides) { if (isAssignable(cand, param, cha)) { assigned.add(cand); - logger.debug("\t\tAsigning: {} from the overrides (ass)", cand); + debug("\t\tAsigning: {} from the overrides (ass)", cand); continue forEachParameter; } } @@ -1352,7 +1342,7 @@ public class ParameterAccessor { // extends Param-Manager try { if (isAssignable(cand, param, cha)) { assigned.add(cand); - logger.debug("\t\tAsigning: {} from the callrs params (ass)", cand); + debug("\t\tAsigning: {} from the callrs params (ass)", cand); continue forEachParameter; } } catch (ClassLookupException e) { @@ -1364,14 +1354,14 @@ public class ParameterAccessor { // extends Param-Manager for (final SSAValue cand : defaults) { if (isAssignable(cand, param, cha)) { assigned.add(cand); - logger.debug("\t\tAsigning: {} from the defaults (ass)", cand); + debug("\t\tAsigning: {} from the defaults (ass)", cand); continue forEachParameter; } } } if (instantiator != null) { - logger.info("Creating new instance of: {} in call to {}", param, callee); + info("Creating new instance of: {} in call to {}", param, callee); /*{ // DEBUG System.out.println("Creating new instance of: " + param); System.out.println("in connectThrough"); @@ -1382,7 +1372,7 @@ public class ParameterAccessor { // extends Param-Manager } // */ final int inst = instantiator.createInstance(param.getType(), instantiatorArgs); if (inst < 0) { - logger.warn("No type was assignable and the instantiator returned an invalidone! Using null for {}", param); + warn("No type was assignable and the instantiator returned an invalidone! Using null for {}", param); assigned.add(null); continue forEachParameter; } else { @@ -1401,14 +1391,14 @@ public class ParameterAccessor { // extends Param-Manager continue forEachParameter; } } else { - logger.warn("No IInstantiator given and no known parameter assignable - using null"); + warn("No IInstantiator given and no known parameter assignable - using null"); assigned.add(null); continue forEachParameter; } } else { // TODO: CreateInstance Call-Back - logger.warn("No type was equal. We can't ask isAssignable since we have no cha!"); + warn("No type was equal. We can't ask isAssignable since we have no cha!"); assigned.add(null); continue forEachParameter; } // of (cha != null) @@ -1461,11 +1451,11 @@ public class ParameterAccessor { // extends Param-Manager IClass toClass = cha.lookupClass(to); if (fromClass == null) { - logger.debug("Unable to look up the type of from=" + from + " in the ClassHierarchy - tying other loaders..."); + debug("Unable to look up the type of from=" + from + " in the ClassHierarchy - tying other loaders..."); for (final IClassLoader loader: cha.getLoaders()) { final IClass cand = loader.lookupClass(from.getName()); if (cand != null) { - logger.debug("Using alternative for from: {}", cand); + debug("Using alternative for from: {}", cand); fromClass = cand; break; } @@ -1479,18 +1469,18 @@ public class ParameterAccessor { // extends Param-Manager } if (toClass == null) { - logger.debug("Unable to look up the type of to=" + to + " in the ClassHierarchy - tying other loaders..."); + debug("Unable to look up the type of to=" + to + " in the ClassHierarchy - tying other loaders..."); for (final IClassLoader loader: cha.getLoaders()) { final IClass cand = loader.lookupClass(to.getName()); if (cand != null) { - logger.debug("Using alternative for to: {}", cand); + debug("Using alternative for to: {}", cand); toClass = cand; break; } } if (toClass == null) { - logger.error("Unable to look up the type of to={} in the ClassHierarchy", to); + error("Unable to look up the type of to={} in the ClassHierarchy", to); return false; //throw new ClassLookupException("Unable to look up the type of to=" + to + // " in the ClassHierarchy"); @@ -1500,7 +1490,7 @@ public class ParameterAccessor { // extends Param-Manager // cha.isAssignableFrom (IClass c1, IClass c2) // Does an expression c1 x := c2 y typecheck? - logger.trace("isAssignableFrom({}, {}) = {}", toClass, fromClass, cha.isAssignableFrom(toClass, fromClass)); + trace("isAssignableFrom({}, {}) = {}", toClass, fromClass, cha.isAssignableFrom(toClass, fromClass)); return cha.isAssignableFrom(toClass, fromClass); } @@ -1523,11 +1513,11 @@ public class ParameterAccessor { // extends Param-Manager IClass superClass = cha.lookupClass(superC); if (subClass == null) { - logger.debug("Unable to look up the type of from=" + sub + " in the ClassHierarchy - tying other loaders..."); + debug("Unable to look up the type of from=" + sub + " in the ClassHierarchy - tying other loaders..."); for (final IClassLoader loader: cha.getLoaders()) { final IClass cand = loader.lookupClass(sub.getName()); if (cand != null) { - logger.debug("Using alternative for from: {}", cand); + debug("Using alternative for from: {}", cand); subClass = cand; break; } @@ -1540,18 +1530,18 @@ public class ParameterAccessor { // extends Param-Manager } if (superClass == null) { - logger.debug("Unable to look up the type of to=" + superC + " in the ClassHierarchy - tying other loaders..."); + debug("Unable to look up the type of to=" + superC + " in the ClassHierarchy - tying other loaders..."); for (final IClassLoader loader: cha.getLoaders()) { final IClass cand = loader.lookupClass(superC.getName()); if (cand != null) { - logger.debug("Using alternative for to: {}", cand); + debug("Using alternative for to: {}", cand); superClass = cand; break; } } if (superClass == null) { - logger.error("Unable to look up the type of to={} in the ClassHierarchy", superC); + error("Unable to look up the type of to={} in the ClassHierarchy", superC); throw new ClassLookupException("Unable to look up the type of to=" + superC + " in the ClassHierarchy"); } @@ -1676,4 +1666,24 @@ public class ParameterAccessor { // extends Param-Manager public String toString() { return ""; } + + private static void debug(String s, Object ... args) { + if (DEBUG) { System.err.printf(s, args); } + } + + private static void info(String s, Object ... args) { + if (DEBUG) { System.err.printf(s, args); } + } + + private static void warn(String s, Object ... args) { + if (DEBUG) { System.err.printf(s, args); } + } + + private static void trace(String s, Object ... args) { + if (DEBUG) { System.err.printf(s, args); } + } + + private static void error(String s, Object ... args) { + if (DEBUG) { System.err.printf(s, args); } + } } diff --git a/com.ibm.wala.core/src/com/ibm/wala/util/ssa/SSAValueManager.java b/com.ibm.wala.core/src/com/ibm/wala/util/ssa/SSAValueManager.java index aaac21cc9..4799e5de9 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/util/ssa/SSAValueManager.java +++ b/com.ibm.wala.core/src/com/ibm/wala/util/ssa/SSAValueManager.java @@ -36,9 +36,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.ibm.wala.ssa.SSAInstruction; import com.ibm.wala.types.MethodReference; import com.ibm.wala.types.TypeReference; @@ -53,8 +50,8 @@ import com.ibm.wala.util.strings.Atom; * @since 2013-09-19 */ public class SSAValueManager { - private static final Logger logger = LoggerFactory.getLogger(SSAValueManager.class); + private final static boolean DEBUG = false; private final boolean AUTOMAKE_NAMES = true; private enum ValueStatus { @@ -149,7 +146,7 @@ public class SSAValueManager { nextLocal = param.value.getNumber() + 1; } - logger.debug("reSetting SSA {} to allocated", value); + debug("reSetting SSA {} to allocated", value); param.status = ValueStatus.ALLOCATED; param.setInScope = currentScope; param.setBy = setBy; @@ -167,7 +164,7 @@ public class SSAValueManager { } // */ throw new IllegalStateException("The parameter " + value + " using Key " + value.key + " has already been allocated"); } else { - logger.info("New variable in management: {}", value); + info("New variable in management: {}", value); final Managed param = new Managed(value, value.key); param.status = ValueStatus.ALLOCATED; param.setInScope = currentScope; @@ -222,21 +219,21 @@ public class SSAValueManager { param.setInScope = currentScope; param.setBy = setBy; - logger.info("Setting SSA {} to phi! now {}", value, param.status); + info("Setting SSA {} to phi! now {}", value, param.status); didPhi = true; } else if (param.setInScope == currentScope) { if (param.status == ValueStatus.INVALIDATED) { - logger.info("Closing SSA Value {} in scope {}", param.value, param.setInScope); + info("Closing SSA Value {} in scope {}", param.value, param.setInScope); param.status = ValueStatus.CLOSED; } else if (param.status == ValueStatus.FREE_INVALIDATED) { // TODO: FREE CLOSED - logger.info("Closing free SSA Value {} in scope {}", param.value, param.setInScope); + info("Closing free SSA Value {} in scope {}", param.value, param.setInScope); param.status = ValueStatus.FREE_CLOSED; } } else if (param.setInScope < currentScope) { //param.status = ValueStatus.INVALIDATED; } else { // TODO: NO! I JUST WANTED TO ADD THEM! *grrr* - //logger.error("MISSING PHI for " + //error("MISSING PHI for " //throw new IllegalStateException("You forgot Phis in subordinate blocks"); } } @@ -282,7 +279,7 @@ public class SSAValueManager { seenTypes.put(key, aParam); } - logger.debug("Returning as Free SSA: {}", param); + debug("Returning as Free SSA: {}", param); return var; } @@ -327,7 +324,7 @@ public class SSAValueManager { seenTypes.put(key, aParam); } - logger.debug("Returning as Unallocated SSA: {}", param); + debug("Returning as Unallocated SSA: {}", param); return var; } @@ -369,10 +366,10 @@ public class SSAValueManager { (param.status == ValueStatus.ALLOCATED)) { //assert (param.value.getType().equals(type)) : "Unequal types"; if (param.setInScope > currentScope) { - logger.debug("SSA Value {} is out of scope {}", param, currentScope); + debug("SSA Value {} is out of scope {}", param, currentScope); continue; } else if (param.setInScope == currentScope) { - logger.debug("Returning SSA Value {} is {}", param.value, param.status); + debug("Returning SSA Value {} is {}", param.value, param.status); return param.value; } else { if ((candidate == null) || (param.setInScope > candidate.setInScope)) { @@ -380,7 +377,7 @@ public class SSAValueManager { } } } else { - logger.debug("SSA Value {} is {}", param, param.status); + debug("SSA Value {} is {}", param, param.status); } } } else { @@ -388,7 +385,7 @@ public class SSAValueManager { } if (candidate != null ) { - logger.debug("Returning inherited (from {}) SSA Value {}", candidate.setInScope, candidate); + debug("Returning inherited (from {}) SSA Value {}", candidate.setInScope, candidate); return candidate.value; } else { throw new IllegalStateException("No suitable candidate has been found for Key " + key); @@ -581,7 +578,7 @@ public class SSAValueManager { } else { param.status = ValueStatus.INVALIDATED; } - logger.info("Invalidated SSA {} for key {}", param, key); + info("Invalidated SSA {} for key {}", param, key); } } } @@ -715,6 +712,13 @@ public class SSAValueManager { return names; } + + private static void debug(String s, Object ... args) { + if (DEBUG) { System.err.printf(s, args); } + } + + private static void info(String s, Object ... args) { + if (DEBUG) { System.err.printf(s, args); } + } + } - - diff --git a/com.ibm.wala.core/src/com/ibm/wala/util/ssa/TypeSafeInstructionFactory.java b/com.ibm.wala.core/src/com/ibm/wala/util/ssa/TypeSafeInstructionFactory.java index 24180bde5..c4343de30 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/util/ssa/TypeSafeInstructionFactory.java +++ b/com.ibm.wala.core/src/com/ibm/wala/util/ssa/TypeSafeInstructionFactory.java @@ -35,9 +35,6 @@ import java.util.Collection; import java.util.Collections; import java.util.List; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.ibm.wala.classLoader.CallSiteReference; import com.ibm.wala.classLoader.JavaLanguage.JavaInstructionFactory; import com.ibm.wala.classLoader.NewSiteReference; @@ -70,8 +67,8 @@ import com.ibm.wala.types.TypeReference; * @since 2013-10-20 */ public class TypeSafeInstructionFactory { - private static final Logger logger = LoggerFactory.getLogger(TypeSafeInstructionFactory.class); + private final static boolean DEBUG = false; protected final JavaInstructionFactory insts; protected final IClassHierarchy cha; @@ -100,7 +97,7 @@ public class TypeSafeInstructionFactory { */ public SSAInvokeInstruction InvokeInstruction(final int iindex, final SSAValue result, List params, final SSAValue exception, final CallSiteReference site) { - logger.info("Now: InvokeInstruction to {} using {}", site, params); + info("Now: InvokeInstruction to {} using {}", site, params); if (iindex < 0) { throw new IllegalArgumentException("The iIndex may not be negative"); } @@ -212,7 +209,7 @@ public class TypeSafeInstructionFactory { */ public SSAInvokeInstruction InvokeInstruction(final int iindex, List params, final SSAValue exception, final CallSiteReference site) { - logger.info("Now: InvokeInstruction to {} using {}", site, params); + info("Now: InvokeInstruction to {} using {}", site, params); if (iindex < 0) { throw new IllegalArgumentException("The iIndex may not be negative"); } @@ -308,7 +305,7 @@ public class TypeSafeInstructionFactory { * @throws IllegalArgumentException if result has no validIn set */ public SSAReturnInstruction ReturnInstruction(final int iindex, final SSAValue result) { - logger.info("Now: ReturnInstruction using {}", result); + info("Now: ReturnInstruction using {}", result); if (iindex < 0) { throw new IllegalArgumentException("iIndex may not be negative"); @@ -336,7 +333,7 @@ public class TypeSafeInstructionFactory { */ public SSAGetInstruction GetInstruction(final int iindex, final SSAValue targetValue, final SSAValue containingInstance, FieldReference field) { - logger.info("Now: Get {} from {} into {}", field, containingInstance, targetValue); + info("Now: Get {} from {} into {}", field, containingInstance, targetValue); if (iindex < 0) { throw new IllegalArgumentException("iIndex may not be negative"); @@ -384,7 +381,7 @@ public class TypeSafeInstructionFactory { * @param field The description of the field */ public SSAGetInstruction GetInstruction(final int iindex, final SSAValue targetValue, FieldReference field) { - logger.info("Now: Get {} into {}", field, targetValue); + info("Now: Get {} into {}", field, targetValue); if (iindex < 0) { throw new IllegalArgumentException("iIndex may not be negative"); @@ -419,7 +416,7 @@ public class TypeSafeInstructionFactory { */ public SSAPutInstruction PutInstruction(final int iindex, final SSAValue targetInstance, final SSAValue newValue, FieldReference field) { - logger.info("Now: Put {} to {}", newValue, field); + info("Now: Put {} to {}", newValue, field); if (iindex < 0) { throw new IllegalArgumentException("iIndex may not be negative"); @@ -465,7 +462,7 @@ public class TypeSafeInstructionFactory { * @param field The description of the target */ public SSAPutInstruction PutInstruction(final int iindex, final SSAValue newValue, FieldReference field) { - logger.info("Now: Put {} to {}", newValue, field); + info("Now: Put {} to {}", newValue, field); if (iindex < 0) { throw new IllegalArgumentException("iIndex may not be negative"); @@ -487,7 +484,7 @@ public class TypeSafeInstructionFactory { public SSANewInstruction NewInstruction(int iindex, SSAValue result, NewSiteReference site) { - logger.info("Now: New {}", result); + info("Now: New {}", result); if (iindex < 0) { throw new IllegalArgumentException("iIndex may not be negative"); @@ -508,7 +505,7 @@ public class TypeSafeInstructionFactory { public SSANewInstruction NewInstruction(int iindex, SSAValue result, NewSiteReference site, Collection params) { - logger.info("Now: New {}", result); + info("Now: New {}", result); if (iindex < 0) { throw new IllegalArgumentException("iIndex may not be negative"); @@ -556,7 +553,7 @@ public class TypeSafeInstructionFactory { * @param params at least one SSAValue to read from */ public SSAPhiInstruction PhiInstruction(int iindex, SSAValue result, Collection params) { - logger.info("Now: Phi into {} from {}", result, params); + info("Now: Phi into {} from {}", result, params); if (iindex < 0) { throw new IllegalArgumentException("iIndex may not be negative"); @@ -714,4 +711,9 @@ public class TypeSafeInstructionFactory { return insts.ArrayStoreInstruction(iindex, array.getNumber(), index, value.getNumber(), innerType); } + + private static void info(String s, Object ... args) { + if (DEBUG) { System.err.printf(s, args); } + } + }