[Vm-dev] VM Maker: VMMaker.oscog-eem.1008.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Jan 1 22:05:36 UTC 2015
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!
More information about the Vm-dev
mailing list