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 <stdlib.h> | 5 #include <stdlib.h> |
6 | 6 |
7 #include <fstream> // NOLINT(readability/streams) | 7 #include <fstream> // NOLINT(readability/streams) |
8 #include <sstream> | 8 #include <sstream> |
9 | 9 |
10 #include "src/v8.h" | 10 #include "src/v8.h" |
(...skipping 1739 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1750 Isolate* saved_isolate = UncheckedCurrent(); | 1750 Isolate* saved_isolate = UncheckedCurrent(); |
1751 SetIsolateThreadLocals(this, NULL); | 1751 SetIsolateThreadLocals(this, NULL); |
1752 | 1752 |
1753 Deinit(); | 1753 Deinit(); |
1754 | 1754 |
1755 { | 1755 { |
1756 base::LockGuard<base::Mutex> lock_guard(thread_data_table_mutex_.Pointer()); | 1756 base::LockGuard<base::Mutex> lock_guard(thread_data_table_mutex_.Pointer()); |
1757 thread_data_table_->RemoveAllThreads(this); | 1757 thread_data_table_->RemoveAllThreads(this); |
1758 } | 1758 } |
1759 | 1759 |
1760 if (serialize_partial_snapshot_cache_ != NULL) { | |
1761 delete[] serialize_partial_snapshot_cache_; | |
1762 serialize_partial_snapshot_cache_ = NULL; | |
1763 } | |
1764 | |
1765 delete this; | 1760 delete this; |
1766 | 1761 |
1767 // Restore the previous current isolate. | 1762 // Restore the previous current isolate. |
1768 SetIsolateThreadLocals(saved_isolate, saved_data); | 1763 SetIsolateThreadLocals(saved_isolate, saved_data); |
1769 } | 1764 } |
1770 | 1765 |
1771 | 1766 |
1772 void Isolate::GlobalTearDown() { | 1767 void Isolate::GlobalTearDown() { |
1773 delete thread_data_table_; | 1768 delete thread_data_table_; |
1774 thread_data_table_ = NULL; | 1769 thread_data_table_ = NULL; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1818 heap_.TearDown(); | 1813 heap_.TearDown(); |
1819 logger_->TearDown(); | 1814 logger_->TearDown(); |
1820 | 1815 |
1821 delete heap_profiler_; | 1816 delete heap_profiler_; |
1822 heap_profiler_ = NULL; | 1817 heap_profiler_ = NULL; |
1823 delete cpu_profiler_; | 1818 delete cpu_profiler_; |
1824 cpu_profiler_ = NULL; | 1819 cpu_profiler_ = NULL; |
1825 } | 1820 } |
1826 | 1821 |
1827 | 1822 |
1828 void Isolate::PushToPartialSnapshotCache(Object* obj) { | |
1829 int length = serialize_partial_snapshot_cache_length(); | |
1830 int capacity = serialize_partial_snapshot_cache_capacity(); | |
1831 | |
1832 if (length >= capacity) { | |
1833 int new_capacity = static_cast<int>((capacity + 10) * 1.2); | |
1834 Object** new_array = new Object*[new_capacity]; | |
1835 for (int i = 0; i < length; i++) { | |
1836 new_array[i] = serialize_partial_snapshot_cache()[i]; | |
1837 } | |
1838 if (capacity != 0) delete[] serialize_partial_snapshot_cache(); | |
1839 set_serialize_partial_snapshot_cache(new_array); | |
1840 set_serialize_partial_snapshot_cache_capacity(new_capacity); | |
1841 } | |
1842 | |
1843 serialize_partial_snapshot_cache()[length] = obj; | |
1844 set_serialize_partial_snapshot_cache_length(length + 1); | |
1845 } | |
1846 | |
1847 | |
1848 void Isolate::SetIsolateThreadLocals(Isolate* isolate, | 1823 void Isolate::SetIsolateThreadLocals(Isolate* isolate, |
1849 PerIsolateThreadData* data) { | 1824 PerIsolateThreadData* data) { |
1850 base::Thread::SetThreadLocal(isolate_key_, isolate); | 1825 base::Thread::SetThreadLocal(isolate_key_, isolate); |
1851 base::Thread::SetThreadLocal(per_isolate_thread_data_key_, data); | 1826 base::Thread::SetThreadLocal(per_isolate_thread_data_key_, data); |
1852 } | 1827 } |
1853 | 1828 |
1854 | 1829 |
1855 Isolate::~Isolate() { | 1830 Isolate::~Isolate() { |
1856 TRACE_ISOLATE(destructor); | 1831 TRACE_ISOLATE(destructor); |
1857 | 1832 |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2081 deoptimizer_data_ = new DeoptimizerData(memory_allocator_); | 2056 deoptimizer_data_ = new DeoptimizerData(memory_allocator_); |
2082 | 2057 |
2083 const bool create_heap_objects = (des == NULL); | 2058 const bool create_heap_objects = (des == NULL); |
2084 if (create_heap_objects && !heap_.CreateHeapObjects()) { | 2059 if (create_heap_objects && !heap_.CreateHeapObjects()) { |
2085 V8::FatalProcessOutOfMemory("heap object creation"); | 2060 V8::FatalProcessOutOfMemory("heap object creation"); |
2086 return false; | 2061 return false; |
2087 } | 2062 } |
2088 | 2063 |
2089 if (create_heap_objects) { | 2064 if (create_heap_objects) { |
2090 // Terminate the cache array with the sentinel so we can iterate. | 2065 // Terminate the cache array with the sentinel so we can iterate. |
2091 PushToPartialSnapshotCache(heap_.undefined_value()); | 2066 partial_snapshot_cache_.Add(heap_.undefined_value()); |
2092 } | 2067 } |
2093 | 2068 |
2094 InitializeThreadLocal(); | 2069 InitializeThreadLocal(); |
2095 | 2070 |
2096 bootstrapper_->Initialize(create_heap_objects); | 2071 bootstrapper_->Initialize(create_heap_objects); |
2097 builtins_.SetUp(this, create_heap_objects); | 2072 builtins_.SetUp(this, create_heap_objects); |
2098 | 2073 |
2099 if (FLAG_log_internal_timer_events) { | 2074 if (FLAG_log_internal_timer_events) { |
2100 set_event_logger(Logger::DefaultEventLoggerSentinel); | 2075 set_event_logger(Logger::DefaultEventLoggerSentinel); |
2101 } | 2076 } |
(...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2635 if (prev_ && prev_->Intercept(flag)) return true; | 2610 if (prev_ && prev_->Intercept(flag)) return true; |
2636 // Then check whether this scope intercepts. | 2611 // Then check whether this scope intercepts. |
2637 if ((flag & intercept_mask_)) { | 2612 if ((flag & intercept_mask_)) { |
2638 intercepted_flags_ |= flag; | 2613 intercepted_flags_ |= flag; |
2639 return true; | 2614 return true; |
2640 } | 2615 } |
2641 return false; | 2616 return false; |
2642 } | 2617 } |
2643 | 2618 |
2644 } } // namespace v8::internal | 2619 } } // namespace v8::internal |
OLD | NEW |