VM Maker: Cog-eem.423.mcz

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

VM Maker: Cog-eem.423.mcz

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