| Index: src/handles.cc
|
| diff --git a/src/handles.cc b/src/handles.cc
|
| index fae006a4d0049ec39198c29615b2198d3e10f2ef..7a473ae6e626b718ec74ad143941aa0269b70cf0 100644
|
| --- a/src/handles.cc
|
| +++ b/src/handles.cc
|
| @@ -527,7 +527,8 @@ v8::Handle<v8::Array> GetKeysForIndexedInterceptor(Handle<JSObject> receiver,
|
| }
|
|
|
|
|
| -Handle<FixedArray> GetKeysInFixedArrayFor(Handle<JSObject> object) {
|
| +Handle<FixedArray> GetKeysInFixedArrayFor(Handle<JSObject> object,
|
| + KeyCollectionType type) {
|
| Handle<FixedArray> content = Factory::empty_fixed_array();
|
|
|
| JSObject* arguments_boilerplate =
|
| @@ -575,6 +576,11 @@ Handle<FixedArray> GetKeysInFixedArrayFor(Handle<JSObject> object) {
|
| if (!result.IsEmpty())
|
| content = AddKeysFromJSArray(content, v8::Utils::OpenHandle(*result));
|
| }
|
| +
|
| + // If we only want local properties we bail out after the first
|
| + // iteration.
|
| + if (type == LOCAL_ONLY)
|
| + break;
|
| }
|
| }
|
| return content;
|
| @@ -583,7 +589,8 @@ Handle<FixedArray> GetKeysInFixedArrayFor(Handle<JSObject> object) {
|
|
|
| Handle<JSArray> GetKeysFor(Handle<JSObject> object) {
|
| Counters::for_in.Increment();
|
| - Handle<FixedArray> elements = GetKeysInFixedArrayFor(object);
|
| + Handle<FixedArray> elements = GetKeysInFixedArrayFor(object,
|
| + INCLUDE_PROTOS);
|
| return Factory::NewJSArrayWithElements(elements);
|
| }
|
|
|
|
|