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); |
} |