Hi All,
where do the github actions built VM packages (e.g.
squeak.cog.spur_linux32ARMv6_202111250841)
end up? Why does the VM trunk download link on squeak.org point to
github.com/opensmalltalk-vm rather than where the build artifacts are?
_,,,^..^,,,_
best, Eliot
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3111.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3111
Author: eem
Time: 23 November 2021, 7:34:50.330398 pm
UUID: 27fe97ff-bcae-4575-abf9-276901dda03e
Ancestors: VMMaker.oscog-eem.3110
Minor fixes for CoInterpreterMT
=============== Diff against VMMaker.oscog-eem.3110 ===============
Item was changed:
----- Method: CoInterpreterMT>>bindProcess:toId: (in category 'process primitive support') -----
bindProcess: aProcess toId: newId
"Change a Process's thread binding and answer 0, otherwise answer a suitable error code.
Cases:
process is unbound & unaffined
id 0 nothing to do
id non-zero ensure thread and bind
process is affined (temporarily bound to a thread for the duration of a surrender of ownership)
id = affined index nothing to do
id = 0 nothing to do
id ~= 0 && id ~= affined index fail
process is bound (permanently bound to a thread)
id = bound index nothing to do
id ~= bound index set bound index"
| threadIdField ownerIndex affinedId |
processHasThreadId ifFalse:
[^PrimErrUnsupported].
threadIdField := self threadIdFieldOf: aProcess.
ownerIndex := self ownerIndexOfThreadId: threadIdField.
"If aProcess is affined (temporarily bound to) a thread then the operation can only
succeed if the newId is the same as that aProcess is affined to, or is zero (is unbinding)."
(self isAffinedThreadId: threadIdField) ifTrue:
[affinedId := self affinedThreadId: threadIdField.
(newId = 0
or: [newId = affinedId]) ifTrue:
[self setThreadIdFieldOfProcess: aProcess to: newId << ThreadIdShift + affinedId.
+ ^nil].
- ^0].
^PrimErrInappropriate].
ownerIndex > 0 ifTrue:
[(self startThreadForThreadIndex: ownerIndex) ifFalse:
[^PrimErrLimitExceeded]].
self setThreadIdFieldOfProcess: aProcess to: newId << ThreadIdShift.
+ ^nil!
- ^0!
Item was changed:
----- Method: CoInterpreterMT>>primitiveProcessBindToThreadId (in category 'process primitives') -----
primitiveProcessBindToThreadId
"Attempt to bind the receiver to the thread with the id of the argument or nil, where the receiver is a Process.
If successful the VM will ensure that there are at least id many threads active."
| aProcess id |
<export: true>
- self break.
self cCode: [] inSmalltalk: [cogThreadManager isNil ifTrue: [^self primitiveFail]].
processHasThreadId ifFalse:
[^self primitiveFailFor: PrimErrUnsupported].
id := self stackTop.
aProcess := self stackValue: 1.
((id = objectMemory nilObject or: [(objectMemory isIntegerObject: id)
and: [id ~= (objectMemory integerObjectOf: 0)]])
and: [(objectMemory isPointers: aProcess)
and: [(objectMemory slotSizeOf: aProcess) >= (ThreadIdIndex + 1)]]) ifFalse:
[^self primitiveFailFor: PrimErrBadArgument].
id := id = objectMemory nilObject ifTrue: [0] ifFalse: [objectMemory integerValueOf: id].
id abs >= cogThreadManager maxNumThreads ifTrue:
[^self primitiveFailFor: PrimErrLimitExceeded].
(self bindProcess: aProcess toId: id) ifNotNil:
[:ec| ^self primitiveFailFor: ec].
id := self ownerIndexOfProcess: aProcess.
(aProcess = self activeProcess
and: [(activeProcessAffined := id ~= 0)
and: [(cogThreadManager vmOwnerIsCompatibleWith: id) not]]) ifTrue:
[(self quickFetchInteger: PriorityIndex ofObject: aProcess) < maxWaitingPriority ifTrue:
[maxWaitingPriority = self quickFetchInteger: PriorityIndex ofObject: aProcess].
checkThreadActivation := true.
self forceInterruptCheck].
self methodReturnReceiver!
Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: f30c25c06cbd3946feff00e89c526f1db24dc24d
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/f30c25c06cbd3946fe…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2021-11-22 (Mon, 22 Nov 2021)
Changed paths:
M src/spur32.cog.lowcode/cogitARMv5.c
M src/spur32.cog.lowcode/cogitIA32.c
M src/spur32.cog.lowcode/cointerp.c
M src/spur32.cog.lowcode/gcc3x-cointerp.c
M src/spur32.cog/cogitARMv5.c
M src/spur32.cog/cogitIA32.c
M src/spur32.cog/cointerp.c
M src/spur32.cog/cointerp.h
M src/spur32.cog/cointerpmt.c
M src/spur32.cog/gcc3x-cointerp.c
M src/spur32.cog/gcc3x-cointerpmt.c
M src/spur32.sista/cogitARMv5.c
M src/spur32.sista/cogitIA32.c
M src/spur32.sista/cointerp.c
M src/spur32.sista/gcc3x-cointerp.c
M src/spur32.stack.lowcode/gcc3x-interp.c
M src/spur32.stack.lowcode/interp.c
M src/spur32.stack/gcc3x-interp.c
M src/spur32.stack/interp.c
M src/spur64.cog.lowcode/cogitARMv8.c
M src/spur64.cog.lowcode/cogitX64SysV.c
M src/spur64.cog.lowcode/cogitX64WIN64.c
M src/spur64.cog.lowcode/cointerp.c
M src/spur64.cog.lowcode/cointerp.h
M src/spur64.cog.lowcode/gcc3x-cointerp.c
M src/spur64.cog/cogitARMv8.c
M src/spur64.cog/cogitX64SysV.c
M src/spur64.cog/cogitX64WIN64.c
M src/spur64.cog/cointerp.c
M src/spur64.cog/cointerpmt.c
M src/spur64.cog/gcc3x-cointerp.c
M src/spur64.cog/gcc3x-cointerpmt.c
M src/spur64.sista/cogitARMv8.c
M src/spur64.sista/cogitX64SysV.c
M src/spur64.sista/cogitX64WIN64.c
M src/spur64.sista/cointerp.c
M src/spur64.sista/gcc3x-cointerp.c
M src/spur64.stack.lowcode/gcc3x-interp.c
M src/spur64.stack.lowcode/interp.c
M src/spur64.stack/gcc3x-interp.c
M src/spur64.stack/interp.c
M src/v3.cog/cogitARMv5.c
M src/v3.cog/cogitIA32.c
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.3109
Cogit: add machine code versions of primitiveSlotAt[Put] (used for
instVarAt:[put:] in Spur) for Spur64. This is mainly to reduce noise in
Virtend crash log primitive traces, but is a lot faster.
Spur: Fix a bug in full GC with non-writable code zone. The scavenge that comes
immediately before the mark phase in a full GC needs to be done with
GCModeNewSpace to ensure the Cogit's GC routines are invoked correctly.
Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: 16483f9f5282bf707ba279136e95e9a271e47845
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/16483f9f5282bf707b…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2021-11-21 (Sun, 21 Nov 2021)
Changed paths:
M scripts/findUnofficialFiles
M scripts/lsmodified
M src/plugins/BochsIA32Plugin/BochsIA32Plugin.c
M src/plugins/BochsX64Plugin/BochsX64Plugin.c
M src/plugins/GdbARMPlugin/GdbARMPlugin.c
M src/plugins/GdbARMv8Plugin/GdbARMv8Plugin.c
M src/spur32.cog.lowcode/cointerp.c
M src/spur32.cog.lowcode/cointerp.h
M src/spur32.cog.lowcode/gcc3x-cointerp.c
M src/spur32.cog/cointerp.c
M src/spur32.cog/cointerp.h
M src/spur32.cog/cointerpmt.c
M src/spur32.cog/cointerpmt.h
M src/spur32.cog/gcc3x-cointerp.c
M src/spur32.cog/gcc3x-cointerpmt.c
M src/spur32.sista/cointerp.c
M src/spur32.sista/cointerp.h
M src/spur32.sista/gcc3x-cointerp.c
M src/spur32.stack.lowcode/gcc3x-interp.c
M src/spur32.stack.lowcode/interp.c
M src/spur32.stack/gcc3x-interp.c
M src/spur32.stack/interp.c
M src/spur64.cog.lowcode/cointerp.c
M src/spur64.cog.lowcode/cointerp.h
M src/spur64.cog.lowcode/gcc3x-cointerp.c
M src/spur64.cog/cointerp.c
M src/spur64.cog/cointerp.h
M src/spur64.cog/cointerpmt.c
M src/spur64.cog/cointerpmt.h
M src/spur64.cog/gcc3x-cointerp.c
M src/spur64.cog/gcc3x-cointerpmt.c
M src/spur64.sista/cointerp.c
M src/spur64.sista/cointerp.h
M src/spur64.sista/gcc3x-cointerp.c
M src/spur64.stack.lowcode/gcc3x-interp.c
M src/spur64.stack.lowcode/interp.c
M src/spur64.stack/gcc3x-interp.c
M src/spur64.stack/interp.c
M src/v3.cog/cointerp.c
M src/v3.cog/cointerp.h
M src/v3.cog/gcc3x-cointerp.c
M src/v3.stack/gcc3x-interp.c
M src/v3.stack/interp.c
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.3108
Fix a crash in recursive invocations of primitive 118,
[receiver:]tryPrimitive:withArgs:. This is a bit of a hack; nested primitive
failure will not be unwound correctly in tgh eouter invocation.
We may have to revisit this, but at least the simple case of
6 tryPrimitive: 118 withArgs: {9. {}}
no longer crashes the VM.
CogProcessorAlien plugins:
Implement a memory offset to allow the simulatorw to implement
a null pointer trap by omitting the first word in simulated memory.