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! |
Free forum by Nabble | Edit this page |