From 95d3ef0df8938bdff853ed5e5f3e0218448a1042 Mon Sep 17 00:00:00 2001 From: Christoph Thiede Date: Fri, 29 Apr 2022 17:27:08 +0200 Subject: [PATCH] Cache required capabilities --- .../Simulator.class/class/cleanUp.st | 3 ++- .../Simulator.class/class/cleanUpRequiredCapabilities.st | 6 ++++++ .../Simulator.class/class/noteAddedSelector.meta..st | 2 ++ .../Simulator.class/class/requiredCapabilities.st | 8 ++++++++ .../Simulator.class/instance/requiredCapabilities.st | 5 +---- .../Simulator.class/methodProperties.json | 8 +++++--- .../Simulator.class/properties.json | 2 +- .../class/noteAddedSelector.meta..st | 3 +++ .../SimulatorContext.class/methodProperties.json | 2 +- 9 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 packages/SimulationStudio-Base.package/Simulator.class/class/cleanUpRequiredCapabilities.st create mode 100644 packages/SimulationStudio-Base.package/Simulator.class/class/requiredCapabilities.st diff --git a/packages/SimulationStudio-Base.package/Simulator.class/class/cleanUp.st b/packages/SimulationStudio-Base.package/Simulator.class/class/cleanUp.st index b006f61..45ef8ab 100644 --- a/packages/SimulationStudio-Base.package/Simulator.class/class/cleanUp.st +++ b/packages/SimulationStudio-Base.package/Simulator.class/class/cleanUp.st @@ -1,4 +1,5 @@ initialize-release cleanUp - self cleanUpContextClasses. \ No newline at end of file + self cleanUpContextClasses. + self cleanUpRequiredCapabilities. \ No newline at end of file diff --git a/packages/SimulationStudio-Base.package/Simulator.class/class/cleanUpRequiredCapabilities.st b/packages/SimulationStudio-Base.package/Simulator.class/class/cleanUpRequiredCapabilities.st new file mode 100644 index 0000000..c51bb88 --- /dev/null +++ b/packages/SimulationStudio-Base.package/Simulator.class/class/cleanUpRequiredCapabilities.st @@ -0,0 +1,6 @@ +context classes +cleanUpRequiredCapabilities + + requiredCapabilities := nil. + self allSubclassesDo: [:simulatorClass | + simulatorClass cleanUpRequiredCapabilities]. \ No newline at end of file diff --git a/packages/SimulationStudio-Base.package/Simulator.class/class/noteAddedSelector.meta..st b/packages/SimulationStudio-Base.package/Simulator.class/class/noteAddedSelector.meta..st index 942860c..be6d253 100644 --- a/packages/SimulationStudio-Base.package/Simulator.class/class/noteAddedSelector.meta..st +++ b/packages/SimulationStudio-Base.package/Simulator.class/class/noteAddedSelector.meta..st @@ -3,6 +3,8 @@ noteAddedSelector: selector meta: isMeta super noteAddedSelector: selector meta: isMeta. + self cleanUpRequiredCapabilities. + self flag: #todo. "Is this the right hook? There is also #noteCompilationOf:meta: ..." self allSubInstances ifNotEmpty: [ Transcript showln: ('You should restart all {1} subinstances now to apply the changes to {2}.' format: {self. selector})]. \ No newline at end of file diff --git a/packages/SimulationStudio-Base.package/Simulator.class/class/requiredCapabilities.st b/packages/SimulationStudio-Base.package/Simulator.class/class/requiredCapabilities.st new file mode 100644 index 0000000..555e6c3 --- /dev/null +++ b/packages/SimulationStudio-Base.package/Simulator.class/class/requiredCapabilities.st @@ -0,0 +1,8 @@ +context classes +requiredCapabilities + + ^ requiredCapabilities ifNil: [requiredCapabilities := + ((Pragma allNamed: #capability: from: self to: Simulator) + reject: [:pragma | + (self lookupSelector: pragma selector) methodClass == pragma methodClass]) + collect: [:pragma | pragma argumentAt: 1] as: Set] \ No newline at end of file diff --git a/packages/SimulationStudio-Base.package/Simulator.class/instance/requiredCapabilities.st b/packages/SimulationStudio-Base.package/Simulator.class/instance/requiredCapabilities.st index 3d2e56f..94ab890 100644 --- a/packages/SimulationStudio-Base.package/Simulator.class/instance/requiredCapabilities.st +++ b/packages/SimulationStudio-Base.package/Simulator.class/instance/requiredCapabilities.st @@ -2,7 +2,4 @@ context classes requiredCapabilities "Override this and answer nil to disable optimized capabilities." - ^ ((Pragma allNamed: #capability: from: self class to: thisContext methodClass) - reject: [:pragma | - (self class lookupSelector: pragma selector) methodClass == pragma methodClass]) - collect: [:pragma | pragma argumentAt: 1] as: Set \ No newline at end of file + ^ self class requiredCapabilities \ No newline at end of file diff --git a/packages/SimulationStudio-Base.package/Simulator.class/methodProperties.json b/packages/SimulationStudio-Base.package/Simulator.class/methodProperties.json index 142f39e..909b9d3 100644 --- a/packages/SimulationStudio-Base.package/Simulator.class/methodProperties.json +++ b/packages/SimulationStudio-Base.package/Simulator.class/methodProperties.json @@ -1,15 +1,17 @@ { "class" : { "basicContextClass" : "ct 11/12/2021 18:36", - "cleanUp" : "ct 11/12/2021 19:40", + "cleanUp" : "ct 2/4/2022 00:35", "cleanUpContextClasses" : "ct 11/12/2021 19:39", + "cleanUpRequiredCapabilities" : "ct 2/4/2022 00:35", "contextClassForCapabilities:" : "ct 11/13/2021 21:12", "contextClassForSimulators:" : "ct 11/12/2021 18:36", "debug:" : "ct 11/13/2021 15:46", "decorating:" : "ct 11/11/2021 21:47", "evaluate:" : "ct 11/11/2021 22:07", "fullContextClass" : "ct 11/12/2021 18:36", - "noteAddedSelector:meta:" : "ct 11/13/2021 20:13", + "noteAddedSelector:meta:" : "ct 2/4/2022 00:35", + "requiredCapabilities" : "ct 2/4/2022 00:40", "warmUp" : "ct 11/12/2021 19:40", "warmUpContextClasses" : "ct 11/12/2021 19:40" }, "instance" : { @@ -68,4 +70,4 @@ "initializeContext:" : "ct 11/13/2021 00:19", "nextSimulator" : "ct 11/11/2021 21:47", "nextSimulator:" : "ct 11/11/2021 21:47", - "requiredCapabilities" : "ct 11/13/2021 22:11" } } + "requiredCapabilities" : "ct 2/4/2022 00:31" } } diff --git a/packages/SimulationStudio-Base.package/Simulator.class/properties.json b/packages/SimulationStudio-Base.package/Simulator.class/properties.json index aa6b132..012841b 100644 --- a/packages/SimulationStudio-Base.package/Simulator.class/properties.json +++ b/packages/SimulationStudio-Base.package/Simulator.class/properties.json @@ -1,7 +1,7 @@ { "category" : "SimulationStudio-Base", "classinstvars" : [ - ], + "requiredCapabilities" ], "classvars" : [ "ContextClasses" ], "commentStamp" : "ct 11/13/2021 17:08", diff --git a/packages/SimulationStudio-Base.package/SimulatorContext.class/class/noteAddedSelector.meta..st b/packages/SimulationStudio-Base.package/SimulatorContext.class/class/noteAddedSelector.meta..st index 8611b4d..0ab7263 100644 --- a/packages/SimulationStudio-Base.package/SimulatorContext.class/class/noteAddedSelector.meta..st +++ b/packages/SimulationStudio-Base.package/SimulatorContext.class/class/noteAddedSelector.meta..st @@ -7,5 +7,8 @@ noteAddedSelector: selector meta: isMeta (Simulator respondsTo: #cleanUpContextClasses) ifTrue: [ "don't fail while checking out the package via Squot" Simulator cleanUpContextClasses]. + (Simulator respondsTo: #cleanUpRequiredCapabilities) ifTrue: [ + "don't fail while checking out the package via Squot" + Simulator cleanUpRequiredCapabilities]. Simulator allSubInstances ifNotEmpty: [ Transcript showln: ('You should restart all simulators now to apply the changes to {1}>>{2}.' format: {self. selector})]. \ No newline at end of file diff --git a/packages/SimulationStudio-Base.package/SimulatorContext.class/methodProperties.json b/packages/SimulationStudio-Base.package/SimulatorContext.class/methodProperties.json index f1a1b54..36229a9 100644 --- a/packages/SimulationStudio-Base.package/SimulatorContext.class/methodProperties.json +++ b/packages/SimulationStudio-Base.package/SimulatorContext.class/methodProperties.json @@ -1,6 +1,6 @@ { "class" : { - "noteAddedSelector:meta:" : "ct 12/27/2021 01:39" }, + "noteAddedSelector:meta:" : "ct 2/12/2022 15:29" }, "instance" : { "activateMethod:withArgs:receiver:" : "ct 11/13/2021 15:57", "blockReturnConstant:" : "ct 11/13/2021 15:13",