[squeak-dev] The Inbox: Kernel-mt.1390.mcz

Thiede, Christoph Christoph.Thiede at student.hpi.uni-potsdam.de
Sun Apr 25 18:05:23 UTC 2021


Hi Marcel,


these are interesting concepts though hard to evaluate without real-world examples, I guess. But it does seem to be a crucial core concept to me. Maybe this would better fit into the System package? I'd like to keep the Kernel package as small as possible and this one is rather advanced stuff ... 😊

Best,
<http://www.hpi.de/>
Christoph
________________________________
Von: Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> im Auftrag von Taeumel, Marcel
Gesendet: Montag, 19. April 2021 17:50:02
An: squeak-dev
Betreff: Re: [squeak-dev] The Inbox: Kernel-mt.1390.mcz

Here are the two options in an exapmle:

[cid:96ea598e-8551-44ae-8472-e87b1efbb447]

Am 19.04.2021 17:48:03 schrieb commits at source.squeak.org <commits at source.squeak.org>:

A new version of Kernel was added to project The Inbox:
http://source.squeak.org/inbox/Kernel-mt.1390.mcz

==================== Summary ====================

Name: Kernel-mt.1390
Author: mt
Time: 19 April 2021, 5:47:51.865053 pm
UUID: c36ac126-16de-3d41-be90-6b7fd46bc0c7
Ancestors: Kernel-nice.1389

Proposal. Better support for hot code updates by restarting from a denoted (i.e. domain-specific) context (or active method). For example, this could be used to better update the McmUpdater as soon as a code change in itself is detected. Two options: either mark the restart context with an on:do: handler or process a query to look up that context such as by package name.

=============== Diff against Kernel-nice.1389 ===============

Item was added:
+ Notification subclass: #RestartContextRequest
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Kernel-Exceptions'!

Item was added:
+ ----- Method: RestartContextRequest class>>fromContextSuchThat: (in category 'as yet unclassified') -----
+ fromContextSuchThat: block
+ "Use this to restart from an arbitrary context on the stack."
+
+ | context |
+ context := thisContext sender.
+ [context notNil] whileTrue: [
+ (block value: context) ifTrue: [
+ ^ self new restartFrom: context].
+ context := context sender].
+ self error: 'No context found!!'.!

Item was added:
+ ----- Method: RestartContextRequest>>restartFrom: (in category 'as yet unclassified') -----
+ restartFrom: aContext
+
+ | process actualContext unwindError |
+ aContext ifNil: [^ self error: 'No context to restart!!'].
+
+ process := Processor activeProcess.
+
+ [actualContext := process popTo: aContext.
+ unwindError := actualContext ~= aContext.
+ unwindError
+ ifTrue: [process resume]
+ ifFalse: [process restartTop; stepToSendOrReturn; resume]
+ ] fork.
+
+ process suspend.!

Item was added:
+ ----- Method: RestartContextRequest>>restartFromHere (in category 'as yet unclassified') -----
+ restartFromHere
+ "Use this to restart from an exception handler."
+ self restartFrom: handlerContext.!


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20210425/a3c86f4e/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 158062 bytes
Desc: image.png
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20210425/a3c86f4e/attachment-0001.png>


More information about the Squeak-dev mailing list