Index: src/ia32/macro-assembler-ia32.cc |
diff --git a/src/ia32/macro-assembler-ia32.cc b/src/ia32/macro-assembler-ia32.cc |
index 07bc737c14cb667a8f9254119e8e22915b22ae65..5f9bd78ff00eb0b888d0dc682a244ab721f4afb7 100644 |
--- a/src/ia32/macro-assembler-ia32.cc |
+++ b/src/ia32/macro-assembler-ia32.cc |
@@ -1683,14 +1683,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)); |
} |