summaryrefslogtreecommitdiff
path: root/deps/v8/src/heap/setup-heap-internal.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/heap/setup-heap-internal.cc')
-rw-r--r--deps/v8/src/heap/setup-heap-internal.cc168
1 files changed, 107 insertions, 61 deletions
diff --git a/deps/v8/src/heap/setup-heap-internal.cc b/deps/v8/src/heap/setup-heap-internal.cc
index 15ca6d7930..9f94029af3 100644
--- a/deps/v8/src/heap/setup-heap-internal.cc
+++ b/deps/v8/src/heap/setup-heap-internal.cc
@@ -7,6 +7,7 @@
#include "src/builtins/accessors.h"
#include "src/codegen/compilation-cache.h"
#include "src/execution/isolate.h"
+#include "src/execution/protectors.h"
#include "src/heap/factory.h"
#include "src/heap/heap-inl.h"
#include "src/ic/handler-configuration.h"
@@ -616,17 +617,17 @@ void Heap::CreateInitialObjects() {
// The -0 value must be set before NewNumber works.
set_minus_zero_value(
- *factory->NewHeapNumber(-0.0, AllocationType::kReadOnly));
+ *factory->NewHeapNumber<AllocationType::kReadOnly>(-0.0));
DCHECK(std::signbit(roots.minus_zero_value().Number()));
- set_nan_value(*factory->NewHeapNumber(
- std::numeric_limits<double>::quiet_NaN(), AllocationType::kReadOnly));
- set_hole_nan_value(*factory->NewHeapNumberFromBits(
- kHoleNanInt64, AllocationType::kReadOnly));
+ set_nan_value(*factory->NewHeapNumber<AllocationType::kReadOnly>(
+ std::numeric_limits<double>::quiet_NaN()));
+ set_hole_nan_value(*factory->NewHeapNumberFromBits<AllocationType::kReadOnly>(
+ kHoleNanInt64));
set_infinity_value(
- *factory->NewHeapNumber(V8_INFINITY, AllocationType::kReadOnly));
+ *factory->NewHeapNumber<AllocationType::kReadOnly>(V8_INFINITY));
set_minus_infinity_value(
- *factory->NewHeapNumber(-V8_INFINITY, AllocationType::kReadOnly));
+ *factory->NewHeapNumber<AllocationType::kReadOnly>(-V8_INFINITY));
set_hash_seed(*factory->NewByteArray(kInt64Size, AllocationType::kReadOnly));
InitializeHashSeed();
@@ -704,8 +705,7 @@ void Heap::CreateInitialObjects() {
Oddball::kStaleRegister));
// Initialize the self-reference marker.
- set_self_reference_marker(
- *factory->NewSelfReferenceMarker(AllocationType::kReadOnly));
+ set_self_reference_marker(*factory->NewSelfReferenceMarker());
set_interpreter_entry_trampoline_for_profiling(roots.undefined_value());
@@ -781,13 +781,13 @@ void Heap::CreateInitialObjects() {
set_feedback_vectors_for_profiling_tools(roots.undefined_value());
set_pending_optimize_for_test_bytecode(roots.undefined_value());
+ set_shared_wasm_memories(roots.empty_weak_array_list());
set_script_list(roots.empty_weak_array_list());
Handle<NumberDictionary> slow_element_dictionary = NumberDictionary::New(
isolate(), 1, AllocationType::kReadOnly, USE_CUSTOM_MINIMUM_CAPACITY);
DCHECK(!slow_element_dictionary->HasSufficientCapacityToAdd(1));
- slow_element_dictionary->set_requires_slow_elements();
set_empty_slow_element_dictionary(*slow_element_dictionary);
set_materialized_objects(*factory->NewFixedArray(0, AllocationType::kOld));
@@ -839,76 +839,122 @@ void Heap::CreateInitialObjects() {
script->set_origin_options(ScriptOriginOptions(true, false));
set_empty_script(*script);
- Handle<Cell> array_constructor_cell = factory->NewCell(
- handle(Smi::FromInt(Isolate::kProtectorValid), isolate()));
- set_array_constructor_protector(*array_constructor_cell);
+ {
+ Handle<PropertyCell> cell = factory->NewPropertyCell(
+ factory->empty_string(), AllocationType::kReadOnly);
+ cell->set_value(roots.the_hole_value());
+ set_empty_property_cell(*cell);
+ }
- Handle<PropertyCell> cell = factory->NewPropertyCell(factory->empty_string());
- cell->set_value(Smi::FromInt(Isolate::kProtectorValid));
- set_no_elements_protector(*cell);
+ // Protectors
+ {
+ Handle<PropertyCell> cell =
+ factory->NewPropertyCell(factory->empty_string());
+ cell->set_value(Smi::FromInt(Protectors::kProtectorValid));
+ set_array_constructor_protector(*cell);
+ }
- cell = factory->NewPropertyCell(factory->empty_string(),
- AllocationType::kReadOnly);
- cell->set_value(roots.the_hole_value());
- set_empty_property_cell(*cell);
+ {
+ Handle<PropertyCell> cell =
+ factory->NewPropertyCell(factory->empty_string());
+ cell->set_value(Smi::FromInt(Protectors::kProtectorValid));
+ set_no_elements_protector(*cell);
+ }
- cell = factory->NewPropertyCell(factory->empty_string());
- cell->set_value(Smi::FromInt(Isolate::kProtectorValid));
- set_array_iterator_protector(*cell);
+ {
+ Handle<PropertyCell> cell =
+ factory->NewPropertyCell(factory->empty_string());
+ cell->set_value(Smi::FromInt(Protectors::kProtectorValid));
+ set_array_iterator_protector(*cell);
+ }
- cell = factory->NewPropertyCell(factory->empty_string());
- cell->set_value(Smi::FromInt(Isolate::kProtectorValid));
- set_map_iterator_protector(*cell);
+ {
+ Handle<PropertyCell> cell =
+ factory->NewPropertyCell(factory->empty_string());
+ cell->set_value(Smi::FromInt(Protectors::kProtectorValid));
+ set_map_iterator_protector(*cell);
+ }
- cell = factory->NewPropertyCell(factory->empty_string());
- cell->set_value(Smi::FromInt(Isolate::kProtectorValid));
- set_set_iterator_protector(*cell);
+ {
+ Handle<PropertyCell> cell =
+ factory->NewPropertyCell(factory->empty_string());
+ cell->set_value(Smi::FromInt(Protectors::kProtectorValid));
+ set_set_iterator_protector(*cell);
+ }
- Handle<Cell> is_concat_spreadable_cell = factory->NewCell(
- handle(Smi::FromInt(Isolate::kProtectorValid), isolate()));
- set_is_concat_spreadable_protector(*is_concat_spreadable_cell);
+ {
+ Handle<PropertyCell> cell =
+ factory->NewPropertyCell(factory->empty_string());
+ cell->set_value(Smi::FromInt(Protectors::kProtectorValid));
+ set_is_concat_spreadable_protector(*cell);
+ }
- cell = factory->NewPropertyCell(factory->empty_string());
- cell->set_value(Smi::FromInt(Isolate::kProtectorValid));
- set_array_species_protector(*cell);
+ {
+ Handle<PropertyCell> cell =
+ factory->NewPropertyCell(factory->empty_string());
+ cell->set_value(Smi::FromInt(Protectors::kProtectorValid));
+ set_array_species_protector(*cell);
+ }
- cell = factory->NewPropertyCell(factory->empty_string());
- cell->set_value(Smi::FromInt(Isolate::kProtectorValid));
- set_typed_array_species_protector(*cell);
+ {
+ Handle<PropertyCell> cell =
+ factory->NewPropertyCell(factory->empty_string());
+ cell->set_value(Smi::FromInt(Protectors::kProtectorValid));
+ set_typed_array_species_protector(*cell);
+ }
- cell = factory->NewPropertyCell(factory->empty_string());
- cell->set_value(Smi::FromInt(Isolate::kProtectorValid));
- set_promise_species_protector(*cell);
+ {
+ Handle<PropertyCell> cell =
+ factory->NewPropertyCell(factory->empty_string());
+ cell->set_value(Smi::FromInt(Protectors::kProtectorValid));
+ set_promise_species_protector(*cell);
+ }
- cell = factory->NewPropertyCell(factory->empty_string());
- cell->set_value(Smi::FromInt(Isolate::kProtectorValid));
- set_string_iterator_protector(*cell);
+ {
+ Handle<PropertyCell> cell =
+ factory->NewPropertyCell(factory->empty_string());
+ cell->set_value(Smi::FromInt(Protectors::kProtectorValid));
+ set_string_iterator_protector(*cell);
+ }
- Handle<Cell> string_length_overflow_cell = factory->NewCell(
- handle(Smi::FromInt(Isolate::kProtectorValid), isolate()));
- set_string_length_protector(*string_length_overflow_cell);
+ {
+ Handle<PropertyCell> cell =
+ factory->NewPropertyCell(factory->empty_string());
+ cell->set_value(Smi::FromInt(Protectors::kProtectorValid));
+ set_string_length_protector(*cell);
+ }
- cell = factory->NewPropertyCell(factory->empty_string());
- cell->set_value(Smi::FromInt(Isolate::kProtectorValid));
- set_array_buffer_detaching_protector(*cell);
+ {
+ Handle<PropertyCell> cell =
+ factory->NewPropertyCell(factory->empty_string());
+ cell->set_value(Smi::FromInt(Protectors::kProtectorValid));
+ set_array_buffer_detaching_protector(*cell);
+ }
- cell = factory->NewPropertyCell(factory->empty_string());
- cell->set_value(Smi::FromInt(Isolate::kProtectorValid));
- set_promise_hook_protector(*cell);
+ {
+ Handle<PropertyCell> cell =
+ factory->NewPropertyCell(factory->empty_string());
+ cell->set_value(Smi::FromInt(Protectors::kProtectorValid));
+ set_promise_hook_protector(*cell);
+ }
- Handle<Cell> promise_resolve_cell = factory->NewCell(
- handle(Smi::FromInt(Isolate::kProtectorValid), isolate()));
- set_promise_resolve_protector(*promise_resolve_cell);
+ {
+ Handle<PropertyCell> cell =
+ factory->NewPropertyCell(factory->empty_string());
+ cell->set_value(Smi::FromInt(Protectors::kProtectorValid));
+ set_promise_resolve_protector(*cell);
+ }
- cell = factory->NewPropertyCell(factory->empty_string());
- cell->set_value(Smi::FromInt(Isolate::kProtectorValid));
- set_promise_then_protector(*cell);
+ {
+ Handle<PropertyCell> cell =
+ factory->NewPropertyCell(factory->empty_string());
+ cell->set_value(Smi::FromInt(Protectors::kProtectorValid));
+ set_promise_then_protector(*cell);
+ }
set_serialized_objects(roots.empty_fixed_array());
set_serialized_global_proxy_sizes(roots.empty_fixed_array());
- set_noscript_shared_function_infos(roots.empty_weak_array_list());
-
/* Canonical off-heap trampoline data */
set_off_heap_trampoline_relocation_info(
*Builtins::GenerateOffHeapTrampolineRelocInfo(isolate_));