зеркало из https://github.com/mozilla/pjs.git
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:
Родитель
1189e52a80
Коммит
dbcb6b48e3
|
@ -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);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче