From 1d63404427e6f1d8b20f5774984aeb841be6585b Mon Sep 17 00:00:00 2001 From: rschoene <rene.schoene@tu-dresden.de> Date: Wed, 5 May 2021 17:39:01 +0200 Subject: [PATCH] Add two new events for tracing start and end of dependency notification. --- src/template/incremental/ASTChange.tt | 16 ++++++++++++++-- src/template/trace/Tracer.tt | 16 ++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/template/incremental/ASTChange.tt b/src/template/incremental/ASTChange.tt index 3bd945d2..53b75191 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 0a90a599..dfce9e9c 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. */ -- GitLab