Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.127.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.127 Author: eem Time: 23 September 2011, 1:44:07.265 pm UUID: 35927684-7e1e-4ff8-ad9f-90ecec7bb9a0 Ancestors: VMMaker.oscog-eem.126
Fix MNU PIC creation not to answer an error code to the interpreter. This is the demon call 0x00000013 bug.
=============== Diff against VMMaker.oscog-eem.126 ===============
Item was changed: ----- Method: Cogit>>cogMNUPICSelector:methodOperand:numArgs: (in category 'in-line cacheing') ----- cogMNUPICSelector: selector methodOperand: methodOperand numArgs: numArgs <api> "Attempt to create a one-case PIC for an MNU. The tag for the case is at the send site and so doesn't need to be generated." <returnTypeC: #'CogMethod *'> | startAddress headerSize size end | coInterpreter compilationBreak: selector point: (objectMemory lengthOf: selector). + self assert: endCPICCase0 notNil. - endCPICCase0 isNil ifTrue: - [^self cCoerceSimple: NotFullyInitialized to: #'CogMethod *']. startAddress := methodZone allocate: closedPICSize. startAddress = 0 ifTrue: + [coInterpreter callForCogCompiledCodeCompaction. + ^0]. - [^self cCoerceSimple: InsufficientCodeSpace to: #'CogMethod *']. methodLabel address: startAddress; dependent: nil. "stack allocate the various collections so that they are effectively garbage collected on return." self allocateOpcodes: numPICCases * 7 bytecodes: 0. self compileMNUCPIC: (self cCoerceSimple: startAddress to: #'CogMethod *') methodOperand: methodOperand numArgs: numArgs. self computeMaximumSizes. headerSize := self sizeof: CogMethod. size := self generateInstructionsAt: startAddress + headerSize. end := self outputInstructionsAt: startAddress + headerSize. "The missOffset is the same as the interpretOffset." self assert: missOffset = (interpretCall address + interpretCall machineCodeSize - startAddress). self assert: startAddress + cmEntryOffset = entry address. ^self fillInCPICHeader: (self cCoerceSimple: startAddress to: #'CogMethod *') size: closedPICSize numArgs: numArgs numCases: 1 hasMNUCase: true selector: selector !
vm-dev@lists.squeakfoundation.org