OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/objects.h" | 5 #include "src/objects.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 #include <iomanip> | 8 #include <iomanip> |
9 #include <sstream> | 9 #include <sstream> |
10 | 10 |
(...skipping 8296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8307 Handle<FixedArray> values_or_entries; | 8307 Handle<FixedArray> values_or_entries; |
8308 if (filter == ENUMERABLE_STRINGS) { | 8308 if (filter == ENUMERABLE_STRINGS) { |
8309 Maybe<bool> fast_values_or_entries = FastGetOwnValuesOrEntries( | 8309 Maybe<bool> fast_values_or_entries = FastGetOwnValuesOrEntries( |
8310 isolate, object, get_entries, &values_or_entries); | 8310 isolate, object, get_entries, &values_or_entries); |
8311 if (fast_values_or_entries.IsNothing()) return MaybeHandle<FixedArray>(); | 8311 if (fast_values_or_entries.IsNothing()) return MaybeHandle<FixedArray>(); |
8312 if (fast_values_or_entries.FromJust()) return values_or_entries; | 8312 if (fast_values_or_entries.FromJust()) return values_or_entries; |
8313 } | 8313 } |
8314 | 8314 |
8315 PropertyFilter key_filter = | 8315 PropertyFilter key_filter = |
8316 static_cast<PropertyFilter>(filter & ~ONLY_ENUMERABLE); | 8316 static_cast<PropertyFilter>(filter & ~ONLY_ENUMERABLE); |
8317 Handle<FixedArray> keys; | 8317 KeyAccumulator accumulator(isolate, OWN_ONLY, key_filter); |
8318 ASSIGN_RETURN_ON_EXCEPTION_VALUE( | 8318 MAYBE_RETURN(accumulator.CollectKeys(object, object), |
8319 isolate, keys, | 8319 MaybeHandle<FixedArray>()); |
8320 KeyAccumulator::GetKeys(object, KeyCollectionMode::kOwnOnly, key_filter, | 8320 Handle<FixedArray> keys = accumulator.GetKeys(CONVERT_TO_STRING); |
8321 GetKeysConversion::kConvertToString), | |
8322 MaybeHandle<FixedArray>()); | |
8323 | 8321 |
8324 values_or_entries = isolate->factory()->NewFixedArray(keys->length()); | 8322 values_or_entries = isolate->factory()->NewFixedArray(keys->length()); |
8325 int length = 0; | 8323 int length = 0; |
8326 | 8324 |
8327 for (int i = 0; i < keys->length(); ++i) { | 8325 for (int i = 0; i < keys->length(); ++i) { |
8328 Handle<Name> key = Handle<Name>::cast(handle(keys->get(i), isolate)); | 8326 Handle<Name> key = Handle<Name>::cast(handle(keys->get(i), isolate)); |
8329 | 8327 |
8330 if (filter & ONLY_ENUMERABLE) { | 8328 if (filter & ONLY_ENUMERABLE) { |
8331 PropertyDescriptor descriptor; | 8329 PropertyDescriptor descriptor; |
8332 Maybe<bool> did_get_descriptor = JSReceiver::GetOwnPropertyDescriptor( | 8330 Maybe<bool> did_get_descriptor = JSReceiver::GetOwnPropertyDescriptor( |
(...skipping 10097 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
18430 if (cell->value() != *new_value) { | 18428 if (cell->value() != *new_value) { |
18431 cell->set_value(*new_value); | 18429 cell->set_value(*new_value); |
18432 Isolate* isolate = cell->GetIsolate(); | 18430 Isolate* isolate = cell->GetIsolate(); |
18433 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 18431 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
18434 isolate, DependentCode::kPropertyCellChangedGroup); | 18432 isolate, DependentCode::kPropertyCellChangedGroup); |
18435 } | 18433 } |
18436 } | 18434 } |
18437 | 18435 |
18438 } // namespace internal | 18436 } // namespace internal |
18439 } // namespace v8 | 18437 } // namespace v8 |
OLD | NEW |