| Index: src/keys.h
|
| diff --git a/src/keys.h b/src/keys.h
|
| index ecd3d97c550cf5a8aa80f2aa312c18d1001115ca..045fe97536f1d58caafcb35d6ec89289ea8dce49 100644
|
| --- a/src/keys.h
|
| +++ b/src/keys.h
|
| @@ -83,8 +83,8 @@ class KeyAccumulator final BASE_EMBEDDED {
|
| }
|
| // Shadowing keys are used to filter keys. This happens when non-enumerable
|
| // keys appear again on the prototype chain.
|
| - void AddShadowKey(Object* key);
|
| - void AddShadowKey(Handle<Object> key);
|
| + void AddShadowingKey(Object* key);
|
| + void AddShadowingKey(Handle<Object> key);
|
|
|
| private:
|
| Maybe<bool> CollectOwnKeys(Handle<JSReceiver> receiver,
|
| @@ -96,6 +96,7 @@ class KeyAccumulator final BASE_EMBEDDED {
|
| Maybe<bool> AddKeysFromJSProxy(Handle<JSProxy> proxy,
|
| Handle<FixedArray> keys);
|
| bool IsShadowed(Handle<Object> key);
|
| + bool HasShadowingKeys();
|
| Handle<OrderedHashSet> keys() { return Handle<OrderedHashSet>::cast(keys_); }
|
|
|
| Isolate* isolate_;
|
| @@ -104,12 +105,15 @@ class KeyAccumulator final BASE_EMBEDDED {
|
| // result list, a FixedArray containing all collected keys.
|
| Handle<FixedArray> keys_;
|
| Handle<JSReceiver> last_non_empty_prototype_;
|
| - Handle<ObjectHashSet> shadowed_keys_;
|
| + Handle<ObjectHashSet> shadowing_keys_;
|
| KeyCollectionMode mode_;
|
| PropertyFilter filter_;
|
| bool filter_proxy_keys_ = true;
|
| bool is_for_in_ = false;
|
| bool skip_indices_ = false;
|
| + // For all the keys on the first receiver adding a shadowing key we can skip
|
| + // the shadow check.
|
| + bool skip_shadow_check_ = true;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(KeyAccumulator);
|
| };
|
|
|