Index: src/heap/heap-inl.h |
diff --git a/src/heap/heap-inl.h b/src/heap/heap-inl.h |
index 14ffca4147f7a4ebcf5a205eed5e1821f82affb8..aecdd40988b8b4f5f5c01e579ba6300b1c246e2d 100644 |
--- a/src/heap/heap-inl.h |
+++ b/src/heap/heap-inl.h |
@@ -46,6 +46,44 @@ void PromotionQueue::insert(HeapObject* target, int size) { |
} |
+#define ROOT_ACCESSOR(type, name, camel_name) \ |
+ type* Heap::name() { return type::cast(roots_[k##camel_name##RootIndex]); } |
+ROOT_LIST(ROOT_ACCESSOR) |
+#undef ROOT_ACCESSOR |
+ |
+#define STRUCT_MAP_ACCESSOR(NAME, Name, name) \ |
+ Map* Heap::name##_map() { return Map::cast(roots_[k##Name##MapRootIndex]); } |
+STRUCT_LIST(STRUCT_MAP_ACCESSOR) |
+#undef STRUCT_MAP_ACCESSOR |
+ |
+#define STRING_ACCESSOR(name, str) \ |
+ String* Heap::name() { return String::cast(roots_[k##name##RootIndex]); } |
+INTERNALIZED_STRING_LIST(STRING_ACCESSOR) |
+#undef STRING_ACCESSOR |
+ |
+#define SYMBOL_ACCESSOR(name) \ |
+ Symbol* Heap::name() { return Symbol::cast(roots_[k##name##RootIndex]); } |
+PRIVATE_SYMBOL_LIST(SYMBOL_ACCESSOR) |
+#undef SYMBOL_ACCESSOR |
+ |
+#define SYMBOL_ACCESSOR(name, varname, description) \ |
+ Symbol* Heap::name() { return Symbol::cast(roots_[k##name##RootIndex]); } |
+PUBLIC_SYMBOL_LIST(SYMBOL_ACCESSOR) |
+#undef SYMBOL_ACCESSOR |
+ |
+#define ROOT_ACCESSOR(type, name, camel_name) \ |
+ void Heap::set_##name(type* value) { \ |
+ /* The deserializer makes use of the fact that these common roots are */ \ |
+ /* never in new space and never on a page that is being compacted. */ \ |
+ DCHECK(!deserialization_complete() || \ |
+ RootCanBeWrittenAfterInitialization(k##camel_name##RootIndex)); \ |
+ DCHECK(k##camel_name##RootIndex >= kOldSpaceRoots || !InNewSpace(value)); \ |
+ roots_[k##camel_name##RootIndex] = value; \ |
+ } |
+ROOT_LIST(ROOT_ACCESSOR) |
+#undef ROOT_ACCESSOR |
+ |
+ |
template <> |
bool inline Heap::IsOneByte(Vector<const char> str, int chars) { |
// TODO(dcarney): incorporate Latin-1 check when Latin-1 is supported? |
@@ -670,6 +708,46 @@ void Heap::CompletelyClearInstanceofCache() { |
} |
+uint32_t Heap::HashSeed() { |
+ uint32_t seed = static_cast<uint32_t>(hash_seed()->value()); |
+ DCHECK(FLAG_randomize_hashes || seed == 0); |
+ return seed; |
+} |
+ |
+ |
+Smi* Heap::NextScriptId() { |
+ int next_id = last_script_id()->value() + 1; |
+ if (!Smi::IsValid(next_id) || next_id < 0) next_id = 1; |
+ Smi* next_id_smi = Smi::FromInt(next_id); |
+ set_last_script_id(next_id_smi); |
+ return next_id_smi; |
+} |
+ |
+ |
+void Heap::SetArgumentsAdaptorDeoptPCOffset(int pc_offset) { |
+ DCHECK(arguments_adaptor_deopt_pc_offset() == Smi::FromInt(0)); |
+ set_arguments_adaptor_deopt_pc_offset(Smi::FromInt(pc_offset)); |
+} |
+ |
+ |
+void Heap::SetConstructStubDeoptPCOffset(int pc_offset) { |
+ DCHECK(construct_stub_deopt_pc_offset() == Smi::FromInt(0)); |
+ set_construct_stub_deopt_pc_offset(Smi::FromInt(pc_offset)); |
+} |
+ |
+ |
+void Heap::SetGetterStubDeoptPCOffset(int pc_offset) { |
+ DCHECK(getter_stub_deopt_pc_offset() == Smi::FromInt(0)); |
+ set_getter_stub_deopt_pc_offset(Smi::FromInt(pc_offset)); |
+} |
+ |
+ |
+void Heap::SetSetterStubDeoptPCOffset(int pc_offset) { |
+ DCHECK(setter_stub_deopt_pc_offset() == Smi::FromInt(0)); |
+ set_setter_stub_deopt_pc_offset(Smi::FromInt(pc_offset)); |
+} |
+ |
+ |
AlwaysAllocateScope::AlwaysAllocateScope(Isolate* isolate) |
: heap_(isolate->heap()), daf_(isolate) { |
heap_->always_allocate_scope_depth_++; |