Reviewers: danno,

Message:
PTAL

Description:
Fix shifting from holey arrays.


Please review this at https://chromiumcodereview.appspot.com/11417007/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files:
  M src/builtins.cc


Index: src/builtins.cc
diff --git a/src/builtins.cc b/src/builtins.cc
index 6617fe1ad9738b80c72912c9984504a4d01ff3ce..77c9a1947fd2e46b5e422ca48adbc6bd2fea6704 100644
--- a/src/builtins.cc
+++ b/src/builtins.cc
@@ -709,8 +709,12 @@ BUILTIN(ArrayShift) {
   // Get first element
   ElementsAccessor* accessor = array->GetElementsAccessor();
   Object* first;
-  MaybeObject* maybe_first = accessor->Get(receiver, array, 0, elms_obj);
-  if (!maybe_first->To(&first)) return maybe_first;
+  if (accessor->HasElement(receiver, array, 0, elms_obj)) {
+    MaybeObject* maybe_first = accessor->Get(receiver, array, 0, elms_obj);
+    if (!maybe_first->To(&first)) return maybe_first;
+  } else {
+    first = heap->undefined_value();
+  }

   if (!heap->lo_space()->Contains(elms_obj)) {
     array->set_elements(LeftTrimFixedArray(heap, elms_obj, 1));


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

Reply via email to