Revision: 22410
Author:   [email protected]
Date:     Tue Jul 15 16:57:04 2014 UTC
Log: MIPS64: Reland r22082 "Replace HeapNumber as doublebox with an explicit MutableHeapNumber.

Port r22129 (676bb14).

TEST=
BUG=
[email protected], [email protected]

Review URL: https://codereview.chromium.org/395803002
http://code.google.com/p/v8/source/detail?r=22410

Modified:
 /branches/bleeding_edge/src/mips64/macro-assembler-mips64.cc
 /branches/bleeding_edge/src/mips64/macro-assembler-mips64.h
 /branches/bleeding_edge/src/mips64/stub-cache-mips64.cc

=======================================
--- /branches/bleeding_edge/src/mips64/macro-assembler-mips64.cc Tue Jul 15 08:38:16 2014 UTC +++ /branches/bleeding_edge/src/mips64/macro-assembler-mips64.cc Tue Jul 15 16:57:04 2014 UTC
@@ -3385,14 +3385,19 @@
                                         Register scratch2,
                                         Register heap_number_map,
                                         Label* need_gc,
-                                        TaggingMode tagging_mode) {
+                                        TaggingMode tagging_mode,
+                                        MutableMode mode) {
// Allocate an object in the heap for the heap number and tag it as a heap
   // object.
   Allocate(HeapNumber::kSize, result, scratch1, scratch2, need_gc,
            tagging_mode == TAG_RESULT ? TAG_OBJECT : NO_ALLOCATION_FLAGS);

+  Heap::RootListIndex map_index = mode == MUTABLE
+      ? Heap::kMutableHeapNumberMapRootIndex
+      : Heap::kHeapNumberMapRootIndex;
+  AssertIsRoot(heap_number_map, map_index);
+
   // Store heap number map in the allocated object.
-  AssertIsRoot(heap_number_map, Heap::kHeapNumberMapRootIndex);
   if (tagging_mode == TAG_RESULT) {
     sd(heap_number_map, FieldMemOperand(result, HeapObject::kMapOffset));
   } else {
=======================================
--- /branches/bleeding_edge/src/mips64/macro-assembler-mips64.h Tue Jul 15 08:38:16 2014 UTC +++ /branches/bleeding_edge/src/mips64/macro-assembler-mips64.h Tue Jul 15 16:57:04 2014 UTC
@@ -574,7 +574,9 @@
                           Register scratch2,
                           Register heap_number_map,
                           Label* gc_required,
-                          TaggingMode tagging_mode = TAG_RESULT);
+                          TaggingMode tagging_mode = TAG_RESULT,
+                          MutableMode mode = IMMUTABLE);
+
   void AllocateHeapNumberWithValue(Register result,
                                    FPURegister value,
                                    Register scratch1,
=======================================
--- /branches/bleeding_edge/src/mips64/stub-cache-mips64.cc Tue Jul 15 08:40:26 2014 UTC +++ /branches/bleeding_edge/src/mips64/stub-cache-mips64.cc Tue Jul 15 16:57:04 2014 UTC
@@ -414,8 +414,9 @@
     }
   } else if (representation.IsDouble()) {
     Label do_store, heap_number;
-    __ LoadRoot(scratch3, Heap::kHeapNumberMapRootIndex);
-    __ AllocateHeapNumber(storage_reg, scratch1, scratch2, scratch3, slow);
+    __ LoadRoot(scratch3, Heap::kMutableHeapNumberMapRootIndex);
+    __ AllocateHeapNumber(storage_reg, scratch1, scratch2, scratch3, slow,
+                          TAG_RESULT, MUTABLE);

     __ JumpIfNotSmi(value_reg, &heap_number);
     __ SmiUntag(scratch1, value_reg);

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to