[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