Index: src/ia32/macro-assembler-ia32.cc |
diff --git a/src/ia32/macro-assembler-ia32.cc b/src/ia32/macro-assembler-ia32.cc |
index 64b5683446038137855436a37a9b172809d19b23..16b8bd79fb9166b59167a5a50fadd358bef5d77c 100644 |
--- a/src/ia32/macro-assembler-ia32.cc |
+++ b/src/ia32/macro-assembler-ia32.cc |
@@ -253,8 +253,8 @@ void MacroAssembler::X87TOSToI(Register result_reg, |
Label::Distance dst) { |
Label done; |
sub(esp, Immediate(kPointerSize)); |
- fist_s(MemOperand(esp, 0)); |
fld(0); |
+ fist_s(MemOperand(esp, 0)); |
fild_s(MemOperand(esp, 0)); |
pop(result_reg); |
FCmp(); |
@@ -453,6 +453,7 @@ static double kUint32Bias = |
void MacroAssembler::LoadUint32(XMMRegister dst, |
Register src, |
XMMRegister scratch) { |
+ ASSERT(!Serializer::enabled()); |
Label done; |
cmp(src, Immediate(0)); |
movdbl(scratch, |
@@ -464,6 +465,20 @@ void MacroAssembler::LoadUint32(XMMRegister dst, |
} |
+void MacroAssembler::LoadUint32NoSSE2(Register src) { |
+ ASSERT(!Serializer::enabled()); |
+ Label done; |
+ push(src); |
+ fild_s(Operand(esp, 0)); |
+ cmp(src, Immediate(0)); |
+ j(not_sign, &done, Label::kNear); |
+ fld_d(Operand(reinterpret_cast<int32_t>(&kUint32Bias), RelocInfo::NONE32)); |
+ faddp(1); |
+ bind(&done); |
+ add(esp, Immediate(kPointerSize)); |
+} |
+ |
+ |
void MacroAssembler::RecordWriteArray(Register object, |
Register value, |
Register index, |