| Index: src/builtins.cc
|
| diff --git a/src/builtins.cc b/src/builtins.cc
|
| index 6617fe1ad9738b80c72912c9984504a4d01ff3ce..1ef5ab6a437accf39ad18e6fb845546a3761b28f 100644
|
| --- a/src/builtins.cc
|
| +++ b/src/builtins.cc
|
| @@ -673,14 +673,17 @@ BUILTIN(ArrayPop) {
|
|
|
| ElementsAccessor* accessor = array->GetElementsAccessor();
|
| int new_length = len - 1;
|
| - Object* result;
|
| - MaybeObject* maybe_result = accessor->Get(array, array, new_length);
|
| - if (!maybe_result->To(&result)) return maybe_result;
|
| + MaybeObject* maybe_result;
|
| + if (accessor->HasElement(array, array, new_length, elms_obj)) {
|
| + maybe_result = accessor->Get(array, array, new_length, elms_obj);
|
| + } else {
|
| + maybe_result = array->GetPrototype()->GetElement(len - 1);
|
| + }
|
| + if (maybe_result->IsFailure()) return maybe_result;
|
| MaybeObject* maybe_failure =
|
| accessor->SetLength(array, Smi::FromInt(new_length));
|
| if (maybe_failure->IsFailure()) return maybe_failure;
|
| - if (!result->IsTheHole()) return result;
|
| - return array->GetPrototype()->GetElement(len - 1);
|
| + return maybe_result;
|
| }
|
|
|
|
|
|
|