diff options
author | Mike Pall <mike> | 2009-12-28 21:18:44 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2009-12-28 21:18:44 +0100 |
commit | 7b7c6ed754e5fc9f9a76da7c7d06d311d66cbd79 (patch) | |
tree | e696eb70094df2dd5e884dafb181b0a43a5c0140 /src | |
parent | da65e0dfed4107adcd10bfff671af3630f304f35 (diff) | |
download | luajit-7b7c6ed754e5fc9f9a76da7c7d06d311d66cbd79.tar.gz luajit-7b7c6ed754e5fc9f9a76da7c7d06d311d66cbd79.tar.bz2 luajit-7b7c6ed754e5fc9f9a76da7c7d06d311d66cbd79.zip |
Change callee-save regs for x64 interpreter to shorten code.
Diffstat (limited to 'src')
-rw-r--r-- | src/buildvm_x86.dasc | 6 | ||||
-rw-r--r-- | src/lj_target_x86.h | 5 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc index fa9bf9fb..84bfd50c 100644 --- a/src/buildvm_x86.dasc +++ b/src/buildvm_x86.dasc | |||
@@ -23,16 +23,18 @@ | |||
23 | |.define KBASE, edi // Must be C callee-save. | 23 | |.define KBASE, edi // Must be C callee-save. |
24 | |.define KBASEa, KBASE | 24 | |.define KBASEa, KBASE |
25 | |.define PC, esi // Must be C callee-save. | 25 | |.define PC, esi // Must be C callee-save. |
26 | |.define DISPATCH, ebx // Must be C callee-save. | ||
26 | |.elif X64WIN | 27 | |.elif X64WIN |
27 | |.define KBASE, edi // Must be C callee-save. | 28 | |.define KBASE, edi // Must be C callee-save. |
28 | |.define KBASEa, rdi | 29 | |.define KBASEa, rdi |
29 | |.define PC, esi // Must be C callee-save. | 30 | |.define PC, esi // Must be C callee-save. |
31 | |.define DISPATCH, ebx // Must be C callee-save. | ||
30 | |.else | 32 | |.else |
31 | |.define KBASE, r15d // Must be C callee-save. | 33 | |.define KBASE, r15d // Must be C callee-save. |
32 | |.define KBASEa, r15 | 34 | |.define KBASEa, r15 |
33 | |.define PC, r14d // Must be C callee-save. | 35 | |.define PC, ebx // Must be C callee-save. |
36 | |.define DISPATCH, r14d // Must be C callee-save. | ||
34 | |.endif | 37 | |.endif |
35 | |.define DISPATCH, ebx // Must be C callee-save. | ||
36 | | | 38 | | |
37 | |.define RA, ecx | 39 | |.define RA, ecx |
38 | |.if X64; .define RAa, rcx; .else; .define RAa, RA; .endif | 40 | |.if X64; .define RAa, rcx; .else; .define RAa, RA; .endif |
diff --git a/src/lj_target_x86.h b/src/lj_target_x86.h index 2fb3c4b8..198245cd 100644 --- a/src/lj_target_x86.h +++ b/src/lj_target_x86.h | |||
@@ -40,8 +40,13 @@ enum { | |||
40 | 40 | ||
41 | /* These definitions must match with the *.dasc file(s): */ | 41 | /* These definitions must match with the *.dasc file(s): */ |
42 | RID_BASE = RID_EDX, /* Interpreter BASE. */ | 42 | RID_BASE = RID_EDX, /* Interpreter BASE. */ |
43 | #if LJ_64 && !defined(_WIN64) | ||
44 | RID_PC = RID_EBX, /* Interpreter PC. */ | ||
45 | RID_DISPATCH = RID_R14D, /* Interpreter DISPATCH table. */ | ||
46 | #else | ||
43 | RID_PC = RID_ESI, /* Interpreter PC. */ | 47 | RID_PC = RID_ESI, /* Interpreter PC. */ |
44 | RID_DISPATCH = RID_EBX, /* Interpreter DISPATCH table. */ | 48 | RID_DISPATCH = RID_EBX, /* Interpreter DISPATCH table. */ |
49 | #endif | ||
45 | 50 | ||
46 | /* Register ranges [min, max) and number of registers. */ | 51 | /* Register ranges [min, max) and number of registers. */ |
47 | RID_MIN_GPR = RID_EAX, | 52 | RID_MIN_GPR = RID_EAX, |