Index: src/serialize.cc |
diff --git a/src/serialize.cc b/src/serialize.cc |
index acf13fb770e46ff613a9f5ee7592a08413c4e936..260abd894a6f07d44460f5a422c0ce4d0b850953 100644 |
--- a/src/serialize.cc |
+++ b/src/serialize.cc |
@@ -102,7 +102,10 @@ class ExternalReferenceTable { |
void PopulateTable(Isolate* isolate); |
// For a few types of references, we can get their address from their id. |
- void AddFromId(TypeCode type, uint16_t id, const char* name); |
+ void AddFromId(TypeCode type, |
+ uint16_t id, |
+ const char* name, |
+ Isolate* isolate); |
// For other types of references, the caller will figure out the address. |
void Add(Address address, TypeCode type, uint16_t id, const char* name); |
@@ -114,26 +117,28 @@ class ExternalReferenceTable { |
void ExternalReferenceTable::AddFromId(TypeCode type, |
uint16_t id, |
- const char* name) { |
+ const char* name, |
+ Isolate* isolate) { |
Address address; |
switch (type) { |
case C_BUILTIN: { |
- ExternalReference ref(static_cast<Builtins::CFunctionId>(id)); |
+ ExternalReference ref(static_cast<Builtins::CFunctionId>(id), isolate); |
address = ref.address(); |
break; |
} |
case BUILTIN: { |
- ExternalReference ref(static_cast<Builtins::Name>(id)); |
+ ExternalReference ref(static_cast<Builtins::Name>(id), isolate); |
address = ref.address(); |
break; |
} |
case RUNTIME_FUNCTION: { |
- ExternalReference ref(static_cast<Runtime::FunctionId>(id)); |
+ ExternalReference ref(static_cast<Runtime::FunctionId>(id), isolate); |
address = ref.address(); |
break; |
} |
case IC_UTILITY: { |
- ExternalReference ref(IC_Utility(static_cast<IC::UtilityId>(id))); |
+ ExternalReference ref(IC_Utility(static_cast<IC::UtilityId>(id)), |
+ isolate); |
address = ref.address(); |
break; |
} |
@@ -221,7 +226,10 @@ void ExternalReferenceTable::PopulateTable(Isolate* isolate) { |
}; // end of ref_table[]. |
for (size_t i = 0; i < ARRAY_SIZE(ref_table); ++i) { |
- AddFromId(ref_table[i].type, ref_table[i].id, ref_table[i].name); |
+ AddFromId(ref_table[i].type, |
+ ref_table[i].id, |
+ ref_table[i].name, |
+ isolate); |
} |
#ifdef ENABLE_DEBUGGER_SUPPORT |
@@ -317,122 +325,124 @@ void ExternalReferenceTable::PopulateTable(Isolate* isolate) { |
"StubCache::secondary_->value"); |
// Runtime entries |
- Add(ExternalReference::perform_gc_function().address(), |
+ Add(ExternalReference::perform_gc_function(isolate).address(), |
RUNTIME_ENTRY, |
1, |
"Runtime::PerformGC"); |
- Add(ExternalReference::fill_heap_number_with_random_function().address(), |
+ Add(ExternalReference::fill_heap_number_with_random_function( |
+ isolate).address(), |
RUNTIME_ENTRY, |
2, |
"V8::FillHeapNumberWithRandom"); |
- Add(ExternalReference::random_uint32_function().address(), |
+ Add(ExternalReference::random_uint32_function(isolate).address(), |
RUNTIME_ENTRY, |
3, |
"V8::Random"); |
- Add(ExternalReference::delete_handle_scope_extensions().address(), |
+ Add(ExternalReference::delete_handle_scope_extensions(isolate).address(), |
RUNTIME_ENTRY, |
4, |
"HandleScope::DeleteExtensions"); |
// Miscellaneous |
- Add(ExternalReference::the_hole_value_location().address(), |
+ Add(ExternalReference::the_hole_value_location(isolate).address(), |
UNCLASSIFIED, |
2, |
"Factory::the_hole_value().location()"); |
- Add(ExternalReference::roots_address().address(), |
+ Add(ExternalReference::roots_address(isolate).address(), |
UNCLASSIFIED, |
3, |
"Heap::roots_address()"); |
- Add(ExternalReference::address_of_stack_limit().address(), |
+ Add(ExternalReference::address_of_stack_limit(isolate).address(), |
UNCLASSIFIED, |
4, |
"StackGuard::address_of_jslimit()"); |
- Add(ExternalReference::address_of_real_stack_limit().address(), |
+ Add(ExternalReference::address_of_real_stack_limit(isolate).address(), |
UNCLASSIFIED, |
5, |
"StackGuard::address_of_real_jslimit()"); |
#ifndef V8_INTERPRETED_REGEXP |
- Add(ExternalReference::address_of_regexp_stack_limit().address(), |
+ Add(ExternalReference::address_of_regexp_stack_limit(isolate).address(), |
UNCLASSIFIED, |
6, |
"RegExpStack::limit_address()"); |
- Add(ExternalReference::address_of_regexp_stack_memory_address().address(), |
+ Add(ExternalReference::address_of_regexp_stack_memory_address( |
+ isolate).address(), |
UNCLASSIFIED, |
7, |
"RegExpStack::memory_address()"); |
- Add(ExternalReference::address_of_regexp_stack_memory_size().address(), |
+ Add(ExternalReference::address_of_regexp_stack_memory_size(isolate).address(), |
UNCLASSIFIED, |
8, |
"RegExpStack::memory_size()"); |
- Add(ExternalReference::address_of_static_offsets_vector().address(), |
+ Add(ExternalReference::address_of_static_offsets_vector(isolate).address(), |
UNCLASSIFIED, |
9, |
"OffsetsVector::static_offsets_vector"); |
#endif // V8_INTERPRETED_REGEXP |
- Add(ExternalReference::new_space_start().address(), |
+ Add(ExternalReference::new_space_start(isolate).address(), |
UNCLASSIFIED, |
10, |
"Heap::NewSpaceStart()"); |
- Add(ExternalReference::new_space_mask().address(), |
+ Add(ExternalReference::new_space_mask(isolate).address(), |
UNCLASSIFIED, |
11, |
"Heap::NewSpaceMask()"); |
- Add(ExternalReference::heap_always_allocate_scope_depth().address(), |
+ Add(ExternalReference::heap_always_allocate_scope_depth(isolate).address(), |
UNCLASSIFIED, |
12, |
"Heap::always_allocate_scope_depth()"); |
- Add(ExternalReference::new_space_allocation_limit_address().address(), |
+ Add(ExternalReference::new_space_allocation_limit_address(isolate).address(), |
UNCLASSIFIED, |
13, |
"Heap::NewSpaceAllocationLimitAddress()"); |
- Add(ExternalReference::new_space_allocation_top_address().address(), |
+ Add(ExternalReference::new_space_allocation_top_address(isolate).address(), |
UNCLASSIFIED, |
14, |
"Heap::NewSpaceAllocationTopAddress()"); |
#ifdef ENABLE_DEBUGGER_SUPPORT |
- Add(ExternalReference::debug_break().address(), |
+ Add(ExternalReference::debug_break(isolate).address(), |
UNCLASSIFIED, |
15, |
"Debug::Break()"); |
- Add(ExternalReference::debug_step_in_fp_address().address(), |
+ Add(ExternalReference::debug_step_in_fp_address(isolate).address(), |
UNCLASSIFIED, |
16, |
"Debug::step_in_fp_addr()"); |
#endif |
- Add(ExternalReference::double_fp_operation(Token::ADD).address(), |
+ Add(ExternalReference::double_fp_operation(Token::ADD, isolate).address(), |
UNCLASSIFIED, |
17, |
"add_two_doubles"); |
- Add(ExternalReference::double_fp_operation(Token::SUB).address(), |
+ Add(ExternalReference::double_fp_operation(Token::SUB, isolate).address(), |
UNCLASSIFIED, |
18, |
"sub_two_doubles"); |
- Add(ExternalReference::double_fp_operation(Token::MUL).address(), |
+ Add(ExternalReference::double_fp_operation(Token::MUL, isolate).address(), |
UNCLASSIFIED, |
19, |
"mul_two_doubles"); |
- Add(ExternalReference::double_fp_operation(Token::DIV).address(), |
+ Add(ExternalReference::double_fp_operation(Token::DIV, isolate).address(), |
UNCLASSIFIED, |
20, |
"div_two_doubles"); |
- Add(ExternalReference::double_fp_operation(Token::MOD).address(), |
+ Add(ExternalReference::double_fp_operation(Token::MOD, isolate).address(), |
UNCLASSIFIED, |
21, |
"mod_two_doubles"); |
- Add(ExternalReference::compare_doubles().address(), |
+ Add(ExternalReference::compare_doubles(isolate).address(), |
UNCLASSIFIED, |
22, |
"compare_doubles"); |
#ifndef V8_INTERPRETED_REGEXP |
- Add(ExternalReference::re_case_insensitive_compare_uc16().address(), |
+ Add(ExternalReference::re_case_insensitive_compare_uc16(isolate).address(), |
UNCLASSIFIED, |
23, |
"NativeRegExpMacroAssembler::CaseInsensitiveCompareUC16()"); |
- Add(ExternalReference::re_check_stack_guard_state().address(), |
+ Add(ExternalReference::re_check_stack_guard_state(isolate).address(), |
UNCLASSIFIED, |
24, |
"RegExpMacroAssembler*::CheckStackGuardState()"); |
- Add(ExternalReference::re_grow_stack().address(), |
+ Add(ExternalReference::re_grow_stack(isolate).address(), |
UNCLASSIFIED, |
25, |
"NativeRegExpMacroAssembler::GrowStack()"); |
@@ -442,15 +452,15 @@ void ExternalReferenceTable::PopulateTable(Isolate* isolate) { |
"NativeRegExpMacroAssembler::word_character_map"); |
#endif // V8_INTERPRETED_REGEXP |
// Keyed lookup cache. |
- Add(ExternalReference::keyed_lookup_cache_keys().address(), |
+ Add(ExternalReference::keyed_lookup_cache_keys(isolate).address(), |
UNCLASSIFIED, |
27, |
"KeyedLookupCache::keys()"); |
- Add(ExternalReference::keyed_lookup_cache_field_offsets().address(), |
+ Add(ExternalReference::keyed_lookup_cache_field_offsets(isolate).address(), |
UNCLASSIFIED, |
28, |
"KeyedLookupCache::field_offsets()"); |
- Add(ExternalReference::transcendental_cache_array_address().address(), |
+ Add(ExternalReference::transcendental_cache_array_address(isolate).address(), |
UNCLASSIFIED, |
29, |
"TranscendentalCache::caches()"); |
@@ -466,11 +476,11 @@ void ExternalReferenceTable::PopulateTable(Isolate* isolate) { |
UNCLASSIFIED, |
32, |
"HandleScope::level"); |
- Add(ExternalReference::new_deoptimizer_function().address(), |
+ Add(ExternalReference::new_deoptimizer_function(isolate).address(), |
UNCLASSIFIED, |
33, |
"Deoptimizer::New()"); |
- Add(ExternalReference::compute_output_frames_function().address(), |
+ Add(ExternalReference::compute_output_frames_function(isolate).address(), |
UNCLASSIFIED, |
34, |
"Deoptimizer::ComputeOutputFrames()"); |
@@ -494,15 +504,15 @@ void ExternalReferenceTable::PopulateTable(Isolate* isolate) { |
UNCLASSIFIED, |
39, |
"LDoubleConstant::negative_infinity"); |
- Add(ExternalReference::power_double_double_function().address(), |
+ Add(ExternalReference::power_double_double_function(isolate).address(), |
UNCLASSIFIED, |
40, |
"power_double_double_function"); |
- Add(ExternalReference::power_double_int_function().address(), |
+ Add(ExternalReference::power_double_int_function(isolate).address(), |
UNCLASSIFIED, |
41, |
"power_double_int_function"); |
- Add(ExternalReference::arguments_marker_location().address(), |
+ Add(ExternalReference::arguments_marker_location(isolate).address(), |
UNCLASSIFIED, |
42, |
"Factory::arguments_marker().location()"); |