[Vm-dev] VM Maker: VMMaker.oscog-eem.613.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Feb 10 23:11:16 UTC 2014


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.613.mcz

==================== Summary ====================

Name: VMMaker.oscog-eem.613
Author: eem
Time: 10 February 2014, 3:07:28.778 pm
UUID: a84d1f38-0c74-4f61-8e2a-f3c77262a9fb
Ancestors: VMMaker.oscog-eem.612

Make primitiveClone cope with variable args, cloning its last
argument.  This for the Newspeak VMMirror.

=============== Diff against VMMaker.oscog-eem.612 ===============

Item was changed:
  ----- Method: CoInterpreterPrimitives>>primitiveClone (in category 'object access primitives') -----
  primitiveClone
  	"Return a shallow copy of the receiver.
  	 Special-case non-single contexts (because of context-to-stack mapping).
  	 Can't fail for contexts cuz of image context instantiation code (sigh).
  	 Special case CompiledMerhods since the copy mustn't refer to CogMethod
  	 if receiver has been cogged."
  
  	| rcvr newCopy objHeader |
  	rcvr := self stackTop.
  	(objectMemory isImmediate: rcvr)
  		ifTrue: [newCopy := rcvr]
  		ifFalse:
  			[objHeader := objectMemory baseHeader: rcvr.
  			(objectMemory isContextHeader: objHeader)
  				ifTrue: [newCopy := self cloneContext: rcvr]
  				ifFalse: [newCopy := objectMemory clone: rcvr].
  			newCopy = 0 ifTrue:
  				[^self primitiveFailFor: PrimErrNoMemory].
  			(objectMemory isCompiledMethodHeader: objHeader) ifTrue:
  				["use stackTop since GC may have moved rcvr"
  				 self rawHeaderOf: newCopy put: (self headerOf: self stackTop)]].
+ 	self pop: argumentCount + 1 thenPush: newCopy!
- 	self pop: 1 thenPush: newCopy!

Item was changed:
  ----- Method: Interpreter>>primitiveClone (in category 'object access primitives') -----
  primitiveClone
  	"Return a shallow copy of the receiver."
  
  	| newCopy |
+ 	newCopy := self clone: self stackTop.
+ 	newCopy = 0 ifTrue: "not enough memory most likely"
+ 		[^self primitiveFail].
+ 	self pop: argumentCount + 1 thenPush: newCopy!
- 	newCopy := self clone: (self stackTop).
- 	newCopy = 0
- 		ifTrue:["not enough memory most likely" ^self primitiveFail].
- 	self pop: 1 thenPush: newCopy.!

Item was changed:
  ----- Method: InterpreterPrimitives>>primitiveClone (in category 'object access primitives') -----
  primitiveClone
  	"Return a shallow copy of the receiver."
  
  	| rcvr newCopy |
  	rcvr := self stackTop.
  	(objectMemory isImmediate: rcvr)
  		ifTrue:
  			[newCopy := rcvr]
  		ifFalse:
  			[newCopy := objectMemory clone: rcvr.
  			 newCopy = 0 ifTrue: "not enough memory most likely"
  				[^self primitiveFail]].
+ 	self pop: argumentCount + 1 thenPush: newCopy!
- 	self pop: 1 thenPush: newCopy!

Item was changed:
  ----- Method: NewspeakInterpreter>>primitiveClone (in category 'object access primitives') -----
  primitiveClone
  	"Return a shallow copy of the receiver."
  
  	| newCopy |
+ 	newCopy := self clone: self stackTop.
+ 	newCopy = 0 ifTrue: "not enough memory most likely"
+ 		[^self primitiveFail].
+ 	self pop: argumentCount + 1 thenPush: newCopy!
- 	newCopy := self clone: (self stackTop).
- 	newCopy = 0
- 		ifTrue:["not enough memory most likely" ^self primitiveFail].
- 	self pop: 1 thenPush: newCopy.!

Item was changed:
  ----- Method: StackInterpreterPrimitives>>primitiveClone (in category 'object access primitives') -----
  primitiveClone
  	"Return a shallow copy of the receiver.
  	 Special-case non-single contexts (because of context-to-stack mapping).
  	 Can't fail for contexts cuz of image context instantiation code (sigh)."
  
  	| rcvr newCopy |
  	rcvr := self stackTop.
  	(objectMemory isImmediate: rcvr)
  		ifTrue:
  			[newCopy := rcvr]
  		ifFalse:
  			[(objectMemory isContextNonImm: rcvr)
  				ifTrue:
  					[newCopy := self cloneContext: rcvr]
  				ifFalse:
  					[newCopy := objectMemory clone: rcvr].
  			newCopy = 0 ifTrue:
  				[^self primitiveFailFor: PrimErrNoMemory]].
+ 	self pop: argumentCount + 1 thenPush: newCopy!
- 	self pop: 1 thenPush: newCopy!



More information about the Vm-dev mailing list