[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:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.200.mcz
==================== 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.
disowningVMThread
ifNil: [activeProc := self activeProcess]
ifNotNil:
[self preemptDisowningThread.
activeProc := self wakeHighestPriority.
activeProc
ifNil: [activeProc := objectMemory nilObject]
ifNotNil: [objectMemory
storePointerUnchecked: MyListIndex
ofObject: activeProc
withValue: objectMemory nilObject].
objectMemory
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]])
ifTrue:
[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."]
ifFalse:
[cogThreadManager wakeVMThreadFor: ownerIndex]!
More information about the Vm-dev
mailing list