Skip to content
Snippets Groups Projects
Commit 640e5ff8 authored by Emma Söderberg's avatar Emma Söderberg
Browse files

No commit message

No commit message
parent f5897f79
Branches
No related tags found
No related merge requests found
......@@ -693,6 +693,9 @@ aspect JaddCodeGen {
stream.println(ind(5) + "that.setChild(node, i);");
stream.println(ind(4) + "oldNode.in$Circle(false);");
stream.println(ind(4) + "rewriteState = that.state().pop();");
// ES_2011-09-30: Code generation for incremental evaluation, rewrites
if (ASTNode.incremental) jjtGenIncrementalTrackRewrite3(stream);
//
stream.println(ind(3) + "} while(rewriteState == ASTNode$State.REWRITE_CHANGE);");
stream.println(ind(3) + "if(rewriteState == ASTNode$State.REWRITE_NOCHANGE && that.is$Final()) {");
if(ASTNode.stagedRewrites)
......@@ -990,6 +993,7 @@ aspect JaddCodeGen {
public void ASTDecl.jjtGenIncrementalTrackRewrite1(PrintWriter stream) {
stream.println(ind(2) + "if(that.init_children == null) {");
stream.println(ind(3) + "that.init_children = new ASTNode[that.children.length];");
stream.println(ind(3) + "that.rewritten_children = new boolean[that.children.length];");
stream.println(ind(2) + "}");
stream.println(ind(2) + "if(that.init_children[i] == null) {");
stream.println(ind(3) + "that.init_children[i] = node.fullCopy();");
......@@ -1004,6 +1008,12 @@ aspect JaddCodeGen {
//stream.println(ind(2) + "that.children[i] = node;");
//stream.println(ind(2) + "that.children[i].setParent(that);");
}
// ES_2011-09-30: Code generation for incremental evaluation, tracking rewrites
public void ASTDecl.jjtGenIncrementalTrackRewrite3(PrintWriter stream) {
stream.println(ind(4) + "if (rewriteState == ASTNode$State.REWRITE_CHANGE) {");
stream.println(ind(5) + "that.rewritten_children[i] = true;");
stream.println(ind(4) + "}");
}
// ES_2011-09-20: Code generation for incremental evaluation, tracking getChild
......@@ -1064,6 +1074,9 @@ aspect JaddCodeGen {
stream.println(ind(3) + "ASTNode d[] = new ASTNode[i << 1];");
stream.println(ind(3) + "System.arraycopy(init_children, 0, d, 0, init_children.length);");
stream.println(ind(3) + "init_children = d;");
stream.println(ind(3) + "boolean[] b = new boolean[i << 1];");
stream.println(ind(3) + "System.arraycopy(rewritten_children, 0, b, 0, rewritten_children.length);");
stream.println(ind(3) + "rewritten_children = b;");
stream.println(ind(2) + "}");
//
stream.println(ind(2) + "if (getChild_handler != null) {");
......@@ -1130,6 +1143,13 @@ aspect JaddCodeGen {
stream.println(ind(4) + "System.arraycopy(init_children, i, d, i+1, init_children.length);");
stream.println(ind(3) + "}");
stream.println(ind(3) + "init_children = d;");
stream.println(ind(3) + "boolean b[] = new boolean[i << 1];");
stream.println(ind(3) + "System.arraycopy(rewritten_children, 0, b, 0, rewritten_children.length);");
stream.println(ind(3) + "if (i < rewritten_children.length) {");
stream.println(ind(4) + "System.arraycopy(rewritten_children, i, b, i+1, rewritten_children.length);");
stream.println(ind(3) + "}");
stream.println(ind(3) + "rewritten_children = b;");
stream.println(ind(2) + "}");
//
stream.println(ind(2) + "if (getChild_handler != null) {");
......@@ -1171,6 +1191,7 @@ aspect JaddCodeGen {
stream.println(ind(3) + "if (init_children != null) {");
stream.println(ind(4) + "init_children[i] = null;");
stream.println(ind(4) + "System.arraycopy(init_children, i+1, init_children, i, init_children.length-i-1);");
stream.println(ind(4) + "System.arraycopy(rewritten_children, i+1, rewritten_children, i, rewritten_children.length-i-1);");
stream.println(ind(3) + "}");
//
stream.println(ind(3) + "if (getChild_handler != null) {");
......@@ -1771,6 +1792,7 @@ aspect JaddCodeGen {
// rewrite code
if (name().equals("ASTNode")) {
stream.println(ind + "protected ASTNode[] ASTNode.init_children;");
stream.println(ind + "protected boolean[] ASTNode.rewritten_children;");
}
//
......@@ -1911,9 +1933,10 @@ aspect JaddCodeGen {
if (name().equals("ASTNode")) {
stream.println(" if (attrID.equals(\"getChild\")) {");
stream.println(" int i = (Integer)_parameters;");
stream.println(" if (init_children != null && init_children[i] != null) {");
stream.println(" if (rewritten_children != null && rewritten_children[i]) {");
stream.println(" getChild(i).notifyForRemove();");
stream.println(" children[i] = init_children[i];");
stream.println(" rewritten_children[i] = false;");
stream.println(" init_children[i] = null;");
stream.println(" }");
stream.println(" }");
......@@ -2193,8 +2216,8 @@ aspect JaddCodeGen {
stream.println(" public void " + name() + ".dumpCachedValues() {");
if (name().equals("ASTNode")) {
// rewrite code
stream.println(" for (int k = 0; init_children != null && k < init_children.length; k++) {");
stream.println(" if (init_children[k] != null) {");
stream.println(" for (int k = 0; rewritten_children != null && k < rewritten_children.length; k++) {");
stream.println(" if (rewritten_children[k]) {");
stream.println(" System.out.println(getChildNoTransform(k).relativeNodeID() + " +
"\" rewritten from \" + init_children[k].relativeNodeID());");
stream.println(" }");
......
Dependencies:
dep(A:a1 -> A:getName)
dep(A:b2 -> A:getName)
dep(A:b3 -> A:getName)
dep(A:b6 -> A:getName)
dep(A:c4 -> A:getName)
dep(A:c5 -> A:getName)
dep(A:a3 -> A:b3)
dep(A:b3 -> A:getName)
dep(A:a4 -> A:c4)
dep(A:c4 -> A:getName)
dep(A:b5 -> A:c5)
dep(A:c5 -> A:getName)
dep(A:a6 -> A:b6)
dep(A:b6 -> A:getName)
dep(A:a7 -> A:b7_2)
dep(A:a7 -> A:c7_1)
dep(A:a8 -> A:c8_1)
......
Dependencies:
dep(A:c_String[a] -> A:getName)
dep(A:c_String[b] -> A:getName)
dep(A:a1 -> A:c_String[b])
dep(A:a0 -> A:c_String[a])
dep(A:a1 -> A:c_String[b])
dep(A:c_String[b] -> A:getName)
dep(A:c_String[a] -> A:getName)
Cached values:
value(A:a0, false)
value(A:a1, true)
......
Dependencies after b1.decl:
dep(A/List[0]/B[0]:decl -> A:getChild[0])
dep(A/List[0]/B[0]:decl -> A/List[0]:getParent)
dep(A/List[0]/B[0]:decl -> A/List[0]:getChild[0])
dep(A/List[0]/B[0]:decl -> A/List[0]:getChild[1])
dep(A:getChild[0] -> A/List[0]:getChild[0])
dep(A:getChild[0] -> A/List[0]:getChild[1])
dep(A/List[0]/B[0]:decl -> A/List[0]/B[0]:getName)
dep(A/List[0]/B[0]:decl -> A/List[0]/B[0]:getUse)
dep(A/List[0]/B[0]:decl -> A/List[0]/B[0]:getParent)
dep(A/List[0]/B[0]:decl -> A/List[0]/B[0]:getUse)
dep(A/List[0]/B[0]:decl -> A/List[0]/B[1]:getName)
dep(A/List[0]/B[0]:decl -> A/List[0]:getChild[0])
dep(A/List[0]/B[0]:decl -> A/List[0]:getChild[1])
dep(A/List[0]/B[0]:decl -> A/List[0]:getParent)
dep(A/List[0]/B[0]:decl -> A:getChild[0])
Cached values after b1.decl:
A/List[0] rewritten from A/List
value(A/List[0]/B[0]:decl, A/List[0]/B[1])
Dependencies after b2.decl:
dep(A/List[0]/B[0]:decl -> A:getChild[0])
dep(A/List[0]/B[1]:decl -> A:getChild[0])
dep(A/List[0]/B[0]:decl -> A/List[0]:getParent)
dep(A/List[0]/B[1]:decl -> A/List[0]:getParent)
dep(A/List[0]/B[0]:decl -> A/List[0]:getChild[0])
dep(A/List[0]/B[1]:decl -> A/List[0]:getChild[0])
dep(A/List[0]/B[0]:decl -> A/List[0]:getChild[1])
dep(A/List[0]/B[1]:decl -> A/List[0]:getChild[1])
dep(A:getChild[0] -> A/List[0]:getChild[0])
dep(A:getChild[0] -> A/List[0]:getChild[1])
dep(A/List[0]/B[0]:decl -> A/List[0]/B[0]:getName)
dep(A/List[0]/B[1]:decl -> A/List[0]/B[0]:getName)
dep(A/List[0]/B[0]:decl -> A/List[0]/B[0]:getUse)
dep(A/List[0]/B[0]:decl -> A/List[0]/B[0]:getParent)
dep(A/List[0]/B[0]:decl -> A/List[0]/B[0]:getUse)
dep(A/List[0]/B[0]:decl -> A/List[0]/B[1]:getName)
dep(A/List[0]/B[1]:decl -> A/List[0]/B[1]:getUse)
dep(A/List[0]/B[0]:decl -> A/List[0]:getChild[0])
dep(A/List[0]/B[0]:decl -> A/List[0]:getChild[1])
dep(A/List[0]/B[0]:decl -> A/List[0]:getParent)
dep(A/List[0]/B[0]:decl -> A:getChild[0])
dep(A/List[0]/B[1]:decl -> A/List[0]/B[0]:getName)
dep(A/List[0]/B[1]:decl -> A/List[0]/B[1]:getParent)
dep(A/List[0]/B[1]:decl -> A/List[0]/B[1]:getUse)
dep(A/List[0]/B[1]:decl -> A/List[0]:getChild[0])
dep(A/List[0]/B[1]:decl -> A/List[0]:getChild[1])
dep(A/List[0]/B[1]:decl -> A/List[0]:getParent)
dep(A/List[0]/B[1]:decl -> A:getChild[0])
Cached values after b2.decl:
A/List[0] rewritten from A/List
value(A/List[0]/B[0]:decl, A/List[0]/B[1])
value(A/List[0]/B[1]:decl, A/List[0]/B[0])
......@@ -8,14 +8,12 @@ public class Test123 {
B b1 = new B("b", "a");
B b2 = new B("a", "b");
A a = new A(new test.ast.List().add(b1).add(b2));
b1 = a.getB(0);
b2 = a.getB(1);
b1.decl();
System.out.println("Dependencies after b1.decl:");
a.dumpDependencies();
a.getChild(0).dumpDependencies();
......@@ -27,8 +25,8 @@ public class Test123 {
b1.dumpCachedValues();
b2.dumpCachedValues();
b2.setName("c");
System.out.println("Dependencies after b2.setName:");
a.dumpDependencies();
a.getChild(0).dumpDependencies();
......
......@@ -78,3 +78,4 @@ test/Test124.java passed
test/Test125.java passed
test/Test126.java passed
test/Test127.java passed
test/Test128.java passed
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment