From 7b7c6ed754e5fc9f9a76da7c7d06d311d66cbd79 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Mon, 28 Dec 2009 21:18:44 +0100 Subject: [PATCH] Change callee-save regs for x64 interpreter to shorten code. --- src/buildvm_x86.dasc | 6 ++++-- 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 @@ |.define KBASE, edi // Must be C callee-save. |.define KBASEa, KBASE |.define PC, esi // Must be C callee-save. +|.define DISPATCH, ebx // Must be C callee-save. |.elif X64WIN |.define KBASE, edi // Must be C callee-save. |.define KBASEa, rdi |.define PC, esi // Must be C callee-save. +|.define DISPATCH, ebx // Must be C callee-save. |.else |.define KBASE, r15d // Must be C callee-save. |.define KBASEa, r15 -|.define PC, r14d // Must be C callee-save. +|.define PC, ebx // Must be C callee-save. +|.define DISPATCH, r14d // Must be C callee-save. |.endif -|.define DISPATCH, ebx // Must be C callee-save. | |.define RA, ecx |.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 { /* These definitions must match with the *.dasc file(s): */ RID_BASE = RID_EDX, /* Interpreter BASE. */ +#if LJ_64 && !defined(_WIN64) + RID_PC = RID_EBX, /* Interpreter PC. */ + RID_DISPATCH = RID_R14D, /* Interpreter DISPATCH table. */ +#else RID_PC = RID_ESI, /* Interpreter PC. */ RID_DISPATCH = RID_EBX, /* Interpreter DISPATCH table. */ +#endif /* Register ranges [min, max) and number of registers. */ RID_MIN_GPR = RID_EAX, -- 2.11.4.GIT