Index: src/x64/macro-assembler-x64.cc |
diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc |
index 2e554b166b902a18bba4c5da45e3dc11236d87f6..5387fc519de0e8bdc9e3048fd5544083875cab94 100644 |
--- a/src/x64/macro-assembler-x64.cc |
+++ b/src/x64/macro-assembler-x64.cc |
@@ -2500,6 +2500,12 @@ MacroAssembler::kSafepointPushRegisterIndices[Register::kNumRegisters] = { |
}; |
+void MacroAssembler::StoreToSafepointRegisterSlot(Register dst, |
+ const Immediate& imm) { |
+ movq(SafepointRegisterSlot(dst), imm); |
+} |
+ |
+ |
void MacroAssembler::StoreToSafepointRegisterSlot(Register dst, Register src) { |
movq(SafepointRegisterSlot(dst), src); |
} |
@@ -2858,6 +2864,26 @@ void MacroAssembler::ClampDoubleToUint8(XMMRegister input_reg, |
} |
+static double kUint32Bias = |
+ static_cast<double>(static_cast<uint32_t>(0xFFFFFFFF)) + 1; |
+ |
+ |
+void MacroAssembler::LoadUint32(XMMRegister dst, |
+ Register src, |
+ XMMRegister scratch) { |
+ Label done; |
+ cmpl(src, Immediate(0)); |
+ movq(kScratchRegister, |
+ reinterpret_cast<int64_t>(&kUint32Bias), |
+ RelocInfo::NONE); |
+ movsd(scratch, Operand(kScratchRegister, 0)); |
+ cvtlsi2sd(dst, src); |
+ j(not_sign, &done, Label::kNear); |
+ addsd(dst, scratch); |
+ bind(&done); |
+} |
+ |
+ |
void MacroAssembler::LoadInstanceDescriptors(Register map, |
Register descriptors) { |
Register temp = descriptors; |