Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.223.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.223 Author: eem Time: 26 November 2012, 5:07:25.123 pm UUID: 62151b21-ad34-403a-b5a0-63d83c023cdd Ancestors: VMMaker.oscog-eem.222
Make sure primitiveIndexOfMethod:header: is inlined as was the older primitiveIndexOfMethodHeader:. Add more info to logging and remove ceCheckForInterrupts's false dependency on interpreter vars.
=============== Diff against VMMaker.oscog-eem.222 ===============
Item was changed: ----- Method: CoInterpreter>>ceCheckForInterrupts (in category 'trampolines') ----- ceCheckForInterrupts <api> | switched | + self cCode: [] inSmalltalk: - self cCode: '' inSmalltalk: [self maybeCheckStackDepth: 0 sp: stackPointer pc: instructionPointer]. switched := self checkForEventsMayContextSwitch: true. self returnToExecutive: false postContextSwitch: switched!
Item was changed: ----- Method: StackInterpreter>>primitiveIndexOfMethod:header: (in category 'compiled methods') ----- primitiveIndexOfMethod: theMethod header: methodHeader "Note: With the Squeak V0 format we now have 10 bits of primitive index, but they are in two places for temporary backward compatibility. The time to unpack is negligible, since the derived primitive function pointer is stored in the method cache. With the new format we assume a 3-byte CallPrimitive with a little-endian 16-bit primitive index." <api> + <inline: true> ^self cppIf: MULTIPLEBYTECODESETS ifTrue: [(self headerIndicatesAlternateBytecodeSet: methodHeader) ifTrue: [(self alternateHeaderHasPrimitiveFlag: methodHeader) ifTrue: [| firstBytecode | firstBytecode := self firstBytecodeOfAlternateHeader: methodHeader method: theMethod. (objectMemory byteAt: firstBytecode + 1) + ((objectMemory byteAt: firstBytecode + 2) << 8)] ifFalse: [0]] ifFalse: [| primBits | primBits := methodHeader >> 1. (primBits bitAnd: 16r1FF) + (primBits >> 19 bitAnd: 16r200)]] ifFalse: [| primBits | primBits := methodHeader >> 1. (primBits bitAnd: 16r1FF) + (primBits >> 19 bitAnd: 16r200)]!
Item was changed: ----- Method: VMMaker>>generateEntire (in category 'generate sources') ----- generateEntire "Generate the interp, internal plugins and exports as well as the external plugins. If this comes from a generator, log it for convenience." (thisContext findContextSuchThat: [:ctxt| ctxt selector == #generateConfiguration]) ifNotNil: [:root| (thisContext findContextSuchThat: [:ctxt| ctxt sender == root]) ifNotNil: [:generator| + logger nextPutAll: (generator selector copyReplaceAll: 'generate' with: ''). + interpreterClassName ifNotNil: [logger space; nextPutAll: interpreterClassName]. + logger cr; flush]]. - logger - nextPutAll: (generator selector copyReplaceAll: 'generate' with: ''); - cr; - flush]]. self generateMainVM. self generateExternalPlugins!
vm-dev@lists.squeakfoundation.org