From 6365b6d764413c2a8edcf028b3f9c52f481cab8f Mon Sep 17 00:00:00 2001
From: rschoene <rene.schoene@tu-dresden.de>
Date: Thu, 3 Jun 2021 16:23:15 +0200
Subject: [PATCH] Use trace hooks.

- add hooks for setParent, insertChild and removeChild
---
 src/template/incremental/ASTChange.tt | 26 +++++------
 src/template/trace/TraceHooks.tt      | 65 +++++++++++++++++++++++++++
 src/template/trace/Tracer.tt          |  4 +-
 3 files changed, 77 insertions(+), 18 deletions(-)

diff --git a/src/template/incremental/ASTChange.tt b/src/template/incremental/ASTChange.tt
index 53b75191..687bc476 100644
--- a/src/template/incremental/ASTChange.tt
+++ b/src/template/incremental/ASTChange.tt
@@ -27,6 +27,7 @@
 
 ASTNode.incHookSetParent = [[
 $if (IncrementalEnabled)
+$include(ASTNode.traceFlushIncBeginSetParent)
 $if (IncrementalLevelParam)
 if (state().disableDeps == 0 && !state().IN_ATTR_STORE_EVAL) {
   getParent_handler.notifyDependencies();
@@ -51,6 +52,7 @@ if (state().disableDeps == 0 && !(state().IN_COMPUTATION > 0)) {
   }
 }
 $endif
+$include(ASTNode.traceFlushIncEndSetParent)
 /*
 if (node != null) {
   inc_changeState(node.inc_state);
@@ -63,10 +65,7 @@ $endif
 
 ASTNode.incHookSetChild1 = [[
 $if(IncrementalEnabled)
-$if (TraceFlush)
-Object flushIncToken = new Object();
-state().trace().flushIncStart(this, "setChild", flushIncToken);
-$endif
+$include(ASTNode.traceFlushIncBeginSetChild)
 
 $if(IncrementalLevelParam)
 if (state().disableDeps == 0 && !state().IN_ATTR_STORE_EVAL) {
@@ -166,15 +165,13 @@ $endif
 
 ASTNode.incHookSetChild5 = [[
 $if(IncrementalEnabled)
-$if (TraceFlush)
-state().trace().flushIncEnd(this, "setChild", flushIncToken);
-$endif
+$include(ASTNode.traceFlushIncEndSetChild)
 $endif
 ]]
 
 ASTNode.incHookInsertChild1 = [[
 $if(IncrementalEnabled)
-
+$include(ASTNode.traceFlushIncBeginInsertChild)
 $if(IncrementalLevelParam)
 if (state().disableDeps == 0 && !state().IN_ATTR_STORE_EVAL) {
   numChildren_handler.notifyDependencies();
@@ -241,6 +238,7 @@ if (getChild_handler != null) {
   getChild_handler = h;
 }
 $endif
+$include(ASTNode.traceFlushIncEndInsertChild)
 
 $endif
 ]]
@@ -248,7 +246,7 @@ $endif
 
 ASTNode.incHookRemoveChild1 = [[
 $if(IncrementalEnabled)
-
+$include(ASTNode.traceFlushIncBeginRemoveChild)
 $if(IncrementalLevelParam)
 if (state().disableDeps == 0 && !state().IN_ATTR_STORE_EVAL) {
   if (children[i] != null) {
@@ -320,16 +318,14 @@ if (getChild_handler != null && this instanceof $List) {
   getChild_handler[numChildren] = null;
 }
 $endif
+$include(ASTNode.traceFlushIncEndRemoveChild)
 
 $endif
 ]]
 
 TokenComponent.incHookSetToken = [[
 $if(IncrementalEnabled)
-$if (TraceFlush)
-Object flushIncToken = new Object();
-state().trace().flushIncStart(this, "set$(Id)", flushIncToken);
-$endif
+$include(TokenComponent.traceFlushIncBeginSetToken)
 
 $if(IncrementalLevelParam)
 if (state().disableDeps == 0 && !state().IN_ATTR_STORE_EVAL) {
@@ -400,8 +396,6 @@ if (state().disableDeps == 0 && !(state().IN_COMPUTATION > 0)) {
 $endif
 
 }
-$if (TraceFlush)
-state().trace().flushIncEnd(this, "set$(Id)", flushIncToken);
-$endif
+$include(TokenComponent.traceFlushIncEndSetToken)
 $endif
 ]]
diff --git a/src/template/trace/TraceHooks.tt b/src/template/trace/TraceHooks.tt
index 31090ec4..53654d99 100644
--- a/src/template/trace/TraceHooks.tt
+++ b/src/template/trace/TraceHooks.tt
@@ -323,6 +323,71 @@ state().trace().flushAttr("#getAspectName", this, "#hostClassName.#signatureJava
 $endif
 ]]
 
+ASTNode.traceFlushIncBeginSetChild [[
+$if (TraceFlush)
+Object flushIncToken = new Object();
+state().trace().flushIncStart(this, "setChild", flushIncToken);
+$endif
+]]
+
+TokenComponent.traceFlushIncBeginSetToken [[
+$if (TraceFlush)
+Object flushIncToken = new Object();
+state().trace().flushIncStart(this, "set$(Id)", flushIncToken);
+$endif
+]]
+
+ASTNode.traceFlushIncBeginInsertChild [[
+$if (TraceFlush)
+Object flushIncToken = new Object();
+state().trace().flushIncStart(this, "insertChild", flushIncToken);
+$endif
+]]
+
+ASTNode.traceFlushIncBeginRemoveChild [[
+$if (TraceFlush)
+Object flushIncToken = new Object();
+state().trace().flushIncStart(this, "removeChild", flushIncToken);
+$endif
+]]
+
+ASTNode.traceFlushIncBeginSetParent [[
+$if (TraceFlush)
+Object flushIncToken = new Object();
+state().trace().flushIncStart(this, "setParent", flushIncToken);
+$endif
+]]
+
+ASTNode.traceFlushIncEndSetChild [[
+$if (TraceFlush)
+state().trace().flushIncEnd(this, "setChild", flushIncToken);
+$endif
+]]
+
+TokenComponent.traceFlushIncEndSetToken [[
+$if (TraceFlush)
+state().trace().flushIncEnd(this, "set$(Id)", flushIncToken);
+$endif
+]]
+
+ASTNode.traceFlushIncEndInsertChild [[
+$if (TraceFlush)
+state().trace().flushIncEnd(this, "insertChild", flushIncToken);
+$endif
+]]
+
+ASTNode.traceFlushIncEndRemoveChild [[
+$if (TraceFlush)
+state().trace().flushIncEnd(this, "removeChild", flushIncToken);
+$endif
+]]
+
+ASTNode.traceFlushIncEndSetParent [[
+$if (TraceFlush)
+state().trace().flushIncEnd(this, "setParent", flushIncToken);
+$endif
+]]
+
 AttrDecl.traceFlushIncAttr [[
 $if (TraceFlush)
 state.trace().flushIncAttr("#getAspectName", fNode, fAttrID, "", "");
diff --git a/src/template/trace/Tracer.tt b/src/template/trace/Tracer.tt
index 914265b1..6fcc5946 100644
--- a/src/template/trace/Tracer.tt
+++ b/src/template/trace/Tracer.tt
@@ -354,14 +354,14 @@ public static class Trace {
    * Trace that flushing done by incremental evaluation begun.
    */
   public void flushIncStart($ASTNode node, String child, Object value) {
-    receiver.accept($StateClass.Trace.Event.INC_FLUSH_START, node, child, "", value);
+    receiver.accept($StateClass.Trace.Event.INC_FLUSH_START, ASPECT_AST, node, child, "", value);
   }
 
   /**
    * Trace that flushing done by incremental evaluation ended.
    */
   public void flushIncEnd($ASTNode node, String child, Object value) {
-    receiver.accept($StateClass.Trace.Event.INC_FLUSH_END, node, child, "", value);
+    receiver.accept($StateClass.Trace.Event.INC_FLUSH_END, ASPECT_AST, node, child, "", value);
   }
 
   /**
-- 
GitLab