From fb384dab39cf3236a7ab4331fe3af4557bbf844e Mon Sep 17 00:00:00 2001 From: Grigorii Kirgizov Date: Wed, 17 Jul 2019 17:11:54 +0300 Subject: [PATCH] Use embedded profiling for incremental passes --- .../reactor/core/internal/ControllerImpl.kt | 16 +++++++++------- .../reactor/core/internal/ProcessingStateImpl.kt | 1 + 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ControllerImpl.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ControllerImpl.kt index d1c0d46e..b69feb2f 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ControllerImpl.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ControllerImpl.kt @@ -52,13 +52,15 @@ internal class ControllerImpl ( } fun incrLaunch(constraint: Constraint, rulesDiff: RulesDiff): FeedbackStatus { - // todo: use profiler here? - assert(rulesDiff.removedDependent.intersect(rulesDiff.removed).isEmpty()) - state.invalidateDependentRules(rulesDiff.removedDependent) - state.invalidateRuleMatches(rulesDiff.removed) - state.addRuleMatches(rulesDiff.added) - val status = state.launchQueue(this) - return status + profiler.profile("invalidation") { + state.invalidateRuleMatches(rulesDiff.removed) + } + profiler.profile("adding_matches") { + state.addRuleMatches(rulesDiff.added) + } + return profiler.profile("reexecution") { + state.launchQueue(this) + } } fun activate(constraint: Constraint) : FeedbackStatus { diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ProcessingStateImpl.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ProcessingStateImpl.kt index 0ec65ad1..a2698e22 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ProcessingStateImpl.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/ProcessingStateImpl.kt @@ -69,6 +69,7 @@ internal class ProcessingStateImpl(private var dispatchingFront: Dispatcher.Disp return controller.reactivate(activeOcc) } + // todo: remove fun invalidateDependentRules(ruleIds: Set) { val it = this.iterator() while (it.hasNext()) {