Index: src/ia32/macro-assembler-ia32.cc |
diff --git a/src/ia32/macro-assembler-ia32.cc b/src/ia32/macro-assembler-ia32.cc |
index 7847b3b398d5a749619c684c0fea00494f5ee362..12750e3f1b860c34a7f31e2e20b7601316b4f8ff 100644 |
--- a/src/ia32/macro-assembler-ia32.cc |
+++ b/src/ia32/macro-assembler-ia32.cc |
@@ -1821,14 +1821,18 @@ void MacroAssembler::UndoAllocationInNewSpace(Register object) { |
void MacroAssembler::AllocateHeapNumber(Register result, |
Register scratch1, |
Register scratch2, |
- Label* gc_required) { |
+ Label* gc_required, |
+ MutableMode mode) { |
// Allocate heap number in new space. |
Allocate(HeapNumber::kSize, result, scratch1, scratch2, gc_required, |
TAG_OBJECT); |
+ Handle<Map> map = mode == MUTABLE |
+ ? isolate()->factory()->mutable_heap_number_map() |
+ : isolate()->factory()->heap_number_map(); |
+ |
// Set the map. |
- mov(FieldOperand(result, HeapObject::kMapOffset), |
- Immediate(isolate()->factory()->heap_number_map())); |
+ mov(FieldOperand(result, HeapObject::kMapOffset), Immediate(map)); |
} |