aboutsummaryrefslogtreecommitdiff
path: root/src/buildvm_x86.dasc
diff options
context:
space:
mode:
authorMike Pall <mike>2010-03-15 19:00:16 +0100
committerMike Pall <mike>2010-03-15 19:00:16 +0100
commit1fea5cb822a4da746005e0cec35fc2fe2ed5880f (patch)
treef94b250dd73b2c990cc2e92d2515202aa7a42844 /src/buildvm_x86.dasc
parent871941a8404c4665e8c46cc1bb64040955a046f8 (diff)
downloadluajit-1fea5cb822a4da746005e0cec35fc2fe2ed5880f.tar.gz
luajit-1fea5cb822a4da746005e0cec35fc2fe2ed5880f.tar.bz2
luajit-1fea5cb822a4da746005e0cec35fc2fe2ed5880f.zip
Fix TSETM on x64/SSE builds when table is resized.
Diffstat (limited to 'src/buildvm_x86.dasc')
-rw-r--r--src/buildvm_x86.dasc10
1 files changed, 2 insertions, 8 deletions
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc
index 4a2194a5..23a98c21 100644
--- a/src/buildvm_x86.dasc
+++ b/src/buildvm_x86.dasc
@@ -4284,11 +4284,12 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
4284 | ins_AD // RA = base (table at base-1), RD = num const (start index) 4284 | ins_AD // RA = base (table at base-1), RD = num const (start index)
4285 | mov TMP1, KBASE // Need one more free register. 4285 | mov TMP1, KBASE // Need one more free register.
4286 if (sse) { 4286 if (sse) {
4287 | movsd xmm0, qword [KBASE+RD*8] 4287 | cvtsd2si KBASE, qword [KBASE+RD*8]
4288 } else { 4288 } else {
4289 |.if not X64 4289 |.if not X64
4290 | fld qword [KBASE+RD*8] 4290 | fld qword [KBASE+RD*8]
4291 | fistp ARG4 // Const is guaranteed to be an int. 4291 | fistp ARG4 // Const is guaranteed to be an int.
4292 | mov KBASE, ARG4
4292 |.endif 4293 |.endif
4293 } 4294 }
4294 |1: 4295 |1:
@@ -4298,13 +4299,6 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
4298 | jnz >7 4299 | jnz >7
4299 |2: 4300 |2:
4300 | mov RD, MULTRES 4301 | mov RD, MULTRES
4301 if (sse) {
4302 | cvtsd2si KBASE, xmm0 // Const is guaranteed to be an int.
4303 } else {
4304 |.if not X64
4305 | mov KBASE, ARG4
4306 |.endif
4307 }
4308 | sub RD, 1 4302 | sub RD, 1
4309 | jz >4 // Nothing to copy? 4303 | jz >4 // Nothing to copy?
4310 | add RD, KBASE // Compute needed size. 4304 | add RD, KBASE // Compute needed size.