Reviewers: Erik Corry,

Message:
Erik,

may you have a look?

Description:
Use Heap::CreateFillerArrayAt to create a filler instead of copied code.

Please review this at http://codereview.chromium.org/1770001/show

Affected files:
  M src/builtins.cc
  M src/heap.cc


Index: src/builtins.cc
diff --git a/src/builtins.cc b/src/builtins.cc
index 767820acb8cccba53a88ea01fe05ef90eed3a5c0..9850f5583830664fb52330b712df461fb29154bd 100644
--- a/src/builtins.cc
+++ b/src/builtins.cc
@@ -348,15 +348,7 @@ static FixedArray* LeftTrimFixedArray(FixedArray* elms, int to_trim) {
   // Technically in new space this write might be omitted (except for
   // debug mode which iterates through the heap), but to play safer
   // we still do it.
-  if (to_trim == 1) {
-    former_start[0] = Heap::raw_unchecked_one_pointer_filler_map();
-  } else if (to_trim == 2) {
-    former_start[0] = Heap::raw_unchecked_two_pointer_filler_map();
-  } else {
-    former_start[0] = Heap::raw_unchecked_byte_array_map();
-    ByteArray* as_byte_array = reinterpret_cast<ByteArray*>(elms);
- as_byte_array->set_length(ByteArray::LengthFor(to_trim * kPointerSize));
-  }
+  Heap::CreateFillerObjectAt(elms->address(), to_trim * kPointerSize);

   former_start[to_trim] = Heap::fixed_array_map();
   former_start[to_trim + 1] = reinterpret_cast<Object*>(len - to_trim);
Index: src/heap.cc
diff --git a/src/heap.cc b/src/heap.cc
index eb478846a3957d51c72b6264edf870f817d02189..0cd17917a6af909a23b006f83906820f5bfac787 100644
--- a/src/heap.cc
+++ b/src/heap.cc
@@ -2188,9 +2188,11 @@ void Heap::CreateFillerObjectAt(Address addr, int size) {
   if (size == 0) return;
   HeapObject* filler = HeapObject::FromAddress(addr);
   if (size == kPointerSize) {
-    filler->set_map(Heap::one_pointer_filler_map());
+    filler->set_map(one_pointer_filler_map());
+  } else if (size == 2 * kPointerSize) {
+    filler->set_map(two_pointer_filler_map());
   } else {
-    filler->set_map(Heap::byte_array_map());
+    filler->set_map(byte_array_map());
     ByteArray::cast(filler)->set_length(ByteArray::LengthFor(size));
   }
 }


--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to