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

commits at source.squeak.org commits at source.squeak.org
Sun Dec 29 20:52:00 UTC 2019


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]!



More information about the Vm-dev mailing list