Index: src/x64/assembler-x64.cc |
diff --git a/src/x64/assembler-x64.cc b/src/x64/assembler-x64.cc |
index b2330b3320b36cafbc2af670e853ea52d6489094..283caf2c832703c5f84a86299edce4f1b715d2a9 100644 |
--- a/src/x64/assembler-x64.cc |
+++ b/src/x64/assembler-x64.cc |
@@ -309,11 +309,13 @@ Assembler::Assembler(IsolateData isolate_data, void* buffer, int buffer_size) |
reloc_info_writer.Reposition(buffer_ + buffer_size_, pc_); |
} |
- |
-void Assembler::GetCode(CodeDesc* desc) { |
- // Finalize code (at this point overflow() may be true, but the gap ensures |
- // that we are still not overlapping instructions and relocation info). |
+void Assembler::GetCode(Isolate* isolate, CodeDesc* desc) { |
+ // At this point overflow() may be true, but the gap ensures |
+ // that we are still not overlapping instructions and relocation info. |
DCHECK(pc_ <= reloc_info_writer.pos()); // No overlap. |
+ |
+ AllocateRequestedHeapNumbers(isolate); |
+ |
// Set up code descriptor. |
desc->buffer = buffer_; |
desc->buffer_size = buffer_size_; |
@@ -1538,6 +1540,14 @@ void Assembler::movp(Register dst, void* value, RelocInfo::Mode rmode) { |
emitp(value, rmode); |
} |
+void Assembler::movp_heap_number(Register dst, double value) { |
+ EnsureSpace ensure_space(this); |
+ emit_rex(dst, kPointerSize); |
+ emit(0xB8 | dst.low_bits()); |
+ RequestHeapNumber(value); |
+ emitp(nullptr, RelocInfo::EMBEDDED_OBJECT); |
+} |
+ |
void Assembler::movq(Register dst, int64_t value, RelocInfo::Mode rmode) { |
EnsureSpace ensure_space(this); |
emit_rex_64(dst); |