From baae5c5bf0af3e28f2e2e9a6a9955dab15bde2fc Mon Sep 17 00:00:00 2001 From: Fedor Isakov Date: Tue, 12 Jan 2021 11:39:34 +0100 Subject: [PATCH] Several interconnected changes to optimize performance in incremental mode Introduce invalidated flag to program producer to control whether to only process invalidated nodes in incremental mode. Update validated flag in RulesPlanHandler to reflect the finalized state, after the plan has been built. Refactor ProgramProducer/Factory to avoid enumerating the source root in case no changes have been detected (in incremental mode). Avoid relaunching program in case the producer did nothing. --- .../jetbrains.mps.lang.coderules.eval.mps | 383 +++++----- .../jetbrains.mps.lang.coderules.program.mps | 160 +++-- ...s.mps.coderules.typechecking.test.util.mps | 1 + ...rains.mps.coderules.typechecking@tests.mps | 5 +- ...s.mps.coderules.typechecking.ui.plugin.mps | 1 + ...ins.mps.coderules.typechecking.service.mps | 71 +- .../models/service.mps | 675 ++++++++++-------- .../models/plugin.mps | 1 + 8 files changed, 736 insertions(+), 561 deletions(-) diff --git a/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.eval.mps b/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.eval.mps index c8d81138..ab775e61 100644 --- a/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.eval.mps +++ b/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.eval.mps @@ -4061,6 +4061,10 @@ + + + + @@ -4088,8 +4092,8 @@ - - + + @@ -4108,58 +4112,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4183,12 +4135,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4265,17 +4309,6 @@ - - - - - - - - - - - @@ -4540,133 +4573,126 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - @@ -4675,6 +4701,17 @@ + + + + + + + + + + + diff --git a/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.program.mps b/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.program.mps index 7bf100e3..022c4913 100644 --- a/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.program.mps +++ b/coderules/languages/jetbrains.mps.lang.coderules/runtime/models/jetbrains.mps.lang.coderules.program.mps @@ -1100,6 +1100,17 @@ + + + + + + + + + + + @@ -1442,6 +1453,24 @@ + + + + + + + + + + + + + + + + + + @@ -1502,6 +1531,19 @@ + + + + + + + + + + + + + @@ -4986,6 +5028,12 @@ + + + + + + @@ -6687,7 +6735,7 @@ - + @@ -6850,30 +6898,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -6883,17 +6907,6 @@ - - - - - - - - - - - @@ -6908,6 +6921,10 @@ + + + + @@ -6919,8 +6936,8 @@ - - + + @@ -7206,35 +7223,56 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + diff --git a/coderules/solutions/jetbrains.mps.coderules.typechecking.test/models/jetbrains.mps.coderules.typechecking.test.util.mps b/coderules/solutions/jetbrains.mps.coderules.typechecking.test/models/jetbrains.mps.coderules.typechecking.test.util.mps index c22f8ad3..5764917c 100644 --- a/coderules/solutions/jetbrains.mps.coderules.typechecking.test/models/jetbrains.mps.coderules.typechecking.test.util.mps +++ b/coderules/solutions/jetbrains.mps.coderules.typechecking.test/models/jetbrains.mps.coderules.typechecking.test.util.mps @@ -2081,6 +2081,7 @@ + diff --git a/coderules/solutions/jetbrains.mps.coderules.typechecking.test/models/jetbrains.mps.coderules.typechecking@tests.mps b/coderules/solutions/jetbrains.mps.coderules.typechecking.test/models/jetbrains.mps.coderules.typechecking@tests.mps index 439693c7..2c7128c7 100644 --- a/coderules/solutions/jetbrains.mps.coderules.typechecking.test/models/jetbrains.mps.coderules.typechecking@tests.mps +++ b/coderules/solutions/jetbrains.mps.coderules.typechecking.test/models/jetbrains.mps.coderules.typechecking@tests.mps @@ -2770,7 +2770,9 @@ - + + + @@ -3564,6 +3566,7 @@ + diff --git a/coderules/solutions/jetbrains.mps.coderules.typechecking.ui/models/jetbrains.mps.coderules.typechecking.ui.plugin.mps b/coderules/solutions/jetbrains.mps.coderules.typechecking.ui/models/jetbrains.mps.coderules.typechecking.ui.plugin.mps index d1511192..a6de6848 100644 --- a/coderules/solutions/jetbrains.mps.coderules.typechecking.ui/models/jetbrains.mps.coderules.typechecking.ui.plugin.mps +++ b/coderules/solutions/jetbrains.mps.coderules.typechecking.ui/models/jetbrains.mps.coderules.typechecking.ui.plugin.mps @@ -3370,6 +3370,7 @@ + diff --git a/coderules/solutions/jetbrains.mps.coderules.typechecking/models/jetbrains.mps.coderules.typechecking.service.mps b/coderules/solutions/jetbrains.mps.coderules.typechecking/models/jetbrains.mps.coderules.typechecking.service.mps index 1cbd9b1c..f3cec5ca 100644 --- a/coderules/solutions/jetbrains.mps.coderules.typechecking/models/jetbrains.mps.coderules.typechecking.service.mps +++ b/coderules/solutions/jetbrains.mps.coderules.typechecking/models/jetbrains.mps.coderules.typechecking.service.mps @@ -6490,7 +6490,9 @@ - + + + @@ -6551,7 +6553,9 @@ - + + + @@ -10334,31 +10338,28 @@ - - - - - - - - + + + + + - + - + @@ -10386,7 +10387,7 @@ - + @@ -11236,10 +11237,8 @@ - - - - + + @@ -11379,10 +11378,8 @@ - - - - + + @@ -11704,10 +11701,12 @@ - + - + + + @@ -12884,8 +12883,7 @@ - - + @@ -12950,6 +12948,9 @@ + + + @@ -14513,6 +14514,7 @@ + @@ -15353,6 +15355,7 @@ + @@ -16238,6 +16241,7 @@ + @@ -19262,23 +19266,6 @@ - - - - - - - - - - - - - - - - - diff --git a/coderules/solutions/jetbrains.mps.coderules/models/service.mps b/coderules/solutions/jetbrains.mps.coderules/models/service.mps index dcfb9553..080bb4c7 100644 --- a/coderules/solutions/jetbrains.mps.coderules/models/service.mps +++ b/coderules/solutions/jetbrains.mps.coderules/models/service.mps @@ -303,11 +303,15 @@ + + + + @@ -505,7 +509,6 @@ - @@ -672,6 +675,19 @@ + + + + + + + + + + + + + @@ -692,6 +708,9 @@ + + + @@ -728,6 +747,10 @@ + + + + @@ -821,6 +844,19 @@ + + + + + + + + + + + + + @@ -894,6 +930,10 @@ + + + + @@ -1232,6 +1272,9 @@ + + + @@ -1490,6 +1533,12 @@ + + + + + + @@ -2439,116 +2488,64 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -2558,216 +2555,326 @@ - - - - - - - - - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + - + + - + + + + + + + + + + + + + + + - + diff --git a/coderules/solutions/jetbrains.mps.controlflow.ui/models/plugin.mps b/coderules/solutions/jetbrains.mps.controlflow.ui/models/plugin.mps index bd4ecf9f..38f276fe 100644 --- a/coderules/solutions/jetbrains.mps.controlflow.ui/models/plugin.mps +++ b/coderules/solutions/jetbrains.mps.controlflow.ui/models/plugin.mps @@ -1069,6 +1069,7 @@ +