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 "src/v8.h" | 7 #include "src/v8.h" |
8 | 8 |
9 #include "src/ast.h" | 9 #include "src/ast.h" |
10 #include "src/base/platform/platform.h" | 10 #include "src/base/platform/platform.h" |
(...skipping 1486 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1497 runtime_zone_(this), | 1497 runtime_zone_(this), |
1498 inner_pointer_to_code_cache_(NULL), | 1498 inner_pointer_to_code_cache_(NULL), |
1499 write_iterator_(NULL), | 1499 write_iterator_(NULL), |
1500 global_handles_(NULL), | 1500 global_handles_(NULL), |
1501 eternal_handles_(NULL), | 1501 eternal_handles_(NULL), |
1502 thread_manager_(NULL), | 1502 thread_manager_(NULL), |
1503 has_installed_extensions_(false), | 1503 has_installed_extensions_(false), |
1504 string_tracker_(NULL), | 1504 string_tracker_(NULL), |
1505 regexp_stack_(NULL), | 1505 regexp_stack_(NULL), |
1506 date_cache_(NULL), | 1506 date_cache_(NULL), |
1507 code_stub_interface_descriptors_(NULL), | |
1508 call_descriptor_data_(NULL), | 1507 call_descriptor_data_(NULL), |
1509 // TODO(bmeurer) Initialized lazily because it depends on flags; can | 1508 // TODO(bmeurer) Initialized lazily because it depends on flags; can |
1510 // be fixed once the default isolate cleanup is done. | 1509 // be fixed once the default isolate cleanup is done. |
1511 random_number_generator_(NULL), | 1510 random_number_generator_(NULL), |
1512 serializer_enabled_(false), | 1511 serializer_enabled_(false), |
1513 has_fatal_error_(false), | 1512 has_fatal_error_(false), |
1514 initialized_from_snapshot_(false), | 1513 initialized_from_snapshot_(false), |
1515 cpu_profiler_(NULL), | 1514 cpu_profiler_(NULL), |
1516 heap_profiler_(NULL), | 1515 heap_profiler_(NULL), |
1517 function_entry_hook_(NULL), | 1516 function_entry_hook_(NULL), |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1694 | 1693 |
1695 delete entry_stack_; | 1694 delete entry_stack_; |
1696 entry_stack_ = NULL; | 1695 entry_stack_ = NULL; |
1697 | 1696 |
1698 delete unicode_cache_; | 1697 delete unicode_cache_; |
1699 unicode_cache_ = NULL; | 1698 unicode_cache_ = NULL; |
1700 | 1699 |
1701 delete date_cache_; | 1700 delete date_cache_; |
1702 date_cache_ = NULL; | 1701 date_cache_ = NULL; |
1703 | 1702 |
1704 delete[] code_stub_interface_descriptors_; | |
1705 code_stub_interface_descriptors_ = NULL; | |
1706 | |
1707 delete[] call_descriptor_data_; | 1703 delete[] call_descriptor_data_; |
1708 call_descriptor_data_ = NULL; | 1704 call_descriptor_data_ = NULL; |
1709 | 1705 |
1710 delete regexp_stack_; | 1706 delete regexp_stack_; |
1711 regexp_stack_ = NULL; | 1707 regexp_stack_ = NULL; |
1712 | 1708 |
1713 delete descriptor_lookup_cache_; | 1709 delete descriptor_lookup_cache_; |
1714 descriptor_lookup_cache_ = NULL; | 1710 descriptor_lookup_cache_ = NULL; |
1715 delete context_slot_cache_; | 1711 delete context_slot_cache_; |
1716 context_slot_cache_ = NULL; | 1712 context_slot_cache_ = NULL; |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1873 write_iterator_ = new ConsStringIteratorOp(); | 1869 write_iterator_ = new ConsStringIteratorOp(); |
1874 global_handles_ = new GlobalHandles(this); | 1870 global_handles_ = new GlobalHandles(this); |
1875 eternal_handles_ = new EternalHandles(); | 1871 eternal_handles_ = new EternalHandles(); |
1876 bootstrapper_ = new Bootstrapper(this); | 1872 bootstrapper_ = new Bootstrapper(this); |
1877 handle_scope_implementer_ = new HandleScopeImplementer(this); | 1873 handle_scope_implementer_ = new HandleScopeImplementer(this); |
1878 stub_cache_ = new StubCache(this); | 1874 stub_cache_ = new StubCache(this); |
1879 materialized_object_store_ = new MaterializedObjectStore(this); | 1875 materialized_object_store_ = new MaterializedObjectStore(this); |
1880 regexp_stack_ = new RegExpStack(); | 1876 regexp_stack_ = new RegExpStack(); |
1881 regexp_stack_->isolate_ = this; | 1877 regexp_stack_->isolate_ = this; |
1882 date_cache_ = new DateCache(); | 1878 date_cache_ = new DateCache(); |
1883 code_stub_interface_descriptors_ = | |
1884 new CodeStubInterfaceDescriptor[CodeStub::NUMBER_OF_IDS]; | |
1885 call_descriptor_data_ = | 1879 call_descriptor_data_ = |
1886 new CallInterfaceDescriptorData[CallDescriptors::NUMBER_OF_DESCRIPTORS]; | 1880 new CallInterfaceDescriptorData[CallDescriptors::NUMBER_OF_DESCRIPTORS]; |
1887 cpu_profiler_ = new CpuProfiler(this); | 1881 cpu_profiler_ = new CpuProfiler(this); |
1888 heap_profiler_ = new HeapProfiler(heap()); | 1882 heap_profiler_ = new HeapProfiler(heap()); |
1889 | 1883 |
1890 // Enable logging before setting up the heap | 1884 // Enable logging before setting up the heap |
1891 logger_->SetUp(this); | 1885 logger_->SetUp(this); |
1892 | 1886 |
1893 // Initialize other runtime facilities | 1887 // Initialize other runtime facilities |
1894 #if defined(USE_SIMULATOR) | 1888 #if defined(USE_SIMULATOR) |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2027 kDeoptTableSerializeEntryCount - 1); | 2021 kDeoptTableSerializeEntryCount - 1); |
2028 } | 2022 } |
2029 | 2023 |
2030 if (!serializer_enabled()) { | 2024 if (!serializer_enabled()) { |
2031 // Ensure that all stubs which need to be generated ahead of time, but | 2025 // Ensure that all stubs which need to be generated ahead of time, but |
2032 // cannot be serialized into the snapshot have been generated. | 2026 // cannot be serialized into the snapshot have been generated. |
2033 HandleScope scope(this); | 2027 HandleScope scope(this); |
2034 CodeStub::GenerateFPStubs(this); | 2028 CodeStub::GenerateFPStubs(this); |
2035 StoreBufferOverflowStub::GenerateFixedRegStubsAheadOfTime(this); | 2029 StoreBufferOverflowStub::GenerateFixedRegStubsAheadOfTime(this); |
2036 StubFailureTrampolineStub::GenerateAheadOfTime(this); | 2030 StubFailureTrampolineStub::GenerateAheadOfTime(this); |
2037 // Ensure interface descriptors are initialized even when stubs have been | |
2038 // deserialized out of the snapshot without using the graph builder. | |
2039 FastCloneShallowArrayStub::InstallDescriptors(this); | |
2040 BinaryOpICStub::InstallDescriptors(this); | |
2041 BinaryOpWithAllocationSiteStub::InstallDescriptors(this); | |
2042 CompareNilICStub::InstallDescriptors(this); | |
2043 ToBooleanStub::InstallDescriptors(this); | |
2044 ToNumberStub::InstallDescriptors(this); | |
2045 ArrayConstructorStubBase::InstallDescriptors(this); | |
2046 InternalArrayConstructorStubBase::InstallDescriptors(this); | |
2047 FastNewClosureStub::InstallDescriptors(this); | |
2048 FastNewContextStub::InstallDescriptors(this); | |
2049 NumberToStringStub::InstallDescriptors(this); | |
2050 StringAddStub::InstallDescriptors(this); | |
2051 RegExpConstructResultStub::InstallDescriptors(this); | |
2052 KeyedLoadGenericStub::InstallDescriptors(this); | |
2053 StoreFieldStub::InstallDescriptors(this); | |
2054 LoadFastElementStub::InstallDescriptors(this); | |
2055 } | 2031 } |
2056 | 2032 |
2057 initialized_from_snapshot_ = (des != NULL); | 2033 initialized_from_snapshot_ = (des != NULL); |
2058 | 2034 |
2059 return true; | 2035 return true; |
2060 } | 2036 } |
2061 | 2037 |
2062 | 2038 |
2063 // Initialized lazily to allow early | 2039 // Initialized lazily to allow early |
2064 // v8::V8::SetAddHistogramSampleFunction calls. | 2040 // v8::V8::SetAddHistogramSampleFunction calls. |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2224 } | 2200 } |
2225 if (initial_object_proto->elements() != heap()->empty_fixed_array()) { | 2201 if (initial_object_proto->elements() != heap()->empty_fixed_array()) { |
2226 return false; | 2202 return false; |
2227 } | 2203 } |
2228 | 2204 |
2229 iter.Advance(); | 2205 iter.Advance(); |
2230 return iter.IsAtEnd(); | 2206 return iter.IsAtEnd(); |
2231 } | 2207 } |
2232 | 2208 |
2233 | 2209 |
2234 CodeStubInterfaceDescriptor* | |
2235 Isolate::code_stub_interface_descriptor(int index) { | |
2236 return code_stub_interface_descriptors_ + index; | |
2237 } | |
2238 | |
2239 | |
2240 CallInterfaceDescriptorData* Isolate::call_descriptor_data(int index) { | 2210 CallInterfaceDescriptorData* Isolate::call_descriptor_data(int index) { |
2241 DCHECK(0 <= index && index < CallDescriptors::NUMBER_OF_DESCRIPTORS); | 2211 DCHECK(0 <= index && index < CallDescriptors::NUMBER_OF_DESCRIPTORS); |
2242 return &call_descriptor_data_[index]; | 2212 return &call_descriptor_data_[index]; |
2243 } | 2213 } |
2244 | 2214 |
2245 | 2215 |
2246 Object* Isolate::FindCodeObject(Address a) { | 2216 Object* Isolate::FindCodeObject(Address a) { |
2247 return inner_pointer_to_code_cache()->GcSafeFindCodeForInnerPointer(a); | 2217 return inner_pointer_to_code_cache()->GcSafeFindCodeForInnerPointer(a); |
2248 } | 2218 } |
2249 | 2219 |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2411 if (prev_ && prev_->Intercept(flag)) return true; | 2381 if (prev_ && prev_->Intercept(flag)) return true; |
2412 // Then check whether this scope intercepts. | 2382 // Then check whether this scope intercepts. |
2413 if ((flag & intercept_mask_)) { | 2383 if ((flag & intercept_mask_)) { |
2414 intercepted_flags_ |= flag; | 2384 intercepted_flags_ |= flag; |
2415 return true; | 2385 return true; |
2416 } | 2386 } |
2417 return false; | 2387 return false; |
2418 } | 2388 } |
2419 | 2389 |
2420 } } // namespace v8::internal | 2390 } } // namespace v8::internal |
OLD | NEW |