VM Maker: VMMaker.oscog-eem.2648.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.2648.mcz

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

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

Name: VMMaker.oscog-eem.2648
Author: eem
Time: 29 December 2019, 12:51:45.495048 pm
UUID: c41a5ec7-bfee-41d7-b911-46d59c5a9651
Ancestors: VMMaker.oscog-eem.2647

Comments, categories and simulation slips.

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

Item was changed:
+ ----- Method: CogIA32Compiler>>isJumpAt: (in category 'testing') -----
- ----- Method: CogIA32Compiler>>isJumpAt: (in category 'disassembly') -----
  isJumpAt: pc
  | op |
  op := objectMemory byteAt: pc.
  ^  (op between: 16r70 and: 16r7F) "short conditional jumps"
  or: [op = 16rE9 "long unconditional jump"
  or: [op = 16rEB "short unconditional jump"
  or: [op = 16r0F "long conditional jumps"
  and: [(objectMemory byteAt: pc + 1) between: 16r80 and: 16r8F]]]]!

Item was changed:
  ----- Method: CogOutOfLineLiteralsARMCompiler>>mapEntryAddress (in category 'generate machine code') -----
  mapEntryAddress
  "Typically map entries apply to the end of an instruction, for two reasons:
   a) to cope with literals embedded in variable-length instructions, since, e.g.
  on x86, the literal typically comes at the end of the instruction.
   b) in-line cache detection is based on return addresses, which are typically
  to the instruction following a call.
+ But on ARM using CogOutOfLineLiteralsARMCompiler we use out-of-line literals
+ so the mapEntryAddress of a literal is simply the instruction's address."
- But with out-of-line literals it is more convenient to annotate the literal itself."
  <inline: true>
  ^opcode = Literal
  ifTrue: [address]
  ifFalse: [address + machineCodeSize]!

Item was changed:
+ ----- Method: CogX64Compiler>>isJumpAt: (in category 'testing') -----
- ----- Method: CogX64Compiler>>isJumpAt: (in category 'disassembly') -----
  isJumpAt: pc
  | op |
  op := objectMemory byteAt: pc.
  ^  (op between: 16r70 and: 16r7F) "short conditional jumps"
  or: [op = 16rE9 "long unconditional jump"
  or: [op = 16rEB "short unconditional jump"
  or: [(op = 16r0F "long conditional jumps"
  and: [(objectMemory byteAt: pc + 1) between: 16r80 and: 16r8F])
  or: [op = 16r48 "full unconditional jumps"
  and: [(objectMemory byteAt: pc + 1) = 16rA1
  and: [(objectMemory byteAt: pc + 10) = 16rFF
  and: [(objectMemory byteAt: pc + 11) = 16rE0]]]]]]]!

Item was changed:
+ ----- Method: Spur32BitCoMemoryManager>>isInHeapBounds: (in category 'debug support') -----
- ----- Method: Spur32BitCoMemoryManager>>isInHeapBounds: (in category 'plugin support') -----
  isInHeapBounds: address
  "Answer if the given address is within the entire range ST object memory.
  For quick checking during leak checking only!!"
  ^(self oop: address isGreaterThanOrEqualTo: memory)
   and: [self oop: address isLessThan: endOfMemory]!

Item was added:
+ ----- Method: Spur32BitMMLECoSimulator>>isInHeapBounds: (in category 'debug support') -----
+ isInHeapBounds: address
+ "Answer if the given address is within the entire range ST object memory.
+ For quick checking during leak checking only!!"
+ ^(self oop: address isGreaterThanOrEqualTo: cogit cogCodeBase)
+  and: [self oop: address isLessThan: endOfMemory]!

Item was changed:
+ ----- Method: Spur64BitCoMemoryManager>>isInHeapBounds: (in category 'debug support') -----
- ----- Method: Spur64BitCoMemoryManager>>isInHeapBounds: (in category 'plugin support') -----
  isInHeapBounds: address
  "Answer if the given address is within the entire range ST object memory.
  For quick checking during leak checking only!!"
  ^(self oop: address isGreaterThanOrEqualTo: memory)
   and: [self oop: address isLessThan: endOfMemory]!

Item was added:
+ ----- Method: Spur64BitMMLECoSimulator>>isInHeapBounds: (in category 'debug support') -----
+ isInHeapBounds: address
+ "Answer if the given address is within the entire range ST object memory.
+ For quick checking during leak checking only!!"
+ ^(self oop: address isGreaterThanOrEqualTo: cogit cogCodeBase)
+  and: [self oop: address isLessThan: endOfMemory]!

Item was changed:
+ ----- Method: SpurMemoryManager>>isInHeapBounds: (in category 'debug support') -----
- ----- Method: SpurMemoryManager>>isInHeapBounds: (in category 'plugin support') -----
  isInHeapBounds: address
  "Answer if the given address is within the entire range ST object memory.
  For quick checking during leak checking only!!"
  ^(self oop: address isGreaterThanOrEqualTo: newSpaceStart)
   and: [self oop: address isLessThan: endOfMemory]!