Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3147.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3147 Author: eem Time: 6 February 2022, 1:51:16.763917 pm UUID: 409be388-ed75-49dc-a648-c7051eb48168 Ancestors: VMMaker.oscog-eem.3146
Fix regressions in the stack interpreter generated sources from VMMaker.oscog-eem.3144, and in primitiveSupend[V2] from VMMaker.oscog-eem.3142,VMMaker.oscog-eem.3134,VMMaker.oscog-eem.3127.
=============== Diff against VMMaker.oscog-eem.3146 ===============
Item was removed: - ----- Method: CoInterpreter>>accessorDepthForExternalPrimitiveMethod: (in category 'plugin primitive support') ----- - accessorDepthForExternalPrimitiveMethod: methodObj - <option: #SpurObjectMemory> - | flags lit | - self assert: (self isLinkedExternalPrimitive: methodObj). - lit := self literal: 0 ofMethod: methodObj. - flags := objectMemory fetchPointer: ExternalCallLiteralFlagsIndex ofObject: lit. - ^(objectMemory integerValueOf: flags) >>> SpurPrimitiveAccessorDepthShift!
Item was removed: - ----- Method: CoInterpreter>>isLinkedExternalPrimitive: (in category 'plugin primitive support') ----- - isLinkedExternalPrimitive: methodObj - | header primIdx literal targetFunctionIndex | - header := objectMemory methodHeaderOf: methodObj. - primIdx := self primitiveIndexOfMethod: methodObj header: header. - ^primIdx = PrimNumberExternalCall - and: [(objectMemory literalCountOfMethodHeader: header) > 0 - and: [(objectMemory isArray: (literal := self literal: 0 ofMethod: methodObj)) - and: [(objectMemory numSlotsOf: literal) = 4 - and: [targetFunctionIndex := objectMemory fetchPointer: ExternalCallLiteralTargetFunctionIndex ofObject: literal. - (objectMemory isIntegerObject: targetFunctionIndex) - and: [(objectMemory integerValueOf: targetFunctionIndex) > 0]]]]] "A 0 byte module name implies a primitive in the main VM; these can't change"!
Item was added: + ----- Method: StackInterpreter>>accessorDepthForExternalPrimitiveMethod: (in category 'plugin primitive support') ----- + accessorDepthForExternalPrimitiveMethod: methodObj + <option: #SpurObjectMemory> + | flags lit | + self assert: (self isLinkedExternalPrimitive: methodObj). + lit := self literal: 0 ofMethod: methodObj. + flags := objectMemory fetchPointer: ExternalCallLiteralFlagsIndex ofObject: lit. + ^(objectMemory integerValueOf: flags) >>> SpurPrimitiveAccessorDepthShift!
Item was added: + ----- Method: StackInterpreter>>isLinkedExternalPrimitive: (in category 'plugin primitive support') ----- + isLinkedExternalPrimitive: methodObj + | header primIdx literal targetFunctionIndex | + header := objectMemory methodHeaderOf: methodObj. + primIdx := self primitiveIndexOfMethod: methodObj header: header. + ^primIdx = PrimNumberExternalCall + and: [(objectMemory literalCountOfMethodHeader: header) > 0 + and: [(objectMemory isArray: (literal := self literal: 0 ofMethod: methodObj)) + and: [(objectMemory numSlotsOf: literal) = 4 + and: [targetFunctionIndex := objectMemory fetchPointer: ExternalCallLiteralTargetFunctionIndex ofObject: literal. + (objectMemory isIntegerObject: targetFunctionIndex) + and: [(objectMemory integerValueOf: targetFunctionIndex) > 0]]]]] "A 0 byte module name implies a primitive in the main VM; these can't change"!
Item was changed: ----- Method: StackInterpreter>>transferTo: (in category 'process primitive support') ----- transferTo: newProc "Record a process to be awoken on the next interpreter cycle." | activeContext sched oldProc | <inline: false> statProcessSwitch := statProcessSwitch + 1. self push: instructionPointer. self externalWriteBackHeadFramePointers. self assertValidExecutionPointe: instructionPointer + 1 r: framePointer s: stackPointer. sched := self schedulerPointer. oldProc := objectMemory fetchPointer: ActiveProcessIndex ofObject: sched. activeContext := self ensureFrameIsMarried: framePointer SP: stackPointer + objectMemory wordSize. objectMemory storePointer: SuspendedContextIndex ofObject: oldProc withValue: activeContext. objectMemory storePointer: ActiveProcessIndex ofObject: sched withValue: newProc. objectMemory storePointerUnchecked: MyListIndex ofObject: newProc withValue: objectMemory nilObject. + self externalSetStackPageAndPointersForSuspendedContextOfProcess: newProc. + ^0 "to allow primitiveSuspend[V2] to exit early by returning the result of transferTo:"! - self externalSetStackPageAndPointersForSuspendedContextOfProcess: newProc!
Hi, I get this error when starting a fresh updated image with this squeak.cog.spur_win64x64 VM on latest Win 10 x64 [cid:image001.png@01D81BB7.6925CE00] Thanks for help, jaromir From: commits@source.squeak.orgmailto:commits@source.squeak.org Sent: Sunday, February 6, 2022 22:52 To: vm-dev@lists.squeakfoundation.orgmailto:vm-dev@lists.squeakfoundation.org Subject: [Vm-dev] VM Maker: VMMaker.oscog-eem.3147.mcz
Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3147.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3147 Author: eem Time: 6 February 2022, 1:51:16.763917 pm UUID: 409be388-ed75-49dc-a648-c7051eb48168 Ancestors: VMMaker.oscog-eem.3146
Fix regressions in the stack interpreter generated sources from VMMaker.oscog-eem.3144, and in primitiveSupend[V2] from VMMaker.oscog-eem.3142,VMMaker.oscog-eem.3134,VMMaker.oscog-eem.3127.
=============== Diff against VMMaker.oscog-eem.3146 ===============
Item was removed: - ----- Method: CoInterpreter>>accessorDepthForExternalPrimitiveMethod: (in category 'plugin primitive support') ----- - accessorDepthForExternalPrimitiveMethod: methodObj - <option: #SpurObjectMemory> - | flags lit | - self assert: (self isLinkedExternalPrimitive: methodObj). - lit := self literal: 0 ofMethod: methodObj. - flags := objectMemory fetchPointer: ExternalCallLiteralFlagsIndex ofObject: lit. - ^(objectMemory integerValueOf: flags) >>> SpurPrimitiveAccessorDepthShift!
Item was removed: - ----- Method: CoInterpreter>>isLinkedExternalPrimitive: (in category 'plugin primitive support') ----- - isLinkedExternalPrimitive: methodObj - | header primIdx literal targetFunctionIndex | - header := objectMemory methodHeaderOf: methodObj. - primIdx := self primitiveIndexOfMethod: methodObj header: header. - ^primIdx = PrimNumberExternalCall - and: [(objectMemory literalCountOfMethodHeader: header) > 0 - and: [(objectMemory isArray: (literal := self literal: 0 ofMethod: methodObj)) - and: [(objectMemory numSlotsOf: literal) = 4 - and: [targetFunctionIndex := objectMemory fetchPointer: ExternalCallLiteralTargetFunctionIndex ofObject: literal. - (objectMemory isIntegerObject: targetFunctionIndex) - and: [(objectMemory integerValueOf: targetFunctionIndex) > 0]]]]] "A 0 byte module name implies a primitive in the main VM; these can't change"!
Item was added: + ----- Method: StackInterpreter>>accessorDepthForExternalPrimitiveMethod: (in category 'plugin primitive support') ----- + accessorDepthForExternalPrimitiveMethod: methodObj + <option: #SpurObjectMemory> + | flags lit | + self assert: (self isLinkedExternalPrimitive: methodObj). + lit := self literal: 0 ofMethod: methodObj. + flags := objectMemory fetchPointer: ExternalCallLiteralFlagsIndex ofObject: lit. + ^(objectMemory integerValueOf: flags) >>> SpurPrimitiveAccessorDepthShift!
Item was added: + ----- Method: StackInterpreter>>isLinkedExternalPrimitive: (in category 'plugin primitive support') ----- + isLinkedExternalPrimitive: methodObj + | header primIdx literal targetFunctionIndex | + header := objectMemory methodHeaderOf: methodObj. + primIdx := self primitiveIndexOfMethod: methodObj header: header. + ^primIdx = PrimNumberExternalCall + and: [(objectMemory literalCountOfMethodHeader: header) > 0 + and: [(objectMemory isArray: (literal := self literal: 0 ofMethod: methodObj)) + and: [(objectMemory numSlotsOf: literal) = 4 + and: [targetFunctionIndex := objectMemory fetchPointer: ExternalCallLiteralTargetFunctionIndex ofObject: literal. + (objectMemory isIntegerObject: targetFunctionIndex) + and: [(objectMemory integerValueOf: targetFunctionIndex) > 0]]]]] "A 0 byte module name implies a primitive in the main VM; these can't change"!
Item was changed: ----- Method: StackInterpreter>>transferTo: (in category 'process primitive support') ----- transferTo: newProc "Record a process to be awoken on the next interpreter cycle." | activeContext sched oldProc | <inline: false> statProcessSwitch := statProcessSwitch + 1. self push: instructionPointer. self externalWriteBackHeadFramePointers. self assertValidExecutionPointe: instructionPointer + 1 r: framePointer s: stackPointer. sched := self schedulerPointer. oldProc := objectMemory fetchPointer: ActiveProcessIndex ofObject: sched. activeContext := self ensureFrameIsMarried: framePointer SP: stackPointer + objectMemory wordSize. objectMemory storePointer: SuspendedContextIndex ofObject: oldProc withValue: activeContext. objectMemory storePointer: ActiveProcessIndex ofObject: sched withValue: newProc. objectMemory storePointerUnchecked: MyListIndex ofObject: newProc withValue: objectMemory nilObject. + self externalSetStackPageAndPointersForSuspendedContextOfProcess: newProc. + ^0 "to allow primitiveSuspend[V2] to exit early by returning the result of transferTo:"! - self externalSetStackPageAndPointersForSuspendedContextOfProcess: newProc!
can you post the crash.dmp?
On Sun, Feb 6, 2022 at 3:14 PM Jaromir Matas mail@jaromir.net wrote:
Hi,
I get this error when starting a fresh updated image with this squeak.cog.spur_win64x64 VM on latest Win 10 x64
Thanks for help,
jaromir
*From: *commits@source.squeak.org *Sent: *Sunday, February 6, 2022 22:52 *To: *vm-dev@lists.squeakfoundation.org *Subject: *[Vm-dev] VM Maker: VMMaker.oscog-eem.3147.mcz
Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3147.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3147 Author: eem Time: 6 February 2022, 1:51:16.763917 pm UUID: 409be388-ed75-49dc-a648-c7051eb48168 Ancestors: VMMaker.oscog-eem.3146
Fix regressions in the stack interpreter generated sources from VMMaker.oscog-eem.3144, and in primitiveSupend[V2] from VMMaker.oscog-eem.3142,VMMaker.oscog-eem.3134,VMMaker.oscog-eem.3127.
=============== Diff against VMMaker.oscog-eem.3146 ===============
Item was removed:
- ----- Method: CoInterpreter>>accessorDepthForExternalPrimitiveMethod:
(in category 'plugin primitive support') -----
- accessorDepthForExternalPrimitiveMethod: methodObj
<option: #SpurObjectMemory>
| flags lit |
self assert: (self isLinkedExternalPrimitive: methodObj).
lit := self literal: 0 ofMethod: methodObj.
flags := objectMemory fetchPointer:
ExternalCallLiteralFlagsIndex ofObject: lit.
^(objectMemory integerValueOf: flags) >>>
SpurPrimitiveAccessorDepthShift!
Item was removed:
- ----- Method: CoInterpreter>>isLinkedExternalPrimitive: (in category
'plugin primitive support') -----
- isLinkedExternalPrimitive: methodObj
| header primIdx literal targetFunctionIndex |
header := objectMemory methodHeaderOf: methodObj.
primIdx := self primitiveIndexOfMethod: methodObj header: header.
^primIdx = PrimNumberExternalCall
and: [(objectMemory literalCountOfMethodHeader: header) > 0
and: [(objectMemory isArray: (literal := self literal: 0
ofMethod: methodObj))
and: [(objectMemory numSlotsOf: literal) = 4
and: [targetFunctionIndex := objectMemory fetchPointer:
ExternalCallLiteralTargetFunctionIndex ofObject: literal.
(objectMemory isIntegerObject: targetFunctionIndex)
and: [(objectMemory integerValueOf: targetFunctionIndex) >
0]]]]] "A 0 byte module name implies a primitive in the main VM; these can't change"!
Item was added:
- ----- Method: StackInterpreter>>accessorDepthForExternalPrimitiveMethod:
(in category 'plugin primitive support') -----
- accessorDepthForExternalPrimitiveMethod: methodObj
<option: #SpurObjectMemory>
| flags lit |
self assert: (self isLinkedExternalPrimitive: methodObj).
lit := self literal: 0 ofMethod: methodObj.
flags := objectMemory fetchPointer:
ExternalCallLiteralFlagsIndex ofObject: lit.
^(objectMemory integerValueOf: flags) >>>
SpurPrimitiveAccessorDepthShift!
Item was added:
- ----- Method: StackInterpreter>>isLinkedExternalPrimitive: (in category
'plugin primitive support') -----
- isLinkedExternalPrimitive: methodObj
| header primIdx literal targetFunctionIndex |
header := objectMemory methodHeaderOf: methodObj.
primIdx := self primitiveIndexOfMethod: methodObj header: header.
^primIdx = PrimNumberExternalCall
and: [(objectMemory literalCountOfMethodHeader: header) > 0
and: [(objectMemory isArray: (literal := self literal: 0
ofMethod: methodObj))
and: [(objectMemory numSlotsOf: literal) = 4
and: [targetFunctionIndex := objectMemory fetchPointer:
ExternalCallLiteralTargetFunctionIndex ofObject: literal.
(objectMemory isIntegerObject: targetFunctionIndex)
and: [(objectMemory integerValueOf: targetFunctionIndex) >
0]]]]] "A 0 byte module name implies a primitive in the main VM; these can't change"!
Item was changed: ----- Method: StackInterpreter>>transferTo: (in category 'process primitive support') ----- transferTo: newProc "Record a process to be awoken on the next interpreter cycle." | activeContext sched oldProc | <inline: false> statProcessSwitch := statProcessSwitch + 1. self push: instructionPointer. self externalWriteBackHeadFramePointers. self assertValidExecutionPointe: instructionPointer + 1 r: framePointer s: stackPointer. sched := self schedulerPointer. oldProc := objectMemory fetchPointer: ActiveProcessIndex ofObject: sched. activeContext := self ensureFrameIsMarried: framePointer SP: stackPointer + objectMemory wordSize. objectMemory storePointer: SuspendedContextIndex ofObject: oldProc withValue: activeContext. objectMemory storePointer: ActiveProcessIndex ofObject: sched withValue: newProc. objectMemory storePointerUnchecked: MyListIndex ofObject: newProc withValue: objectMemory nilObject.
self externalSetStackPageAndPointersForSuspendedContextOfProcess:
newProc.
^0 "to allow primitiveSuspend[V2] to exit early by returning the
result of transferTo:"!
self externalSetStackPageAndPointersForSuspendedContextOfProcess:
newProc!
Unfortunately no crash.dmp has been created, the VM (3147) shows the error immediately after starting up, no image opened, just the info. But 3148 works fine so I guess you fixed it :)
From: Eliot Mirandamailto:eliot.miranda@gmail.com Sent: Tuesday, February 8, 2022 3:26 To: Open Smalltalk Virtual Machine Development Discussionmailto:vm-dev@lists.squeakfoundation.org Subject: Re: [Vm-dev] VM Maker: VMMaker.oscog-eem.3147.mcz
can you post the crash.dmp?
On Sun, Feb 6, 2022 at 3:14 PM Jaromir Matas <mail@jaromir.netmailto:mail@jaromir.net> wrote:
Hi, I get this error when starting a fresh updated image with this squeak.cog.spur_win64x64 VM on latest Win 10 x64 [cid:17ed7271c9137b6398a1] Thanks for help, jaromir From: commits@source.squeak.orgmailto:commits@source.squeak.org Sent: Sunday, February 6, 2022 22:52 To: vm-dev@lists.squeakfoundation.orgmailto:vm-dev@lists.squeakfoundation.org Subject: [Vm-dev] VM Maker: VMMaker.oscog-eem.3147.mcz
Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3147.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3147 Author: eem Time: 6 February 2022, 1:51:16.763917 pm UUID: 409be388-ed75-49dc-a648-c7051eb48168 Ancestors: VMMaker.oscog-eem.3146
Fix regressions in the stack interpreter generated sources from VMMaker.oscog-eem.3144, and in primitiveSupend[V2] from VMMaker.oscog-eem.3142,VMMaker.oscog-eem.3134,VMMaker.oscog-eem.3127.
=============== Diff against VMMaker.oscog-eem.3146 ===============
Item was removed: - ----- Method: CoInterpreter>>accessorDepthForExternalPrimitiveMethod: (in category 'plugin primitive support') ----- - accessorDepthForExternalPrimitiveMethod: methodObj - <option: #SpurObjectMemory> - | flags lit | - self assert: (self isLinkedExternalPrimitive: methodObj). - lit := self literal: 0 ofMethod: methodObj. - flags := objectMemory fetchPointer: ExternalCallLiteralFlagsIndex ofObject: lit. - ^(objectMemory integerValueOf: flags) >>> SpurPrimitiveAccessorDepthShift!
Item was removed: - ----- Method: CoInterpreter>>isLinkedExternalPrimitive: (in category 'plugin primitive support') ----- - isLinkedExternalPrimitive: methodObj - | header primIdx literal targetFunctionIndex | - header := objectMemory methodHeaderOf: methodObj. - primIdx := self primitiveIndexOfMethod: methodObj header: header. - ^primIdx = PrimNumberExternalCall - and: [(objectMemory literalCountOfMethodHeader: header) > 0 - and: [(objectMemory isArray: (literal := self literal: 0 ofMethod: methodObj)) - and: [(objectMemory numSlotsOf: literal) = 4 - and: [targetFunctionIndex := objectMemory fetchPointer: ExternalCallLiteralTargetFunctionIndex ofObject: literal. - (objectMemory isIntegerObject: targetFunctionIndex) - and: [(objectMemory integerValueOf: targetFunctionIndex) > 0]]]]] "A 0 byte module name implies a primitive in the main VM; these can't change"!
Item was added: + ----- Method: StackInterpreter>>accessorDepthForExternalPrimitiveMethod: (in category 'plugin primitive support') ----- + accessorDepthForExternalPrimitiveMethod: methodObj + <option: #SpurObjectMemory> + | flags lit | + self assert: (self isLinkedExternalPrimitive: methodObj). + lit := self literal: 0 ofMethod: methodObj. + flags := objectMemory fetchPointer: ExternalCallLiteralFlagsIndex ofObject: lit. + ^(objectMemory integerValueOf: flags) >>> SpurPrimitiveAccessorDepthShift!
Item was added: + ----- Method: StackInterpreter>>isLinkedExternalPrimitive: (in category 'plugin primitive support') ----- + isLinkedExternalPrimitive: methodObj + | header primIdx literal targetFunctionIndex | + header := objectMemory methodHeaderOf: methodObj. + primIdx := self primitiveIndexOfMethod: methodObj header: header. + ^primIdx = PrimNumberExternalCall + and: [(objectMemory literalCountOfMethodHeader: header) > 0 + and: [(objectMemory isArray: (literal := self literal: 0 ofMethod: methodObj)) + and: [(objectMemory numSlotsOf: literal) = 4 + and: [targetFunctionIndex := objectMemory fetchPointer: ExternalCallLiteralTargetFunctionIndex ofObject: literal. + (objectMemory isIntegerObject: targetFunctionIndex) + and: [(objectMemory integerValueOf: targetFunctionIndex) > 0]]]]] "A 0 byte module name implies a primitive in the main VM; these can't change"!
Item was changed: ----- Method: StackInterpreter>>transferTo: (in category 'process primitive support') ----- transferTo: newProc "Record a process to be awoken on the next interpreter cycle." | activeContext sched oldProc | <inline: false> statProcessSwitch := statProcessSwitch + 1. self push: instructionPointer. self externalWriteBackHeadFramePointers. self assertValidExecutionPointe: instructionPointer + 1 r: framePointer s: stackPointer. sched := self schedulerPointer. oldProc := objectMemory fetchPointer: ActiveProcessIndex ofObject: sched. activeContext := self ensureFrameIsMarried: framePointer SP: stackPointer + objectMemory wordSize. objectMemory storePointer: SuspendedContextIndex ofObject: oldProc withValue: activeContext. objectMemory storePointer: ActiveProcessIndex ofObject: sched withValue: newProc. objectMemory storePointerUnchecked: MyListIndex ofObject: newProc withValue: objectMemory nilObject. + self externalSetStackPageAndPointersForSuspendedContextOfProcess: newProc. + ^0 "to allow primitiveSuspend[V2] to exit early by returning the result of transferTo:"! - self externalSetStackPageAndPointersForSuspendedContextOfProcess: newProc!
-- _,,,^..^,,,_ best, Eliot
vm-dev@lists.squeakfoundation.org