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