nanojit/Nativei386.cpp: asm_load64 for i386 wasn't properly copying the loaded value into the stack frames in all cases for non-sse2 path. (r=edwsmith, bug=534613)

--HG--
extra : convert_revision : 107017b4c232e89e4ecb11ef69c11747644a6dc3
This commit is contained in:
Steven Johnson 2009-12-14 10:58:24 -08:00
Родитель 1189e52a80
Коммит dbcb6b48e3
1 изменённых файлов: 6 добавлений и 1 удалений

Просмотреть файл

@ -617,11 +617,16 @@ namespace nanojit
{ {
NanoAssert(rmask(rr)&x87Regs); NanoAssert(rmask(rr)&x87Regs);
_allocator.retire(rr); _allocator.retire(rr);
// Be sure to shadow the value onto our local area if there's space for it,
// but don't pop the FP stack, we expect the register to stay valid.
if (dr)
FSTQ(0,dr, FP);
FLD32(db, rb); FLD32(db, rb);
} }
else else
{ {
// need to use fpu to expand 32->64 // We need to use fpu to expand 32->64, can't use asm_mmq...
// just load-and-store-with-pop.
NanoAssert(dr != 0); NanoAssert(dr != 0);
FSTPQ(dr, FP); FSTPQ(dr, FP);
FLD32(db, rb); FLD32(db, rb);