From f5782f81968ecc5906c6625e8ad903a489e93410 Mon Sep 17 00:00:00 2001 From: Meng Meng Date: Mon, 16 Nov 2015 13:53:59 -0800 Subject: [PATCH 1/3] Changes on calculate() --- src/main/gov/nasa/jpf/vm/va/DataCollect.java | 14 +++------- src/main/gov/nasa/jpf/vm/va/StackHandler.java | 1 - src/main/gov/nasa/jpf/vm/va/Test.java | 26 ++++++++++--------- 3 files changed, 18 insertions(+), 23 deletions(-) diff --git a/src/main/gov/nasa/jpf/vm/va/DataCollect.java b/src/main/gov/nasa/jpf/vm/va/DataCollect.java index 6cb62d07..055a2cd0 100644 --- a/src/main/gov/nasa/jpf/vm/va/DataCollect.java +++ b/src/main/gov/nasa/jpf/vm/va/DataCollect.java @@ -24,10 +24,6 @@ public void set(Integer size, Integer min, Integer max, Integer ave) { this.ave = ave; } - - public void setMin(Integer min){ - this.min = min; - } public void push(){ calculate(); @@ -56,20 +52,18 @@ public void calculate(){ Integer sum = temp.get(0) + 1; max = temp.get(0) + 1; min = temp.get(0) + 1; - if(max > gmax){ - gmax = max; - } for(int i = 1; i < len; i++){ - if(temp.get(i) + 1 > gmax){ - this.gmax = temp.get(i) + 1; - } if(temp.get(i) + 1 > max) this.max = temp.get(i) + 1; if(temp.get(i) + 1 < min){ this.min = temp.get(i) + 1; } + sum += temp.get(i) + 1; } + if(this.max > this.gmax){ + this.gmax = this.max; + } this.ave = sum/len; this.size = len; } diff --git a/src/main/gov/nasa/jpf/vm/va/StackHandler.java b/src/main/gov/nasa/jpf/vm/va/StackHandler.java index b9c9f317..c12098a4 100644 --- a/src/main/gov/nasa/jpf/vm/va/StackHandler.java +++ b/src/main/gov/nasa/jpf/vm/va/StackHandler.java @@ -84,7 +84,6 @@ public String toString() { @SuppressWarnings("unchecked") public StackHandler(FeatureExpr ctx, int nLocals, int nOperands) { - c.setMin(nOperands); if (ctx == null) { throw new RuntimeException("CTX == NULL"); } diff --git a/src/main/gov/nasa/jpf/vm/va/Test.java b/src/main/gov/nasa/jpf/vm/va/Test.java index 15e1d229..9f189ae1 100644 --- a/src/main/gov/nasa/jpf/vm/va/Test.java +++ b/src/main/gov/nasa/jpf/vm/va/Test.java @@ -49,18 +49,25 @@ public static void main(String[] args) { Conditional F = ChoiceFactory.create(tb, G, new One<>(10)); - //stack.push(FeatureExprFactory.True(), A, true); stack.push(FeatureExprFactory.True(), B, false); stack.push(FeatureExprFactory.True(), C, true); stack.push(FeatureExprFactory.True(), D, false); + stack.pop(FeatureExprFactory.True()); stack.push(FeatureExprFactory.True(), E, false); - //stack.push(FeatureExprFactory.True(), F, false); - //stack.push(FeatureExprFactory.True(), G, false); - //stack.dup2_x2(ctx); - stack.push(ta, B, false); - stack.pop(ta); + stack.push(ta.not(), D, false); stack.dup(ta.not()); stack.dup(ta.not()); + stack.pop(ta.not()); + + // System.out.println(StackHandler.q.toString()); + stack.push(tb, D); + + + +// System.out.println(StackHandler.q.toString()); +// System.out.println(stack.toString()); + + // IStackHandler stack2 = StackHandlerFactory.createStack(FeatureExprFactory.True(), 0, 10); // stack2.push(FeatureExprFactory.True(), A, true); // stack2.push(FeatureExprFactory.True(), B, false); @@ -69,14 +76,9 @@ public static void main(String[] args) { //stack.push(FeatureExprFactory.True(), E, false); //stack2.push(FeatureExprFactory.True(), F, false); - - + //System.out.println(stack); //System.out.println(stack.getTop()); //System.out.println(stack.numOP().toString()); - System.out.println(StackHandler.q.toString()); - //System.out.println(stack); - - //System.out.println(stack2.getTop()); //System.out.println(stack2.numOP().toString()); From e57466ca7a9ebdd632cf7816aea44de47f97e370 Mon Sep 17 00:00:00 2001 From: Meng Meng Date: Sun, 22 Nov 2015 01:50:53 -0800 Subject: [PATCH 2/3] add methods in DataCollect class and add a Log file --- site.properties | 2 +- src/main/gov/nasa/jpf/vm/va/DataCollect.java | 134 +++++++++++++++--- src/main/gov/nasa/jpf/vm/va/Log.java | 32 +++++ src/main/gov/nasa/jpf/vm/va/Stack.java | 8 +- src/main/gov/nasa/jpf/vm/va/StackHandler.java | 10 +- src/main/gov/nasa/jpf/vm/va/Test.java | 13 +- 6 files changed, 163 insertions(+), 36 deletions(-) create mode 100644 src/main/gov/nasa/jpf/vm/va/Log.java diff --git a/site.properties b/site.properties index 7c7cb341..639bba5c 100644 --- a/site.properties +++ b/site.properties @@ -5,7 +5,7 @@ # can only expand system properties #jpf-core = ${user.home}/IdeaProjects/VarexJ -jpf-core = ${user.dir} +jpf-core = ${user.home}/Documents/package/jpf-core jpf-nhandler = ${jpf-core}/jpf-nhandler extensions = ${jpf-core},${jpf-nhandler} diff --git a/src/main/gov/nasa/jpf/vm/va/DataCollect.java b/src/main/gov/nasa/jpf/vm/va/DataCollect.java index 055a2cd0..66753250 100644 --- a/src/main/gov/nasa/jpf/vm/va/DataCollect.java +++ b/src/main/gov/nasa/jpf/vm/va/DataCollect.java @@ -1,11 +1,10 @@ package gov.nasa.jpf.vm.va; import java.util.*; +import de.fosd.typechef.featureexpr.FeatureExpr; public class DataCollect { public Integer numCopy = 0; - public StackHandler owner; - // change name Integer size = 0; Integer max = 0; Integer min = 0; @@ -13,8 +12,8 @@ public class DataCollect { Integer gmax = 0; - public DataCollect(StackHandler sh){ - this.owner = sh; + public DataCollect(){ + } public void set(Integer size, Integer min, Integer max, Integer ave) { @@ -24,30 +23,118 @@ public void set(Integer size, Integer min, Integer max, Integer ave) { this.ave = ave; } - - public void push(){ - calculate(); -// System.out.println("PUSH"); -// System.out.println(owner.toString()); -// System.out.println(this.toString()); + /*** + * StackHandler + * push pop isref INC + * set dup swap + */ + public void push(StackHandler sh, final FeatureExpr ctx, final Object value, final boolean isRef){ + calculate(sh); + Log.getInstance().info("PUSH\n"+ sh.toString() + "\n" + this.toString()); } - public void pop(){ - calculate(); -// System.out.println("POP"); -// System.out.println(owner.toString()); -// System.out.println(this.toString()); + public void pop(StackHandler sh, FeatureExpr ctx, final int n){ + calculate(sh); + Log.getInstance().info("POP\n"+ sh.toString() + "\n" + this.toString()); + } + + public void set(StackHandler sh, final FeatureExpr ctx, final int offset, final int value, final boolean isRef){} + + public void dup(StackHandler sh, final FeatureExpr ctx) { + calculate(sh); + Log.getInstance().info("DUP\n"+ sh.toString() + "\n" + this.toString()); } + + public void isRef(StackHandler sh, final FeatureExpr ctx, final int offset) {} + + public void set(final FeatureExpr ctx, final int offset, final int value, final boolean isRef) {} + + public void getTop(StackHandler sh) {} + + public void setTop(StackHandler sh, final FeatureExpr ctx, final int i) {} + + public void clear(StackHandler sh, final FeatureExpr ctx) {} + + public void getSlots(StackHandler sh, FeatureExpr ctx) {} + + /*** + * Stack operations + * + * + */ + public void dup_x1(StackHandler sh, final FeatureExpr ctx) {} + + public void dup2_x2(StackHandler sh, final FeatureExpr ctx) {} + + public void dup2_x1(StackHandler sh, final FeatureExpr ctx) {} + + public void dup2(StackHandler sh, final FeatureExpr ctx) {} - public void dup(){ - calculate(); -// System.out.println("DUP"); -// System.out.println(owner.toString()); -// System.out.println(this.toString()); + public void dup_x2(StackHandler sh, final FeatureExpr ctx){} + + public void swap(StackHandler sh, final FeatureExpr ctx) {} + + public void getLength(StackHandler sh) {} + + public void getStack(StackHandler sh) {} + + public void getAllReferences(StackHandler sh) {} + + public void getLocalWidth(StackHandler sh) {} + + public void getMaxLocal(StackHandler sh) {} + + public void IINC(StackHandler sh, FeatureExpr ctx, int index, final int increment){} + + + /*** + * Stack + * stackcopy entrycopy + * + */ + + public void stackcopy(Stack s) { + this.numCopy += s.top+1; } - public void calculate(){ - List temp = owner.getTop().toList(); + public void clear(Stack s){} + + public void setRef(Stack s, int index, boolean ref){} + + public void hasAnyRef(Stack s){} + + public void getSlots(Stack s){} + + public void get(Stack s, int index){} + + public void peek(Stack s, int offset){} + + public void push(Stack s, Integer value, boolean isRef){} + + public void isRef(Stack s, int offset){} + + public void isRefIndex(Stack s, int index){} + + public void set(Stack s, int offset, int value, boolean isRef){} + + public void setIndex(Stack s, int index, Integer value, boolean isRef){} + + public void dup2_x1(Stack s){} + + public void dup2(Stack s){} + + public void dup(Stack s){} + + public void dup_x2(Stack s){} + + public void swap(Stack s){} + + public void getReferences(Stack s){} + + public void entrycopy(Stack s){} + + public void calculate(StackHandler sh){ + List temp = sh.getTop().toList(); Integer len = temp.size(); Integer sum = temp.get(0) + 1; max = temp.get(0) + 1; @@ -68,6 +155,9 @@ public void calculate(){ this.size = len; } + + + public String toString(){ return "The size is " + this.size + "\nMinimun elements is "+ this.min + "\nMaximum elements is " +this.max + "\nAverage is " + this.ave + "\nNumbers of copys " + this.numCopy + "\ngmax is "+ this.gmax+ "\n"; } diff --git a/src/main/gov/nasa/jpf/vm/va/Log.java b/src/main/gov/nasa/jpf/vm/va/Log.java new file mode 100644 index 00000000..0b8ff606 --- /dev/null +++ b/src/main/gov/nasa/jpf/vm/va/Log.java @@ -0,0 +1,32 @@ +package gov.nasa.jpf.vm.va; + +import java.io.IOException; +import java.util.logging.FileHandler; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.logging.SimpleFormatter;; +public class Log { + static Logger logger = null; + public static void init() { + logger = Logger.getLogger("DataCollect"); + logger.setLevel(Level.INFO); + FileHandler fileHandler = null; + try { + fileHandler = new FileHandler("/home/meng/Documents/1.log"); + } catch(IOException e) { + } + fileHandler.setLevel(Level.INFO); + SimpleFormatter formatter = new SimpleFormatter(); + fileHandler.setFormatter(formatter); + logger.addHandler(fileHandler); + logger.setUseParentHandlers(false); + logger.info("Begin Crawling, Good Luck!"); + } + public static Logger getInstance() { + if(logger == null) { + System.out.println("init()"); + init(); + } + return logger; + } +} diff --git a/src/main/gov/nasa/jpf/vm/va/Stack.java b/src/main/gov/nasa/jpf/vm/va/Stack.java index 64f6e1a2..2303a4ea 100644 --- a/src/main/gov/nasa/jpf/vm/va/Stack.java +++ b/src/main/gov/nasa/jpf/vm/va/Stack.java @@ -16,13 +16,13 @@ public class Stack { public int top; public Entry[] slots; - public DataCollect owner; + public DataCollect c; public Stack(int nOperands, DataCollect dc) { top = -1; slots = new Entry[nOperands]; - owner = dc; + c = dc; } public void clear() { @@ -115,9 +115,9 @@ public void setIndex(int index, Integer value, boolean isRef) { Stack copy() { - owner.numCopy += top+1; + c.stackcopy(this); //System.out.println(owner.c.redNum); - Stack clone = new Stack(slots.length, owner); + Stack clone = new Stack(slots.length, c); clone.top = top; System.arraycopy(slots, 0, clone.slots, 0, top + 1); return clone; diff --git a/src/main/gov/nasa/jpf/vm/va/StackHandler.java b/src/main/gov/nasa/jpf/vm/va/StackHandler.java index c12098a4..7b102fde 100644 --- a/src/main/gov/nasa/jpf/vm/va/StackHandler.java +++ b/src/main/gov/nasa/jpf/vm/va/StackHandler.java @@ -46,7 +46,7 @@ enum StackInstruction { //*** dataCollect class object***// - public DataCollect c = new DataCollect(this); + public DataCollect c = new DataCollect(); static LinkedList q = new LinkedList(); @@ -438,7 +438,7 @@ public Conditional apply(final FeatureExpr f, final Stack stack) { return ChoiceFactory.create(ctx, new One<>(clone), new One<>(stack)); } }).simplify(); - c.push(); + c.push(this, ctx, value, isRef); } /* (non-Javadoc) @@ -513,7 +513,7 @@ public Conditional apply(final FeatureExpr f, final Stack s) { } }).simplifyValues(); stack = stack.simplify(); - c.pop(); + c.pop(this, ctx, 0); return result; } @@ -541,7 +541,7 @@ public Conditional apply(final FeatureExpr f, final Stack s) { return ChoiceFactory.create(f, new One<>(clone), new One<>(s)); } }).simplify(); - c.pop(); + c.pop(this, ctx, n); } /* (non-Javadoc) @@ -846,6 +846,7 @@ public void dup2(final FeatureExpr ctx) { @Override public void dup(final FeatureExpr ctx) { function(ctx, StackInstruction.DUP); + c.dup(this, ctx); } /* (non-Javadoc) @@ -909,7 +910,6 @@ public Conditional apply(final FeatureExpr f, final Stack stack) { return ChoiceFactory.create(ctx, new One<>(clone), new One<>(stack)); } }).simplify(); - c.dup(); } @Override diff --git a/src/main/gov/nasa/jpf/vm/va/Test.java b/src/main/gov/nasa/jpf/vm/va/Test.java index 9f189ae1..6d53ae55 100644 --- a/src/main/gov/nasa/jpf/vm/va/Test.java +++ b/src/main/gov/nasa/jpf/vm/va/Test.java @@ -5,6 +5,7 @@ import gov.nasa.jpf.vm.MJIEnv; import gov.nasa.jpf.vm.Types; +import java.io.IOException; import java.util.Arrays; import java.util.HashSet; import java.util.Set; @@ -18,12 +19,15 @@ import cmu.conditional.VoidBiFunction; import de.fosd.typechef.featureexpr.FeatureExpr; import de.fosd.typechef.featureexpr.FeatureExprFactory; - +import java.util.logging.*; +import java.util.logging.Logger; +import java.util.logging.FileHandler; +import java.util.logging.Handler; public class Test { - - public static void main(String[] args) { - + + public static void main(String[] args) throws IOException { + FeatureExpr ta, tb, tc; @@ -58,6 +62,7 @@ public static void main(String[] args) { stack.dup(ta.not()); stack.dup(ta.not()); stack.pop(ta.not()); + stack.pop(ta, 2); // System.out.println(StackHandler.q.toString()); stack.push(tb, D); From f89dff27aa328bd22d3dc8cf060f65904351edab Mon Sep 17 00:00:00 2001 From: Meng Meng Date: Sun, 22 Nov 2015 18:17:25 -0800 Subject: [PATCH 3/3] Add the StackHandlerTracker file --- src/main/gov/nasa/jpf/vm/va/Stack.java | 4 +-- src/main/gov/nasa/jpf/vm/va/StackHandler.java | 10 +++---- ...aCollect.java => StackHandlerTracker.java} | 30 +++++++++++-------- 3 files changed, 24 insertions(+), 20 deletions(-) rename src/main/gov/nasa/jpf/vm/va/{DataCollect.java => StackHandlerTracker.java} (93%) diff --git a/src/main/gov/nasa/jpf/vm/va/Stack.java b/src/main/gov/nasa/jpf/vm/va/Stack.java index 2303a4ea..ded26e83 100644 --- a/src/main/gov/nasa/jpf/vm/va/Stack.java +++ b/src/main/gov/nasa/jpf/vm/va/Stack.java @@ -16,10 +16,10 @@ public class Stack { public int top; public Entry[] slots; - public DataCollect c; + public StackHandlerTracker c; - public Stack(int nOperands, DataCollect dc) { + public Stack(int nOperands, StackHandlerTracker dc) { top = -1; slots = new Entry[nOperands]; c = dc; diff --git a/src/main/gov/nasa/jpf/vm/va/StackHandler.java b/src/main/gov/nasa/jpf/vm/va/StackHandler.java index 7b102fde..cbf4d6e2 100644 --- a/src/main/gov/nasa/jpf/vm/va/StackHandler.java +++ b/src/main/gov/nasa/jpf/vm/va/StackHandler.java @@ -45,10 +45,10 @@ enum StackInstruction { public FeatureExpr stackCTX; - //*** dataCollect class object***// - public DataCollect c = new DataCollect(); + //*** StackHandlerTracker class object***// + public StackHandlerTracker c = new StackHandlerTracker(); - static LinkedList q = new LinkedList(); + //static LinkedList q = new LinkedList(); /* (non-Javadoc) @@ -92,7 +92,7 @@ public StackHandler(FeatureExpr ctx, int nLocals, int nOperands) { Arrays.fill(locals, nullValue); stack = new One<>(new Stack(nOperands, this.c)); stackCTX = ctx; - q.addLast(this.c); + //q.addLast(this.c); } @SuppressWarnings("unchecked") @@ -513,7 +513,7 @@ public Conditional apply(final FeatureExpr f, final Stack s) { } }).simplifyValues(); stack = stack.simplify(); - c.pop(this, ctx, 0); + c.pop(this, ctx,0); return result; } diff --git a/src/main/gov/nasa/jpf/vm/va/DataCollect.java b/src/main/gov/nasa/jpf/vm/va/StackHandlerTracker.java similarity index 93% rename from src/main/gov/nasa/jpf/vm/va/DataCollect.java rename to src/main/gov/nasa/jpf/vm/va/StackHandlerTracker.java index 66753250..0e59f270 100644 --- a/src/main/gov/nasa/jpf/vm/va/DataCollect.java +++ b/src/main/gov/nasa/jpf/vm/va/StackHandlerTracker.java @@ -3,18 +3,23 @@ import java.util.*; import de.fosd.typechef.featureexpr.FeatureExpr; -public class DataCollect { - public Integer numCopy = 0; - Integer size = 0; - Integer max = 0; - Integer min = 0; - Integer ave = 0; - Integer gmax = 0; +public class StackHandlerTracker { + Integer numCopy; + Integer size; + Integer max; + Integer min; + Integer ave; + Integer gmax; - public DataCollect(){ - - } + StackHandlerTracker() { + this.numCopy = 0; + this.size = 0; + this.max = 0; + this.min = 0; + this.ave = 0; + this.gmax = 0; + } public void set(Integer size, Integer min, Integer max, Integer ave) { this.size = size; @@ -86,7 +91,6 @@ public void getMaxLocal(StackHandler sh) {} public void IINC(StackHandler sh, FeatureExpr ctx, int index, final int increment){} - /*** * Stack * stackcopy entrycopy @@ -96,7 +100,7 @@ public void IINC(StackHandler sh, FeatureExpr ctx, int index, final int incremen public void stackcopy(Stack s) { this.numCopy += s.top+1; } - + public void clear(Stack s){} public void setRef(Stack s, int index, boolean ref){} @@ -132,7 +136,7 @@ public void swap(Stack s){} public void getReferences(Stack s){} public void entrycopy(Stack s){} - + public void calculate(StackHandler sh){ List temp = sh.getTop().toList(); Integer len = temp.size();