Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1014.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.1014 Author: eem Time: 9 January 2015, 12:14:41.936 pm UUID: 8c9c75f6-b340-4135-ae40-399c35379d5d Ancestors: VMMaker.oscog-eem.1013
Make the pin primitives Spur-only.
Nuke an erroneous method and add a missing simulation method.
=============== Diff against VMMaker.oscog-eem.1013 ===============
Item was added: + ----- Method: CurrentImageCoInterpreterFacade>>shiftForWord (in category 'accessing') ----- + shiftForWord + ^objectMemory shiftForWord!
Item was changed: ----- Method: InterpreterPrimitives>>primitiveIsPinned (in category 'memory space primitives') ----- primitiveIsPinned "Answer if the receiver is pinned, i.e. immobile." + <option: #SpurObjectMemory> | obj | obj := self stackTop. ((objectMemory isImmediate: obj) or: [objectMemory isForwarded: obj]) ifTrue: [^self primitiveFailFor: PrimErrBadReceiver]. self pop: argumentCount + 1 thenPushBool: (objectMemory hasSpurMemoryManagerAPI and: [objectMemory booleanObjectOf: (objectMemory isPinned: obj)])!
Item was changed: ----- Method: InterpreterPrimitives>>primitivePin (in category 'memory space primitives') ----- primitivePin "Pin or unpin the receiver, i.e. make it immobile or mobile, based on the argument. Answer whether the object was already pinned. N.B. pinning does *not* prevent an object from being garbage collected." + <option: #SpurObjectMemory> | obj boolean wasPinned | - objectMemory hasSpurMemoryManagerAPI ifFalse: - [^self primitiveFailFor: PrimErrUnsupported].
obj := self stackValue: 1. ((objectMemory isImmediate: obj) or: [objectMemory isForwarded: obj]) ifTrue: [^self primitiveFailFor: PrimErrBadReceiver].
boolean := self stackTop. (boolean = objectMemory falseObject or: [boolean = objectMemory trueObject]) ifFalse: [^self primitiveFailFor: PrimErrBadArgument].
(objectMemory isPinned: obj) ifTrue: [wasPinned := objectMemory trueObject. boolean ~= wasPinned ifTrue: [objectMemory setIsPinnedOf: obj to: false]] ifFalse: [wasPinned := objectMemory falseObject. (boolean = objectMemory trueObject and: [(objectMemory pinObject: obj) = 0]) ifTrue: [^self primitiveFailFor: PrimErrNoMemory]]. self pop: argumentCount + 1 thenPush: wasPinned!
Item was removed: - ----- Method: StackToRegisterMappingCogit>>declareCVarsIn: (in category 'as yet unclassified') ----- - declareCVarsIn: aCodeGen - aCodeGen - var: #methodAbortTrampolines - declareC: 'sqInt methodAbortTrampolines[4]'; - var: #picAbortTrampolines - declareC: 'sqInt picAbortTrampolines[4]'; - var: #picMissTrampolines - declareC: 'sqInt picMissTrampolines[4]'; - var: 'ceCall0ArgsPIC' - declareC: 'void (*ceCall0ArgsPIC)(void)'; - var: 'ceCall1ArgsPIC' - declareC: 'void (*ceCall1ArgsPIC)(void)'; - var: 'ceCall2ArgsPIC' - declareC: 'void (*ceCall2ArgsPIC)(void)'; - var: #ceCallCogCodePopReceiverArg0Regs - declareC: 'void (*ceCallCogCodePopReceiverArg0Regs)(void)'; - var: #realCECallCogCodePopReceiverArg0Regs - declareC: 'void (*realCECallCogCodePopReceiverArg0Regs)(void)'; - var: #ceCallCogCodePopReceiverArg1Arg0Regs - declareC: 'void (*ceCallCogCodePopReceiverArg1Arg0Regs)(void)'; - var: #realCECallCogCodePopReceiverArg1Arg0Regs - declareC: 'void (*realCECallCogCodePopReceiverArg1Arg0Regs)(void)'; - var: 'simStack' - declareC: 'CogSimStackEntry simStack[', ((CoInterpreter bindingOf: #LargeContextSize) value * 5 / 4 // objectMemory wordSize) asString, ']'; - var: 'simSelf' - type: #CogSimStackEntry; - var: #optStatus - type: #CogSSOptStatus; - var: 'prevBCDescriptor' - type: #'BytecodeDescriptor *'. - - self numPushNilsFunction ifNotNil: - [aCodeGen - var: 'numPushNilsFunction' - declareC: 'sqInt (* const numPushNilsFunction)(struct _BytecodeDescriptor *,sqInt,sqInt,sqInt) = ', (aCodeGen cFunctionNameFor: self numPushNilsFunction); - var: 'pushNilSizeFunction' - declareC: 'sqInt (* const pushNilSizeFunction)(sqInt) = ', (aCodeGen cFunctionNameFor: self pushNilSizeFunction)]. - - aCodeGen - addSelectorTranslation: #register to: (aCodeGen cFunctionNameFor: 'registerr'); - addSelectorTranslation: #register: to: (aCodeGen cFunctionNameFor: 'registerr:')!
vm-dev@lists.squeakfoundation.org