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

commits at source.squeak.org commits at source.squeak.org
Wed Mar 23 19:57:45 UTC 2016


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

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

Name: VMMaker.oscog-eem.1740
Author: eem
Time: 23 March 2016, 12:56:08.002711 pm
UUID: 10ece78d-d04d-4ad2-8598-e496b6a6097c
Ancestors: VMMaker.oscog-eem.1739

Fix slips in new versions of bit primitives.

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

Item was changed:
  ----- Method: InterpreterPrimitives>>primitiveBitAnd (in category 'arithmetic integer primitives') -----
  primitiveBitAnd
  	<inline: false>
  	<var: 'integerArgumentValue' type: #usqInt>
+ 	<var: 'integerReceiverValue' type: #usqInt>
+ 	| integerArgumentValue integerReceiverValue |
- 	<var: 'intergerReceiverValue' type: #usqInt>
- 	| integerReceiver integerArgument integerArgumentValue integerReceiverValue |
- 	integerArgument := self stackTop.
- 	integerReceiver := self stackValue: 1.
  	"Note no short-cut for SmallIntegers.  Either the inline interpreter bytecode or the JIT primitive will handle this case."
+ 	integerArgumentValue := self positiveMachineIntegerValueOf: self stackTop.
+ 	integerReceiverValue := self positiveMachineIntegerValueOf: (self stackValue: 1).
- 	integerArgumentValue := self positiveMachineIntegerValueOf: integerArgument.
- 	integerReceiverValue := self positiveMachineIntegerValueOf: integerReceiver.
  	self successful ifTrue:
  		[self pop: 2 thenPush: (self positiveMachineIntegerFor: (integerArgumentValue bitAnd: integerReceiverValue))]!

Item was changed:
  ----- Method: InterpreterPrimitives>>primitiveBitOr (in category 'arithmetic integer primitives') -----
  primitiveBitOr
  	<inline: false>
  	<var: 'integerArgumentValue' type: #usqInt>
+ 	<var: 'integerReceiverValue' type: #usqInt>
+ 	| integerArgumentValue integerReceiverValue |
- 	<var: 'intergerReceiverValue' type: #usqInt>
- 	| integerReceiver integerArgument integerArgumentValue integerReceiverValue |
- 	integerArgument := self stackTop.
- 	integerReceiver := self stackValue: 1.
  	"Note no short-cut for SmallIntegers.  Either the inline interpreter bytecode or the JIT primitive will handle this case."
+ 	integerArgumentValue := self positiveMachineIntegerValueOf: self stackTop.
+ 	integerReceiverValue := self positiveMachineIntegerValueOf: (self stackValue: 1).
- 	integerArgumentValue := self positiveMachineIntegerValueOf: integerArgument.
- 	integerReceiverValue := self positiveMachineIntegerValueOf: integerReceiver.
  	self successful ifTrue:
  		[self pop: 2 thenPush: (self positiveMachineIntegerFor: (integerArgumentValue bitOr: integerReceiverValue))]!

Item was changed:
  ----- Method: InterpreterPrimitives>>primitiveBitXor (in category 'arithmetic integer primitives') -----
  primitiveBitXor
  	<inline: false>
  	<var: 'integerArgumentValue' type: #usqInt>
+ 	<var: 'integerReceiverValue' type: #usqInt>
- 	<var: 'intergerReceiverValue' type: #usqInt>
  	| integerReceiver integerArgument integerArgumentValue integerReceiverValue |
  	integerArgument := self stackTop.
  	integerReceiver := self stackValue: 1.
  	((objectMemory isIntegerObject: integerArgument)
  	 and: [objectMemory isIntegerObject: integerReceiver])
  		ifTrue: "xoring will leave the tag bits zero, whether the tag is 1 or zero, so add it back in."
  			[self pop: 2 thenPush: (integerArgument bitXor: integerReceiver) + objectMemory smallIntegerTag]
  		ifFalse:
  			[integerArgumentValue := self positiveMachineIntegerValueOf: integerArgument.
  			integerReceiverValue := self positiveMachineIntegerValueOf: integerReceiver.
  			 self successful ifTrue:
  				[self pop: 2 thenPush: (self positiveMachineIntegerFor: (integerArgumentValue bitXor: integerReceiverValue))]]!



More information about the Vm-dev mailing list