[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