aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2009-12-28 21:18:44 +0100
committerMike Pall <mike>2009-12-28 21:18:44 +0100
commit7b7c6ed754e5fc9f9a76da7c7d06d311d66cbd79 (patch)
treee696eb70094df2dd5e884dafb181b0a43a5c0140 /src
parentda65e0dfed4107adcd10bfff671af3630f304f35 (diff)
downloadluajit-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.dasc6
-rw-r--r--src/lj_target_x86.h5
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,