OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/isolate.h" | 5 #include "src/isolate.h" |
6 | 6 |
7 #include <stdlib.h> | 7 #include <stdlib.h> |
8 | 8 |
9 #include <fstream> // NOLINT(readability/streams) | 9 #include <fstream> // NOLINT(readability/streams) |
10 #include <sstream> | 10 #include <sstream> |
(...skipping 1780 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1791 | 1791 |
1792 Isolate::Isolate(bool enable_serializer) | 1792 Isolate::Isolate(bool enable_serializer) |
1793 : embedder_data_(), | 1793 : embedder_data_(), |
1794 entry_stack_(NULL), | 1794 entry_stack_(NULL), |
1795 stack_trace_nesting_level_(0), | 1795 stack_trace_nesting_level_(0), |
1796 incomplete_message_(NULL), | 1796 incomplete_message_(NULL), |
1797 bootstrapper_(NULL), | 1797 bootstrapper_(NULL), |
1798 runtime_profiler_(NULL), | 1798 runtime_profiler_(NULL), |
1799 compilation_cache_(NULL), | 1799 compilation_cache_(NULL), |
1800 counters_(NULL), | 1800 counters_(NULL), |
1801 code_range_(NULL), | |
1802 logger_(NULL), | 1801 logger_(NULL), |
1803 stats_table_(NULL), | 1802 stats_table_(NULL), |
1804 stub_cache_(NULL), | 1803 stub_cache_(NULL), |
1805 code_aging_helper_(NULL), | 1804 code_aging_helper_(NULL), |
1806 deoptimizer_data_(NULL), | 1805 deoptimizer_data_(NULL), |
1807 deoptimizer_lazy_throw_(false), | 1806 deoptimizer_lazy_throw_(false), |
1808 materialized_object_store_(NULL), | 1807 materialized_object_store_(NULL), |
1809 capture_stack_trace_for_uncaught_exceptions_(false), | 1808 capture_stack_trace_for_uncaught_exceptions_(false), |
1810 stack_trace_for_uncaught_exceptions_frame_limit_(0), | 1809 stack_trace_for_uncaught_exceptions_frame_limit_(0), |
1811 stack_trace_for_uncaught_exceptions_options_(StackTrace::kOverview), | 1810 stack_trace_for_uncaught_exceptions_options_(StackTrace::kOverview), |
1812 memory_allocator_(NULL), | |
1813 keyed_lookup_cache_(NULL), | 1811 keyed_lookup_cache_(NULL), |
1814 context_slot_cache_(NULL), | 1812 context_slot_cache_(NULL), |
1815 descriptor_lookup_cache_(NULL), | 1813 descriptor_lookup_cache_(NULL), |
1816 handle_scope_implementer_(NULL), | 1814 handle_scope_implementer_(NULL), |
1817 unicode_cache_(NULL), | 1815 unicode_cache_(NULL), |
1818 runtime_zone_(&allocator_), | 1816 runtime_zone_(&allocator_), |
1819 interface_descriptor_zone_(&allocator_), | 1817 interface_descriptor_zone_(&allocator_), |
1820 inner_pointer_to_code_cache_(NULL), | 1818 inner_pointer_to_code_cache_(NULL), |
1821 global_handles_(NULL), | 1819 global_handles_(NULL), |
1822 eternal_handles_(NULL), | 1820 eternal_handles_(NULL), |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2060 delete compilation_cache_; | 2058 delete compilation_cache_; |
2061 compilation_cache_ = NULL; | 2059 compilation_cache_ = NULL; |
2062 delete bootstrapper_; | 2060 delete bootstrapper_; |
2063 bootstrapper_ = NULL; | 2061 bootstrapper_ = NULL; |
2064 delete inner_pointer_to_code_cache_; | 2062 delete inner_pointer_to_code_cache_; |
2065 inner_pointer_to_code_cache_ = NULL; | 2063 inner_pointer_to_code_cache_ = NULL; |
2066 | 2064 |
2067 delete thread_manager_; | 2065 delete thread_manager_; |
2068 thread_manager_ = NULL; | 2066 thread_manager_ = NULL; |
2069 | 2067 |
2070 delete memory_allocator_; | |
2071 memory_allocator_ = NULL; | |
2072 delete code_range_; | |
2073 code_range_ = NULL; | |
2074 delete global_handles_; | 2068 delete global_handles_; |
2075 global_handles_ = NULL; | 2069 global_handles_ = NULL; |
2076 delete eternal_handles_; | 2070 delete eternal_handles_; |
2077 eternal_handles_ = NULL; | 2071 eternal_handles_ = NULL; |
2078 | 2072 |
2079 delete string_stream_debug_object_cache_; | 2073 delete string_stream_debug_object_cache_; |
2080 string_stream_debug_object_cache_ = NULL; | 2074 string_stream_debug_object_cache_ = NULL; |
2081 | 2075 |
2082 delete random_number_generator_; | 2076 delete random_number_generator_; |
2083 random_number_generator_ = NULL; | 2077 random_number_generator_ = NULL; |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2157 // When function entry hooking is in effect, we have to create the code | 2151 // When function entry hooking is in effect, we have to create the code |
2158 // stubs from scratch to get entry hooks, rather than loading the previously | 2152 // stubs from scratch to get entry hooks, rather than loading the previously |
2159 // generated stubs from disk. | 2153 // generated stubs from disk. |
2160 // If this assert fires, the initialization path has regressed. | 2154 // If this assert fires, the initialization path has regressed. |
2161 DCHECK(des == NULL); | 2155 DCHECK(des == NULL); |
2162 } | 2156 } |
2163 | 2157 |
2164 // The initialization process does not handle memory exhaustion. | 2158 // The initialization process does not handle memory exhaustion. |
2165 AlwaysAllocateScope always_allocate(this); | 2159 AlwaysAllocateScope always_allocate(this); |
2166 | 2160 |
2167 memory_allocator_ = new MemoryAllocator(this); | |
2168 code_range_ = new CodeRange(this); | |
2169 | |
2170 // Safe after setting Heap::isolate_, and initializing StackGuard | 2161 // Safe after setting Heap::isolate_, and initializing StackGuard |
2171 heap_.SetStackLimits(); | 2162 heap_.SetStackLimits(); |
2172 | 2163 |
2173 #define ASSIGN_ELEMENT(CamelName, hacker_name) \ | 2164 #define ASSIGN_ELEMENT(CamelName, hacker_name) \ |
2174 isolate_addresses_[Isolate::k##CamelName##Address] = \ | 2165 isolate_addresses_[Isolate::k##CamelName##Address] = \ |
2175 reinterpret_cast<Address>(hacker_name##_address()); | 2166 reinterpret_cast<Address>(hacker_name##_address()); |
2176 FOR_EACH_ISOLATE_ADDRESS_NAME(ASSIGN_ELEMENT) | 2167 FOR_EACH_ISOLATE_ADDRESS_NAME(ASSIGN_ELEMENT) |
2177 #undef ASSIGN_ELEMENT | 2168 #undef ASSIGN_ELEMENT |
2178 | 2169 |
2179 compilation_cache_ = new CompilationCache(this); | 2170 compilation_cache_ = new CompilationCache(this); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2218 stack_guard_.InitThread(lock); | 2209 stack_guard_.InitThread(lock); |
2219 } | 2210 } |
2220 | 2211 |
2221 // SetUp the object heap. | 2212 // SetUp the object heap. |
2222 DCHECK(!heap_.HasBeenSetUp()); | 2213 DCHECK(!heap_.HasBeenSetUp()); |
2223 if (!heap_.SetUp()) { | 2214 if (!heap_.SetUp()) { |
2224 V8::FatalProcessOutOfMemory("heap setup"); | 2215 V8::FatalProcessOutOfMemory("heap setup"); |
2225 return false; | 2216 return false; |
2226 } | 2217 } |
2227 | 2218 |
2228 deoptimizer_data_ = new DeoptimizerData(memory_allocator_); | 2219 deoptimizer_data_ = new DeoptimizerData(heap()->memory_allocator()); |
2229 | 2220 |
2230 const bool create_heap_objects = (des == NULL); | 2221 const bool create_heap_objects = (des == NULL); |
2231 if (create_heap_objects && !heap_.CreateHeapObjects()) { | 2222 if (create_heap_objects && !heap_.CreateHeapObjects()) { |
2232 V8::FatalProcessOutOfMemory("heap object creation"); | 2223 V8::FatalProcessOutOfMemory("heap object creation"); |
2233 return false; | 2224 return false; |
2234 } | 2225 } |
2235 | 2226 |
2236 if (create_heap_objects) { | 2227 if (create_heap_objects) { |
2237 // Terminate the partial snapshot cache so we can iterate. | 2228 // Terminate the partial snapshot cache so we can iterate. |
2238 partial_snapshot_cache_.Add(heap_.undefined_value()); | 2229 partial_snapshot_cache_.Add(heap_.undefined_value()); |
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2989 // Then check whether this scope intercepts. | 2980 // Then check whether this scope intercepts. |
2990 if ((flag & intercept_mask_)) { | 2981 if ((flag & intercept_mask_)) { |
2991 intercepted_flags_ |= flag; | 2982 intercepted_flags_ |= flag; |
2992 return true; | 2983 return true; |
2993 } | 2984 } |
2994 return false; | 2985 return false; |
2995 } | 2986 } |
2996 | 2987 |
2997 } // namespace internal | 2988 } // namespace internal |
2998 } // namespace v8 | 2989 } // namespace v8 |
OLD | NEW |