| Index: src/keys.cc
|
| diff --git a/src/keys.cc b/src/keys.cc
|
| index fa1a340b615f5e52888ac4330df4d427763b2d42..81e2696cda6ac749283cba4254a037ba2dc38e50 100644
|
| --- a/src/keys.cc
|
| +++ b/src/keys.cc
|
| @@ -35,10 +35,9 @@ static bool ContainsOnlyValidKeys(Handle<FixedArray> array) {
|
| // static
|
| MaybeHandle<FixedArray> KeyAccumulator::GetKeys(
|
| Handle<JSReceiver> object, KeyCollectionMode mode, PropertyFilter filter,
|
| - GetKeysConversion keys_conversion, bool filter_proxy_keys, bool is_for_in) {
|
| + GetKeysConversion keys_conversion, bool is_for_in) {
|
| Isolate* isolate = object->GetIsolate();
|
| FastKeyAccumulator accumulator(isolate, object, mode, filter);
|
| - accumulator.set_filter_proxy_keys(filter_proxy_keys);
|
| accumulator.set_is_for_in(is_for_in);
|
| return accumulator.GetKeys(keys_conversion);
|
| }
|
| @@ -135,16 +134,16 @@ MaybeHandle<FixedArray> FilterProxyKeys(KeyAccumulator* accumulator,
|
| // Returns "nothing" in case of exception, "true" on success.
|
| Maybe<bool> KeyAccumulator::AddKeysFromJSProxy(Handle<JSProxy> proxy,
|
| Handle<FixedArray> keys) {
|
| - if (filter_proxy_keys_) {
|
| - DCHECK(!is_for_in_);
|
| + // Postpone the enumerable check for for-in to the ForInFilter step.
|
| + if (!is_for_in_) {
|
| ASSIGN_RETURN_ON_EXCEPTION_VALUE(
|
| isolate_, keys, FilterProxyKeys(this, proxy, keys, filter_),
|
| Nothing<bool>());
|
| - }
|
| - if (mode_ == KeyCollectionMode::kOwnOnly && !is_for_in_) {
|
| - // If we collect only the keys from a JSProxy do not sort or deduplicate it.
|
| - keys_ = keys;
|
| - return Just(true);
|
| + if (mode_ == KeyCollectionMode::kOwnOnly) {
|
| + // If we collect only the keys from a JSProxy do not sort or deduplicate.
|
| + keys_ = keys;
|
| + return Just(true);
|
| + }
|
| }
|
| AddKeys(keys, is_for_in_ ? CONVERT_TO_ARRAY_INDEX : DO_NOT_CONVERT);
|
| return Just(true);
|
| @@ -444,7 +443,6 @@ MaybeHandle<FixedArray> FastKeyAccumulator::GetKeysFast(
|
| MaybeHandle<FixedArray> FastKeyAccumulator::GetKeysSlow(
|
| GetKeysConversion keys_conversion) {
|
| KeyAccumulator accumulator(isolate_, mode_, filter_);
|
| - accumulator.set_filter_proxy_keys(filter_proxy_keys_);
|
| accumulator.set_is_for_in(is_for_in_);
|
| accumulator.set_last_non_empty_prototype(last_non_empty_prototype_);
|
|
|
| @@ -860,13 +858,9 @@ Maybe<bool> KeyAccumulator::CollectOwnJSProxyTargetKeys(
|
| ASSIGN_RETURN_ON_EXCEPTION_VALUE(
|
| isolate_, keys,
|
| KeyAccumulator::GetKeys(target, KeyCollectionMode::kOwnOnly, filter_,
|
| - GetKeysConversion::kConvertToString,
|
| - filter_proxy_keys_, is_for_in_),
|
| + GetKeysConversion::kConvertToString, is_for_in_),
|
| Nothing<bool>());
|
| - bool prev_filter_proxy_keys_ = filter_proxy_keys_;
|
| - filter_proxy_keys_ = false;
|
| Maybe<bool> result = AddKeysFromJSProxy(proxy, keys);
|
| - filter_proxy_keys_ = prev_filter_proxy_keys_;
|
| return result;
|
| }
|
|
|
|
|