[Vm-dev] VM Maker: VMMaker.oscog-eem.200.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Aug 10 23:48:46 UTC 2012

Eliot Miranda uploaded a new version of VMMaker to project VM Maker:

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

Name: VMMaker.oscog-eem.200
Author: eem
Time: 10 August 2012, 4:47:24.263 pm
UUID: 5a8e1270-adca-4f75-9712-0c0deda989d2
Ancestors: VMMaker.oscog-eem.199

Fix another ^self slip uncovered by VMMaker.oscog-eem.196 fix.

=============== Diff against VMMaker.oscog-eem.199 ===============

Item was changed:
  ----- Method: CoInterpreterMT>>tryToExecuteSmalltalk: (in category 'vm scheduling') -----
  tryToExecuteSmalltalk: vmThread
  	"Attempt to run the current process, if it exists, on the given vmThread."
  	<var: #vmThread type: #'CogVMThread *'>
  	| dvmt activeProc ownerIndex |
  	<var: #dvmt type: #'CogVMThread *'>
  	self assert: cogThreadManager getVMOwner = vmThread index.
  	self assert: cogThreadManager ioGetThreadLocalThreadIndex = vmThread index.
  	dvmt := disowningVMThread.
  		ifNil: [activeProc := self activeProcess]
  			[self preemptDisowningThread.
  			 activeProc := self wakeHighestPriority.
  				ifNil: [activeProc := objectMemory nilObject]
  				ifNotNil: [objectMemory
  							storePointerUnchecked: MyListIndex
  							ofObject: activeProc
  							withValue: objectMemory nilObject].
  				storePointer: ActiveProcessIndex
  				ofObject: self schedulerPointer
  				withValue: activeProc].
  	activeProc = objectMemory nilObject ifTrue:
  		[cogThreadManager releaseVM.
+ 		 ^nil].
- 		 ^self].
  	ownerIndex := self ownerIndexOfProcess: activeProc.
  	(ownerIndex = 0
  	 or: [ownerIndex ~= 0 and: [ownerIndex = cogThreadManager getVMOwner]])
  			[self assert: (objectMemory fetchPointer: MyListIndex ofObject: self activeProcess) = objectMemory nilObject.
  			 (objectMemory fetchPointer: SuspendedContextIndex ofObject: activeProc) ~= objectMemory nilObject ifTrue:
  				[self externalSetStackPageAndPointersForSuspendedContextOfProcess: activeProc.
  				 instructionPointer := self popStack].
  			 self enterSmalltalkExecutive.
  			 "When we return here we should have already given up
  			  the VM and so we cannot touch any interpreter state."]
  			[cogThreadManager wakeVMThreadFor: ownerIndex]!

More information about the Vm-dev mailing list