Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1008.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.1008 Author: eem Time: 1 January 2015, 2:03:01.789 pm UUID: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a Ancestors: VMMaker.oscog-eem.1007
Third time lucky?
And remove a gcc compiler warning for printHexnp:
=============== Diff against VMMaker.oscog-eem.1007 ===============
Item was changed: ----- Method: StackInterpreter>>findUnwindThroughContext: (in category 'return bytecodes') ----- findUnwindThroughContext: homeContext "Search for either an unwind-protect (activation of method with primitive 198) or homeContext along the sender chain, which ever is found first. Return values: 0 home context was found on sender chain with no intervening unwind-protects nilObj home context could not be found => cannotReturn context the context of an intervening unwind-protect implies home context was found" | onSamePage ctxtOrNilOrZero theMethod | "Almost always (98%) the home is on the same page, in which case we know it will be found." onSamePage := (self isStillMarriedContext: homeContext) and: [(stackPages pageIndexFor: framePointer) = (stackPages pageIndexFor: (self frameOfMarriedContext: homeContext))].
"Since nothing changes we don't need to internalize." ctxtOrNilOrZero := self findMethodWithPrimitive: 198 FromFP: framePointer UpToContext: homeContext. self deny: (onSamePage and: [ctxtOrNilOrZero = objectMemory nilObject]).
ctxtOrNilOrZero = 0 ifTrue: [theMethod := objectMemory fetchPointer: MethodIndex ofObject: homeContext. (self primitiveIndexOf: theMethod) = 198 ifTrue: + [^homeContext]. + ^0]. - [^homeContext]].
"If an unwind was found, can the home context be found also? No need to look if on the same page. No need to look if cannot return (ctxtOrNilOrZero = objectMemory nilObject)" (onSamePage or: [ctxtOrNilOrZero = objectMemory nilObject]) ifFalse: [(self findMethodWithPrimitive: 0 FromContext: ctxtOrNilOrZero UpToContext: homeContext) = objectMemory nilObject ifTrue: [^objectMemory nilObject]]. ^ctxtOrNilOrZero!
Item was changed: ----- Method: StackInterpreter>>printHexnp: (in category 'debug printing') ----- printHexnp: n "Print n in hex, in the form '0x1234', unpadded" + self print: '0x%lx' f: (self cCoerceSimple: n to: #'unsigned long')! - self print: '0x%lx' f: n!
vm-dev@lists.squeakfoundation.org