[Vm-dev] VM Maker: Cog-eem.423.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Oct 30 13:02:42 UTC 2020


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

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

Name: Cog-eem.423
Author: eem
Time: 30 October 2020, 6:02:36.95265 am
UUID: 38d317fe-abfe-4ce6-97a1-972d0fe2ac25
Ancestors: Cog-eem.422

Refactor abiMarshalArg0:... to accomodate IA32.  Raise a trap for stop opcodes.

=============== Diff against Cog-eem.422 ===============

Item was changed:
  ----- Method: BochsIA32Alien class>>initialize (in category 'class initialization') -----
  initialize
  	"BochsIA32Alien initialize"
  	| it |
  	it := self basicNew.
  	PostBuildStackDelta := 0.
  	OpcodeExceptionMap := Array new: 256 withAll: #handleExecutionPrimitiveFailureAt:in:.
  	OpcodeExceptionMap
  		at: 1 + it callOpcode			put: #handleCallFailureAt:in:;
  		at: 1 + it jmpOpcode			put: #handleJmpFailureAt:in:;
  		at: 1 + it retOpcode			put: #handleRetFailureAt:in:;
  		at: 1 + it movALObOpcode	put: #handleMovALObFailureAt:in:;
  		at: 1 + it movAXOvOpcode	put: #handleMovAXOvFailureAt:in:;
  		at: 1 + it movObALOpcode	put: #handleMovObALFailureAt:in:;
  		at: 1 + it movOvAXOpcode	put: #handleMovOvAXFailureAt:in:;
  		at: 1 + it movGvEvOpcode	put: #handleMovGvEvFailureAt:in:;
  		at: 1 + it movEvGvOpcode	put: #handleMovEvGvFailureAt:in:;
  		at: 1 + it movGbEbOpcode	put: #handleMovGbEbFailureAt:in:;
+ 		at: 1 + it movEbGbOpcode	put: #handleMovEbGbFailureAt:in:;
+ 		at: 1 + it stopOpcode 		put: #handleStopFailureAt:in:.
- 		at: 1 + it movEbGbOpcode	put: #handleMovEbGbFailureAt:in:.
  	ExtendedOpcodeExceptionMap := Array new: 256 withAll: #handleExecutionPrimitiveFailureAt:in:.
  	ExtendedOpcodeExceptionMap
  		at: 1 + it movGvEbOpcode put: #handleMovGvEbFailureAt:in:!

Item was added:
+ ----- Method: BochsIA32Alien>>abiMarshalArg0:arg1:in: (in category 'accessing-abstract') -----
+ abiMarshalArg0: arg0 arg1: arg1 in: memory
+ 	"Marshal two integral arguments according to the ABI.
+ 	 Currently used only on processors that do ceFlushICache in machine code.
+ 	 CogICacheFlushingIA32Compiler does just this."
+ 	self push: arg1.
+ 	self push: arg0!

Item was added:
+ ----- Method: BochsIA32Alien>>abiMarshalArg0:in: (in category 'accessing-abstract') -----
+ abiMarshalArg0: arg0 in: memory
+ 	"Marshal one integral argument according to the ABI.
+ 	 Currently used in the COGMTVM to tryLockVMOwner:"
+ 	self pushWord: arg0 in: memory!

Item was removed:
- ----- Method: BochsIA32Alien>>abiMarshallArg0: (in category 'accessing-abstract') -----
- abiMarshallArg0: arg0
- 	"Marshall one integral argument according to the ABI.
- 	 Currently used in the COGMTVM to tryLockVMOwner:"
- 	self push: arg0!

Item was removed:
- ----- Method: BochsIA32Alien>>abiMarshallArg0:arg1: (in category 'accessing-abstract') -----
- abiMarshallArg0: arg0 arg1: arg1
- 	"Marshall two integral arguments according to the ABI.
- 	 Currently used only on processors that do ceFlushICache in machine code.
- 	 CogICacheFlushingIA32Compiler does just this."
- 	self push: arg1.
- 	self push: arg0!

Item was added:
+ ----- Method: BochsIA32Alien>>handleStopFailureAt:in: (in category 'error handling') -----
+ handleStopFailureAt: pc "<Integer>" in: memoryArray "<Bitmap|ByteArray>"
+ 	^(ProcessorSimulationTrap
+ 			pc: pc
+ 			nextpc: pc + 1
+ 			address: pc
+ 			type: #stop
+ 			accessor: nil)
+ 		signal!

Item was added:
+ ----- Method: BochsIA32Alien>>stopOpcode (in category 'opcodes') -----
+ stopOpcode
+ 	^16rCC!

Item was added:
+ ----- Method: BochsX64Alien>>abiMarshalArg0:in: (in category 'accessing-abstract') -----
+ abiMarshalArg0: arg0 in: memory
+ 	"Marshal one integral argument according to the ABI.
+ 	 Currently used in the COGMTVM to tryLockVMOwner:"
+ 	(CogX64Compiler classPool at: #CArg0Reg) = 1
+ 		ifTrue: [self rcx: arg0] "Hack; Win64"
+ 		ifFalse: [self rdi: arg0] "Hack; SysV"!

Item was removed:
- ----- Method: BochsX64Alien>>abiMarshallArg0: (in category 'accessing-abstract') -----
- abiMarshallArg0: arg0
- 	"Marshall one integral argument according to the ABI.
- 	 Currently used in the COGMTVM to tryLockVMOwner:"
- 	(CogX64Compiler classPool at: #CArg0Reg) = 1
- 		ifTrue: [self rcx: arg0] "Hack; Win64"
- 		ifFalse: [self rdi: arg0] "Hack; SysV"!

Item was added:
+ ----- Method: CogProcessorAlien>>abiMarshalArg0:arg1:in: (in category 'accessing-abstract') -----
+ abiMarshalArg0: arg0 arg1: arg1 in: memory
+ 	"Marshal two integral arguments according to the ABI.
+ 	 Currently used only on processors that do ceFlushICache in machine code."
+ 	self subclassResponsibility!

Item was removed:
- ----- Method: CogProcessorAlien>>abiMarshallArg0:arg1: (in category 'accessing-abstract') -----
- abiMarshallArg0: arg0 arg1: arg1
- 	"Marshall two integral arguments according to the ABI.
- 	 Currently used only on processors that do ceFlushICache in machine code."
- 	self subclassResponsibility!



More information about the Vm-dev mailing list