VM Maker: VMMaker.oscog-eem.2509.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

VM Maker: VMMaker.oscog-eem.2509.mcz

commits-2
 
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!