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

commits at source.squeak.org commits at source.squeak.org
Mon Jan 21 00:35:57 UTC 2019


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

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

Name: VMMaker.oscog-eem.2509
Author: eem
Time: 20 January 2019, 4:35:42.084252 pm
UUID: 91e81f64-95de-4914-a960-8f842be3a194
Ancestors: VMMaker.oscog-eem.2508

Both 64 and 32-bit Spur can and integers together to check for two SmallIntegers.

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

Item was removed:
- ----- Method: Spur32BitMemoryManager>>areIntegers:and: (in category 'interpreter access') -----
- areIntegers: oop1 and: oop2
- 	"Test oop1 and oop2 to make sure both are SmallIntegers."
- 	^((oop1 bitAnd: oop2) bitAnd: 1) ~= 0!

Item was removed:
- ----- Method: Spur64BitMemoryManager>>areIntegers:and: (in category 'interpreter access') -----
- areIntegers: oop1 and: oop2
- 	"Test oop1 and oop2 to make sure both are SmallIntegers."
- 	^(self isIntegerObject: oop1)
- 	  and: [self isIntegerObject: oop2]!

Item was changed:
  ----- Method: SpurMemoryManager>>areIntegers:and: (in category 'interpreter access') -----
  areIntegers: oop1 and: oop2
+ 	"Test oop1 and oop2 to make sure both are SmallIntegers.
+ 	 In 32-bits the tags are 1 = SmallInteger & 3 = SmallInteger, and 2 = Character.
+ 	 In 64-bits the  tags are 1 = SmallInteger, 2 = Character & 4 = SmallFloat64.
+ 	 In both cases we can test for two SmallIntegers by anding them together and
+ 	 if the result still has the least significant bit set then both are SmallIntegers."
+ 	^(oop1 bitAnd: oop2) anyMask: self smallIntegerTag!
- 	"Test oop1 and oop2 to make sure both are SmallIntegers."
- 	self subclassResponsibility!

Item was added:
+ ----- Method: StackDepthFinder>>allStackPointers (in category 'accessing') -----
+ allStackPointers
+ 	"Answer a Dictionary from method to Array of stack pointers for all methods ioncluded in the receiver's method."
+ 	"(StackDepthFinder on: StackDepthFinder >> #allStackPointers) allStackPointers"
+ 	| allStackPointers method endPC |
+ 	allStackPointers := Dictionary new.
+ 	allStackPointers at: (method := self method) put: self stackPointers.
+ 	endPC := pc.
+ 	method nestedBlockMethods do:
+ 		[:blockMethod|
+ 		self method: blockMethod pc: blockMethod initialPC.
+ 		allStackPointers at: blockMethod put: self stackPointers].
+ 	self method: method pc: endPC.
+ 	^allStackPointers!



More information about the Vm-dev mailing list