diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleIndex.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleIndex.kt index cf994da1..d5359e6d 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleIndex.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/RuleIndex.kt @@ -36,7 +36,7 @@ fun emptyRuleBits() = BitSet() * * @author Fedor Isakov */ -class RuleIndex(): Iterable, RuleLookup +class RuleIndex(rules: Iterable, profiler: Profiler? = null) : Iterable, RuleLookup { private class IndexedRule(var idx: Int, val rule: Rule) @@ -57,8 +57,10 @@ class RuleIndex(): Iterable, RuleLookup private val allRules = LinkedList() - constructor(rules: Iterable) : this() { - buildIndexFromRules(rules) + init { + profiler.profile("build rule index") { + buildIndexFromRules(rules) + } } override fun lookupRuleByTag(tag: Any): Rule? = tag2rule[tag] diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/EvaluationSessionImpl.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/EvaluationSessionImpl.kt index 41622a13..b5612216 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/EvaluationSessionImpl.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/EvaluationSessionImpl.kt @@ -54,8 +54,8 @@ internal class EvaluationSessionImpl private constructor ( open inner class DefaultProcessingSession { fun getSession(): SessionData { - val ruleIndex = RuleIndex(program.rules()) + val ruleIndex = RuleIndex(program.rules(), profiler) val journal = MatchJournalImpl(trace) val logicalState = LogicalState() val dispatchingFront = Dispatcher(ruleIndex).front()