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

commits at source.squeak.org commits at source.squeak.org
Mon Apr 19 15:47:53 UTC 2021


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.!



More information about the Squeak-dev mailing list