diff options
author | Mike Pall <mike> | 2010-03-15 19:00:16 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2010-03-15 19:00:16 +0100 |
commit | 1fea5cb822a4da746005e0cec35fc2fe2ed5880f (patch) | |
tree | f94b250dd73b2c990cc2e92d2515202aa7a42844 /src/buildvm_x86.dasc | |
parent | 871941a8404c4665e8c46cc1bb64040955a046f8 (diff) | |
download | luajit-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.dasc | 10 |
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. |