OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 <iomanip> | 5 #include <iomanip> |
6 #include <sstream> | 6 #include <sstream> |
7 | 7 |
8 #include "src/v8.h" | 8 #include "src/v8.h" |
9 | 9 |
10 #include "src/accessors.h" | 10 #include "src/accessors.h" |
(...skipping 14540 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
14551 template<typename Derived, typename Shape, typename Key> | 14551 template<typename Derived, typename Shape, typename Key> |
14552 Handle<Derived> HashTable<Derived, Shape, Key>::New( | 14552 Handle<Derived> HashTable<Derived, Shape, Key>::New( |
14553 Isolate* isolate, | 14553 Isolate* isolate, |
14554 int at_least_space_for, | 14554 int at_least_space_for, |
14555 MinimumCapacity capacity_option, | 14555 MinimumCapacity capacity_option, |
14556 PretenureFlag pretenure) { | 14556 PretenureFlag pretenure) { |
14557 DCHECK(0 <= at_least_space_for); | 14557 DCHECK(0 <= at_least_space_for); |
14558 DCHECK(!capacity_option || base::bits::IsPowerOfTwo32(at_least_space_for)); | 14558 DCHECK(!capacity_option || base::bits::IsPowerOfTwo32(at_least_space_for)); |
14559 int capacity = (capacity_option == USE_CUSTOM_MINIMUM_CAPACITY) | 14559 int capacity = (capacity_option == USE_CUSTOM_MINIMUM_CAPACITY) |
14560 ? at_least_space_for | 14560 ? at_least_space_for |
14561 : ComputeCapacity(at_least_space_for); | 14561 : isolate->serializer_enabled() |
| 14562 ? ComputeCapacityForSerialization(at_least_space_for) |
| 14563 : ComputeCapacity(at_least_space_for); |
14562 if (capacity > HashTable::kMaxCapacity) { | 14564 if (capacity > HashTable::kMaxCapacity) { |
14563 v8::internal::Heap::FatalProcessOutOfMemory("invalid table size", true); | 14565 v8::internal::Heap::FatalProcessOutOfMemory("invalid table size", true); |
14564 } | 14566 } |
14565 | 14567 |
14566 Factory* factory = isolate->factory(); | 14568 Factory* factory = isolate->factory(); |
14567 int length = EntryToIndex(capacity); | 14569 int length = EntryToIndex(capacity); |
14568 Handle<FixedArray> array = factory->NewFixedArray(length, pretenure); | 14570 Handle<FixedArray> array = factory->NewFixedArray(length, pretenure); |
14569 array->set_map_no_write_barrier(*factory->hash_table_map()); | 14571 array->set_map_no_write_barrier(*factory->hash_table_map()); |
14570 Handle<Derived> table = Handle<Derived>::cast(array); | 14572 Handle<Derived> table = Handle<Derived>::cast(array); |
14571 | 14573 |
(...skipping 2519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
17091 if (!invalidate && old_type == PropertyCellType::kConstant && | 17093 if (!invalidate && old_type == PropertyCellType::kConstant && |
17092 new_type != PropertyCellType::kConstant) { | 17094 new_type != PropertyCellType::kConstant) { |
17093 auto isolate = dictionary->GetIsolate(); | 17095 auto isolate = dictionary->GetIsolate(); |
17094 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 17096 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
17095 isolate, DependentCode::kPropertyCellChangedGroup); | 17097 isolate, DependentCode::kPropertyCellChangedGroup); |
17096 } | 17098 } |
17097 return value; | 17099 return value; |
17098 } | 17100 } |
17099 | 17101 |
17100 } } // namespace v8::internal | 17102 } } // namespace v8::internal |
OLD | NEW |