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 8422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8433 Handle<FixedArray> array, int length) { | 8433 Handle<FixedArray> array, int length) { |
8434 DCHECK_LE(length, array->length()); | 8434 DCHECK_LE(length, array->length()); |
8435 if (array->length() == length) return array; | 8435 if (array->length() == length) return array; |
8436 return array->GetIsolate()->factory()->CopyFixedArrayUpTo(array, length); | 8436 return array->GetIsolate()->factory()->CopyFixedArrayUpTo(array, length); |
8437 } | 8437 } |
8438 | 8438 |
8439 bool Map::OnlyHasSimpleProperties() { | 8439 bool Map::OnlyHasSimpleProperties() { |
8440 // Wrapped string elements aren't explicitly stored in the elements backing | 8440 // Wrapped string elements aren't explicitly stored in the elements backing |
8441 // store, but are loaded indirectly from the underlying string. | 8441 // store, but are loaded indirectly from the underlying string. |
8442 return !IsStringWrapperElementsKind(elements_kind()) && | 8442 return !IsStringWrapperElementsKind(elements_kind()) && |
8443 !is_access_check_needed() && !has_named_interceptor() && | 8443 instance_type() > LAST_SPECIAL_RECEIVER_TYPE && |
8444 !has_indexed_interceptor() && !has_hidden_prototype() && | 8444 !has_hidden_prototype() && !is_dictionary_map(); |
8445 !is_dictionary_map(); | |
8446 } | 8445 } |
8447 | 8446 |
8448 namespace { | 8447 namespace { |
8449 | 8448 |
8450 Handle<FixedArray> GetFastEnumPropertyKeys(Isolate* isolate, | 8449 Handle<FixedArray> GetFastEnumPropertyKeys(Isolate* isolate, |
8451 Handle<JSObject> object) { | 8450 Handle<JSObject> object) { |
8452 Handle<Map> map(object->map()); | 8451 Handle<Map> map(object->map()); |
8453 bool cache_enum_length = map->OnlyHasSimpleProperties(); | 8452 bool cache_enum_length = map->OnlyHasSimpleProperties(); |
8454 | 8453 |
8455 Handle<DescriptorArray> descs = | 8454 Handle<DescriptorArray> descs = |
(...skipping 11402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
19858 if (cell->value() != *new_value) { | 19857 if (cell->value() != *new_value) { |
19859 cell->set_value(*new_value); | 19858 cell->set_value(*new_value); |
19860 Isolate* isolate = cell->GetIsolate(); | 19859 Isolate* isolate = cell->GetIsolate(); |
19861 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 19860 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
19862 isolate, DependentCode::kPropertyCellChangedGroup); | 19861 isolate, DependentCode::kPropertyCellChangedGroup); |
19863 } | 19862 } |
19864 } | 19863 } |
19865 | 19864 |
19866 } // namespace internal | 19865 } // namespace internal |
19867 } // namespace v8 | 19866 } // namespace v8 |
OLD | NEW |