Fix regress-crbug-412203.js

R=ulan@chromium.org

Review URL: https://codereview.chromium.org/563733002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23869 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 90af365a
...@@ -10334,8 +10334,10 @@ static void CollectElementIndices(Handle<JSObject> object, ...@@ -10334,8 +10334,10 @@ static void CollectElementIndices(Handle<JSObject> object,
break; break;
} }
case SLOPPY_ARGUMENTS_ELEMENTS: { case SLOPPY_ARGUMENTS_ELEMENTS: {
uint32_t length = static_cast<uint32_t>( MaybeHandle<Object> length_obj =
Handle<JSArray>::cast(object)->length()->Number()); Object::GetProperty(object, isolate->factory()->length_string());
double length_num = length_obj.ToHandleChecked()->Number();
uint32_t length = static_cast<uint32_t>(DoubleToInt32(length_num));
ElementsAccessor* accessor = object->GetElementsAccessor(); ElementsAccessor* accessor = object->GetElementsAccessor();
for (uint32_t i = 0; i < length; i++) { for (uint32_t i = 0; i < length; i++) {
if (accessor->HasElement(object, object, i)) { if (accessor->HasElement(object, object, i)) {
......
...@@ -25,7 +25,12 @@ function foo(x, y) { ...@@ -25,7 +25,12 @@ function foo(x, y) {
a.__proto__ = arguments; a.__proto__ = arguments;
var c = [].concat(a); var c = [].concat(a);
assertEquals(2, c[0]); for (var i = 0; i < arguments.length; i++) {
assertEquals(undefined, c[1]); assertEquals(i + 2, c[i]);
}
assertEquals(undefined, c[arguments.length]);
assertEquals(undefined, c[arguments.length + 1]);
} }
foo(2); foo(2);
foo(2, 3);
foo(2, 3, 4);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment