diff options
author | Mike Pall <mike> | 2009-12-16 04:37:30 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2009-12-16 04:37:30 +0100 |
commit | 85d32aeb36bf6055b8e3696432458d07ccdb4006 (patch) | |
tree | 6c8cf5b4ada5c0b03bcd5a87bbc0ff252d8db576 | |
parent | d2156c7f73b42b9c4dcbb3c41031dc03192a31ce (diff) | |
download | luajit-85d32aeb36bf6055b8e3696432458d07ccdb4006.tar.gz luajit-85d32aeb36bf6055b8e3696432458d07ccdb4006.tar.bz2 luajit-85d32aeb36bf6055b8e3696432458d07ccdb4006.zip |
Change some misuses of esp in x64 interpreter.
-rw-r--r-- | src/buildvm_x86.dasc | 68 | ||||
-rw-r--r-- | src/buildvm_x86.h | 4 |
2 files changed, 36 insertions, 36 deletions
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc index 7638cf9b..c781725f 100644 --- a/src/buildvm_x86.dasc +++ b/src/buildvm_x86.dasc | |||
@@ -150,28 +150,28 @@ | |||
150 | | pop rbx; pop rsi; pop rdi; pop rbp | 150 | | pop rbx; pop rsi; pop rdi; pop rbp |
151 | |.endmacro | 151 | |.endmacro |
152 | | | 152 | | |
153 | |.define UNUSED1, aword [esp+dword*26] | 153 | |.define UNUSED1, aword [rsp+dword*26] |
154 | |.define SAVE_PC, dword [esp+dword*25] | 154 | |.define SAVE_PC, dword [rsp+dword*25] |
155 | |.define SAVE_L, dword [esp+dword*24] | 155 | |.define SAVE_L, dword [rsp+dword*24] |
156 | |.define SAVE_ERRF, dword [esp+dword*23] | 156 | |.define SAVE_ERRF, dword [rsp+dword*23] |
157 | |.define SAVE_NRES, dword [esp+dword*22] | 157 | |.define SAVE_NRES, dword [rsp+dword*22] |
158 | |.define TMP2, dword [esp+dword*21] | 158 | |.define TMP2, dword [rsp+dword*21] |
159 | |.define TMP1, dword [esp+dword*20] | 159 | |.define TMP1, dword [rsp+dword*20] |
160 | |//----- 16 byte aligned, ^^^ 32 byte register save area, owned by interpreter | 160 | |//----- 16 byte aligned, ^^^ 32 byte register save area, owned by interpreter |
161 | |.define SAVE_RET, aword [esp+aword*9] //<-- rsp entering interpreter. | 161 | |.define SAVE_RET, aword [rsp+aword*9] //<-- rsp entering interpreter. |
162 | |.define SAVE_R4, aword [esp+aword*8] | 162 | |.define SAVE_R4, aword [rsp+aword*8] |
163 | |.define SAVE_R3, aword [esp+aword*7] | 163 | |.define SAVE_R3, aword [rsp+aword*7] |
164 | |.define SAVE_R2, aword [esp+aword*6] | 164 | |.define SAVE_R2, aword [rsp+aword*6] |
165 | |.define SAVE_R1, aword [esp+aword*5] //<-- rsp after register saves. | 165 | |.define SAVE_R1, aword [rsp+aword*5] //<-- rsp after register saves. |
166 | |.define SAVE_CFRAME, aword [esp+aword*4] | 166 | |.define SAVE_CFRAME, aword [rsp+aword*4] |
167 | |.define CSAVE_4, aword [esp+aword*3] | 167 | |.define CSAVE_4, aword [rsp+aword*3] |
168 | |.define CSAVE_3, aword [esp+aword*2] | 168 | |.define CSAVE_3, aword [rsp+aword*2] |
169 | |.define CSAVE_2, aword [esp+aword*1] | 169 | |.define CSAVE_2, aword [rsp+aword*1] |
170 | |.define CSAVE_1, aword [esp] //<-- rsp while in interpreter. | 170 | |.define CSAVE_1, aword [rsp] //<-- rsp while in interpreter. |
171 | |//----- 16 byte aligned, ^^^ 32 byte register save area, owned by callee | 171 | |//----- 16 byte aligned, ^^^ 32 byte register save area, owned by callee |
172 | | | 172 | | |
173 | |// TMPQ overlaps TMP1/TMP2. NRESULTS overlaps TMP2 (and TMPQ). | 173 | |// TMPQ overlaps TMP1/TMP2. NRESULTS overlaps TMP2 (and TMPQ). |
174 | |.define TMPQ, qword [esp] | 174 | |.define TMPQ, qword [rsp] |
175 | |.define NRESULTS, TMP2 | 175 | |.define NRESULTS, TMP2 |
176 | | | 176 | | |
177 | |//----------------------------------------------------------------------- | 177 | |//----------------------------------------------------------------------- |
@@ -188,24 +188,24 @@ | |||
188 | |.endmacro | 188 | |.endmacro |
189 | | | 189 | | |
190 | |//----- 16 byte aligned, | 190 | |//----- 16 byte aligned, |
191 | |.define SAVE_RET, aword [esp+aword*9] //<-- rsp entering interpreter. | 191 | |.define SAVE_RET, aword [rsp+aword*9] //<-- rsp entering interpreter. |
192 | |.define SAVE_R4, aword [esp+aword*8] | 192 | |.define SAVE_R4, aword [rsp+aword*8] |
193 | |.define SAVE_R3, aword [esp+aword*7] | 193 | |.define SAVE_R3, aword [rsp+aword*7] |
194 | |.define SAVE_R2, aword [esp+aword*6] | 194 | |.define SAVE_R2, aword [rsp+aword*6] |
195 | |.define SAVE_R1, aword [esp+aword*5] //<-- rsp after register saves. | 195 | |.define SAVE_R1, aword [rsp+aword*5] //<-- rsp after register saves. |
196 | |.define SAVE_CFRAME, aword [esp+aword*4] | 196 | |.define SAVE_CFRAME, aword [rsp+aword*4] |
197 | |.define UNUSED1, aword [esp+aword*3] | 197 | |.define UNUSED1, aword [rsp+aword*3] |
198 | |//----- ^^^ awords above, vvv dwords below | 198 | |//----- ^^^ awords above, vvv dwords below |
199 | |.define SAVE_PC, dword [esp+dword*5] | 199 | |.define SAVE_PC, dword [rsp+dword*5] |
200 | |.define SAVE_L, dword [esp+dword*4] | 200 | |.define SAVE_L, dword [rsp+dword*4] |
201 | |.define SAVE_ERRF, dword [esp+dword*3] | 201 | |.define SAVE_ERRF, dword [rsp+dword*3] |
202 | |.define SAVE_NRES, dword [esp+dword*2] | 202 | |.define SAVE_NRES, dword [rsp+dword*2] |
203 | |.define TMP2, dword [esp+dword*1] | 203 | |.define TMP2, dword [rsp+dword*1] |
204 | |.define TMP1, dword [esp] //<-- rsp while in interpreter. | 204 | |.define TMP1, dword [rsp] //<-- rsp while in interpreter. |
205 | |//----- 16 byte aligned | 205 | |//----- 16 byte aligned |
206 | | | 206 | | |
207 | |// TMPQ overlaps TMP1/TMP2. NRESULTS overlaps TMP2 (and TMPQ). | 207 | |// TMPQ overlaps TMP1/TMP2. NRESULTS overlaps TMP2 (and TMPQ). |
208 | |.define TMPQ, qword [esp] | 208 | |.define TMPQ, qword [rsp] |
209 | |.define NRESULTS, TMP2 | 209 | |.define NRESULTS, TMP2 |
210 | | | 210 | | |
211 | |.endif | 211 | |.endif |
@@ -667,7 +667,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov) | |||
667 | |2: // Entry point for vm_cpcall below (RA = base, RB = L, PC = ftype). | 667 | |2: // Entry point for vm_cpcall below (RA = base, RB = L, PC = ftype). |
668 | | mov KBASE, L:RB->cframe // Add our C frame to cframe chain. | 668 | | mov KBASE, L:RB->cframe // Add our C frame to cframe chain. |
669 | | mov SAVE_CFRAME, KBASE // Caveat: overlaps INARG_BASE! | 669 | | mov SAVE_CFRAME, KBASE // Caveat: overlaps INARG_BASE! |
670 | | mov SAVE_PC, esp // Any value outside of bytecode is ok. | 670 | | mov SAVE_PC, L:RB // Any value outside of bytecode is ok. |
671 | | mov L:RB->cframe, esp | 671 | | mov L:RB->cframe, esp |
672 | | | 672 | | |
673 | | mov DISPATCH, L:RB->glref // Setup pointer to dispatch table. | 673 | | mov DISPATCH, L:RB->glref // Setup pointer to dispatch table. |
@@ -697,7 +697,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov) | |||
697 | | mov RC, INARG_CP_UD | 697 | | mov RC, INARG_CP_UD |
698 | | mov RA, INARG_CP_FUNC | 698 | | mov RA, INARG_CP_FUNC |
699 | | mov BASE, INARG_CP_CALL | 699 | | mov BASE, INARG_CP_CALL |
700 | | mov SAVE_PC, esp // Any value outside of bytecode is ok. | 700 | | mov SAVE_PC, L:RB // Any value outside of bytecode is ok. |
701 | | | 701 | | |
702 | | // Caveat: INARG_P_* and INARG_CP_* overlap! | 702 | | // Caveat: INARG_P_* and INARG_CP_* overlap! |
703 | | mov KBASE, L:RB->stack // Compute -savestack(L, L->top). | 703 | | mov KBASE, L:RB->stack // Compute -savestack(L, L->top). |
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h index 09c77827..0d749cb9 100644 --- a/src/buildvm_x86.h +++ b/src/buildvm_x86.h | |||
@@ -57,11 +57,11 @@ static const unsigned char build_actionlist[12304] = { | |||
57 | 209,139,114,252,252,137,68,36,20,252,247,198,237,15,132,244,17,252,233,244, | 57 | 209,139,114,252,252,137,68,36,20,252,247,198,237,15,132,244,17,252,233,244, |
58 | 18,248,27,85,87,86,83,131,252,236,28,190,237,252,233,244,247,248,28,255,85, | 58 | 18,248,27,85,87,86,83,131,252,236,28,190,237,252,233,244,247,248,28,255,85, |
59 | 87,86,83,131,252,236,28,190,237,248,1,139,108,36,48,139,76,36,52,248,2,139, | 59 | 87,86,83,131,252,236,28,190,237,248,1,139,108,36,48,139,76,36,52,248,2,139, |
60 | 189,233,137,124,36,52,137,100,36,24,137,165,233,139,157,233,129,195,239,248, | 60 | 189,233,137,124,36,52,137,108,36,24,137,165,233,139,157,233,129,195,239,248, |
61 | 3,199,131,233,237,139,149,233,1,206,41,214,139,133,233,41,200,193,232,3,131, | 61 | 3,199,131,233,237,139,149,233,1,206,41,214,139,133,233,41,200,193,232,3,131, |
62 | 192,1,139,105,252,248,129,121,253,252,252,239,15,133,244,29,252,255,165,233, | 62 | 192,1,139,105,252,248,129,121,253,252,252,239,15,133,244,29,252,255,165,233, |
63 | 248,30,85,87,86,83,131,252,236,28,139,108,36,48,139,68,36,60,139,76,36,56, | 63 | 248,30,85,87,86,83,131,252,236,28,139,108,36,48,139,68,36,60,139,76,36,56, |
64 | 139,84,36,52,137,100,36,24,139,189,233,43,189,233,199,68,36,60,0,0,0,0,137, | 64 | 139,84,36,52,137,108,36,24,139,189,233,43,189,233,199,68,36,60,0,0,0,0,137, |
65 | 124,36,56,137,68,36,8,137,76,36,4,137,44,36,139,189,233,137,124,36,52,137, | 65 | 124,36,56,137,68,36,8,137,76,36,4,137,44,36,139,189,233,137,124,36,52,137, |
66 | 165,233,252,255,210,133,192,15,132,244,21,255,137,193,190,237,252,233,244, | 66 | 165,233,252,255,210,133,192,15,132,244,21,255,137,193,190,237,252,233,244, |
67 | 2,248,25,1,209,131,230,252,248,137,213,41,252,242,199,68,193,252,252,237, | 67 | 2,248,25,1,209,131,230,252,248,137,213,41,252,242,199,68,193,252,252,237, |