[Vm-dev] VM Maker: VMMaker.oscog-eem.2416.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Jun 11 22:07:15 UTC 2018
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2416.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2416
Author: eem
Time: 11 June 2018, 3:06:29.068448 pm
UUID: 88c7bf4a-5169-4686-bc31-3e8e99bcfc17
Ancestors: VMMaker.oscog-eem.2415
More initializationOptions clean-ups.
=============== Diff against VMMaker.oscog-eem.2415 ===============
Item was changed:
----- Method: CogObjectRepresentationForSpur class>>declareCVarsIn: (in category 'translation') -----
declareCVarsIn: aCodeGen
"Deal wuth the fact that the number of trampolines depends on IMMUTABILITY
and that IMMUTABILITY can be defined at compile time. Yes, this is a mess."
| current values |
- self assert: (CogObjectRepresentationForSpur allSubclasses allSatisfy:
- [:sc|
- CogObjectRepresentationForSpur initializationOptions == sc initializationOptions]).
current := InitializationOptions at: #IMMUTABILITY ifAbsent: nil.
values := #(true false) collect:
[:bool|
InitializationOptions at: #IMMUTABILITY put: bool.
self cogitClass initializeNumTrampolines.
(Cogit classPool at: #NumTrampolines) printString].
current
ifNil: [InitializationOptions removeKey: #IMMUTABILITY]
ifNotNil: [InitializationOptions at: #IMMUTABILITY put: current].
values first ~= values last ifTrue:
[aCodeGen addConstantForBinding: #NumTrampolines -> ('(IMMUTABILITY ? ' , values first , ' : ' , values last , ')')].
aCodeGen
var: #ceStoreTrampolines
declareC: ('#if IMMUTABILITY\sqInt ceStoreTrampolines[', NumStoreTrampolines printString, '];\#endif') withCRs!
Item was changed:
----- Method: CogX64Compiler class>>initialize (in category 'class initialization') -----
initialize
"Initialize various x64 instruction-related constants.
[1] IA-32 Intel® Architecture Software Developer's Manual Volume 2A: Instruction Set Reference, A-M"
"CogX64Compiler initialize"
self ~~ CogX64Compiler ifTrue: [^self].
+ (InitializationOptions ifNil: [Dictionary new])
- InitializationOptions
at: #ABI
ifPresent: [:abi| SysV := abi asUppercase ~= #WIN64 and: [abi asUppercase ~= #'_WIN64']]
ifAbsent: [SysV := true]. "Default ABI; set to true for SysV, false for WIN64/_WIN64"
RAX := 0.
RCX := 1. "Were they completely mad or simply sadistic?"
RDX := 2.
RBX := 3.
RSP := 4.
RBP := 5.
RSI := 6.
RDI := 7.
R8 := 8.
R9 := 9.
R10 := 10.
R11 := 11.
R12 := 12.
R13 := 13.
R14 := 14.
R15 := 15.
XMM0L := 0.
XMM1L := 1.
XMM2L := 2.
XMM3L := 3.
XMM4L := 4.
XMM5L := 5.
XMM6L := 6.
XMM7L := 7.
XMM8L := 8.
XMM9L := 9.
XMM10L := 10.
XMM11L := 11.
XMM12L := 12.
XMM13L := 13.
XMM14L := 14.
XMM15L := 15.
"Mod R/M Mod fields. See [1] Sec 2.4, 2.5 & 2.6 & Table 2-2"
ModRegInd := 0.
ModRegIndSIB := 4.
ModRegIndDisp32 := 5.
ModRegRegDisp8 := 1.
ModRegRegDisp32 := 2.
ModReg := 3.
"SIB Scaled Index modes. See [1] Sec 2.4, 2.5 & 2.6 & Table 2-3"
SIB1 := 0.
SIB2 := 1.
SIB4 := 2.
SIB8 := 3.
"Specific instructions"
self
initializeSpecificOpcodes: #(CDQ IDIVR IMULRR CPUID LFENCE MFENCE SFENCE LOCK CMPXCHGAwR CMPXCHGMwrR XCHGAwR XCHGMwrR XCHGRR CLD REP MOVSB MOVSQ)
in: thisContext method!
More information about the Vm-dev
mailing list