diff --git a/src/template/incremental/ASTChange.tt b/src/template/incremental/ASTChange.tt index 3bd945d2971b4687a58ec18e974a1deff4c89215..53b7519163511d7cf3d73ebff8be38bf818f559c 100644 --- a/src/template/incremental/ASTChange.tt +++ b/src/template/incremental/ASTChange.tt @@ -63,6 +63,10 @@ $endif ASTNode.incHookSetChild1 = [[ $if(IncrementalEnabled) +$if (TraceFlush) +Object flushIncToken = new Object(); +state().trace().flushIncStart(this, "setChild", flushIncToken); +$endif $if(IncrementalLevelParam) if (state().disableDeps == 0 && !state().IN_ATTR_STORE_EVAL) { @@ -162,7 +166,9 @@ $endif ASTNode.incHookSetChild5 = [[ $if(IncrementalEnabled) - +$if (TraceFlush) +state().trace().flushIncEnd(this, "setChild", flushIncToken); +$endif $endif ]] @@ -320,6 +326,10 @@ $endif TokenComponent.incHookSetToken = [[ $if(IncrementalEnabled) +$if (TraceFlush) +Object flushIncToken = new Object(); +state().trace().flushIncStart(this, "set$(Id)", flushIncToken); +$endif $if(IncrementalLevelParam) if (state().disableDeps == 0 && !state().IN_ATTR_STORE_EVAL) { @@ -390,6 +400,8 @@ if (state().disableDeps == 0 && !(state().IN_COMPUTATION > 0)) { $endif } - +$if (TraceFlush) +state().trace().flushIncEnd(this, "set$(Id)", flushIncToken); +$endif $endif ]] diff --git a/src/template/trace/Tracer.tt b/src/template/trace/Tracer.tt index 0a90a599f74e7775c12397c6386d681cac74b15c..dfce9e9c136402a7f952006c4b7264da68b04150 100644 --- a/src/template/trace/Tracer.tt +++ b/src/template/trace/Tracer.tt @@ -79,7 +79,9 @@ public static class Trace { FLUSH_ATTR, FLUSH_REWRITE, FLUSH_REWRITE_INIT, + INC_FLUSH_START, INC_FLUSH_ATTR, + INC_FLUSH_END, // Flag: --tracing=coll CONTRIBUTION_CHECK_BEGIN, @@ -341,6 +343,20 @@ public static class Trace { receiver.accept($StateClass.Trace.Event.INC_FLUSH_ATTR, node, attr, params, value); } + /** + * 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); + } + + /** + * 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); + } + /** * Trace that a contribution check to a collection attribute begun. */