Chromium Code Reviews| Index: src/keys.h |
| diff --git a/src/keys.h b/src/keys.h |
| index 647c5e211121720875ed1a54e973f054a803174b..8bb0dc3f061f36098796c8858bcf0f1b45600406 100644 |
| --- a/src/keys.h |
| +++ b/src/keys.h |
| @@ -50,8 +50,8 @@ class KeyAccumulator final BASE_EMBEDDED { |
| Maybe<bool> CollectOwnPropertyNames(Handle<JSReceiver> receiver, |
| Handle<JSObject> object); |
| - static Handle<FixedArray> GetEnumPropertyKeys(Isolate* isolate, |
| - Handle<JSObject> object); |
| + static Handle<FixedArray> GetOwnEnumPropertyKeys(Isolate* isolate, |
| + Handle<JSObject> object); |
| void AddKey(Object* key, AddKeyConversion convert = DO_NOT_CONVERT); |
| void AddKey(Handle<Object> key, AddKeyConversion convert = DO_NOT_CONVERT); |
| @@ -62,12 +62,15 @@ class KeyAccumulator final BASE_EMBEDDED { |
| // |levelLengths_| and adding a new list to |elements_|. |
| Isolate* isolate() { return isolate_; } |
| PropertyFilter filter() { return filter_; } |
| + KeyCollectionMode mode() { return mode_; } |
| void set_filter_proxy_keys(bool filter) { filter_proxy_keys_ = filter; } |
| void set_is_for_in(bool value) { is_for_in_ = value; } |
| void set_skip_indices(bool value) { skip_indices_ = value; } |
| void set_last_non_empty_prototype(Handle<JSReceiver> object) { |
| last_non_empty_prototype_ = object; |
| } |
| + void AddShadowKey(Object* key); |
|
adamk
2016/06/27 19:19:33
Please add comments for these methods, outside of
Camillo Bruni
2016/06/29 17:27:56
added more descriptive comments.
|
| + void AddShadowKey(Handle<Object> key); |
| private: |
| Maybe<bool> CollectOwnKeys(Handle<JSReceiver> receiver, |
| @@ -76,10 +79,9 @@ class KeyAccumulator final BASE_EMBEDDED { |
| Handle<JSProxy> proxy); |
| Maybe<bool> CollectOwnJSProxyTargetKeys(Handle<JSProxy> proxy, |
| Handle<JSReceiver> target); |
| - |
| Maybe<bool> AddKeysFromJSProxy(Handle<JSProxy> proxy, |
| Handle<FixedArray> keys); |
| - |
| + bool IsShadowed(Handle<Object> key); |
| Handle<OrderedHashSet> keys() { return Handle<OrderedHashSet>::cast(keys_); } |
| Isolate* isolate_; |
| @@ -87,6 +89,7 @@ class KeyAccumulator final BASE_EMBEDDED { |
| // keys a Handle<FixedArray>. |
| Handle<FixedArray> keys_; |
| Handle<JSReceiver> last_non_empty_prototype_; |
| + Handle<ObjectHashSet> shadowed_keys_; |
| KeyCollectionMode mode_; |
| PropertyFilter filter_; |
| bool filter_proxy_keys_ = true; |