Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(275)

Side by Side Diff: src/isolate.cc

Issue 2123983004: [ic] Split megamorphic stub cache in two caches (for loads and for stores). (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@flags-fix
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 1840 matching lines...) Expand 10 before | Expand all | Expand 10 after
1851 : embedder_data_(), 1851 : embedder_data_(),
1852 entry_stack_(NULL), 1852 entry_stack_(NULL),
1853 stack_trace_nesting_level_(0), 1853 stack_trace_nesting_level_(0),
1854 incomplete_message_(NULL), 1854 incomplete_message_(NULL),
1855 bootstrapper_(NULL), 1855 bootstrapper_(NULL),
1856 runtime_profiler_(NULL), 1856 runtime_profiler_(NULL),
1857 compilation_cache_(NULL), 1857 compilation_cache_(NULL),
1858 counters_(NULL), 1858 counters_(NULL),
1859 logger_(NULL), 1859 logger_(NULL),
1860 stats_table_(NULL), 1860 stats_table_(NULL),
1861 stub_cache_(NULL), 1861 load_stub_cache_(NULL),
1862 store_stub_cache_(NULL),
1862 code_aging_helper_(NULL), 1863 code_aging_helper_(NULL),
1863 deoptimizer_data_(NULL), 1864 deoptimizer_data_(NULL),
1864 deoptimizer_lazy_throw_(false), 1865 deoptimizer_lazy_throw_(false),
1865 materialized_object_store_(NULL), 1866 materialized_object_store_(NULL),
1866 capture_stack_trace_for_uncaught_exceptions_(false), 1867 capture_stack_trace_for_uncaught_exceptions_(false),
1867 stack_trace_for_uncaught_exceptions_frame_limit_(0), 1868 stack_trace_for_uncaught_exceptions_frame_limit_(0),
1868 stack_trace_for_uncaught_exceptions_options_(StackTrace::kOverview), 1869 stack_trace_for_uncaught_exceptions_options_(StackTrace::kOverview),
1869 keyed_lookup_cache_(NULL), 1870 keyed_lookup_cache_(NULL),
1870 context_slot_cache_(NULL), 1871 context_slot_cache_(NULL),
1871 descriptor_lookup_cache_(NULL), 1872 descriptor_lookup_cache_(NULL),
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
2089 delete regexp_stack_; 2090 delete regexp_stack_;
2090 regexp_stack_ = NULL; 2091 regexp_stack_ = NULL;
2091 2092
2092 delete descriptor_lookup_cache_; 2093 delete descriptor_lookup_cache_;
2093 descriptor_lookup_cache_ = NULL; 2094 descriptor_lookup_cache_ = NULL;
2094 delete context_slot_cache_; 2095 delete context_slot_cache_;
2095 context_slot_cache_ = NULL; 2096 context_slot_cache_ = NULL;
2096 delete keyed_lookup_cache_; 2097 delete keyed_lookup_cache_;
2097 keyed_lookup_cache_ = NULL; 2098 keyed_lookup_cache_ = NULL;
2098 2099
2099 delete stub_cache_; 2100 delete load_stub_cache_;
2100 stub_cache_ = NULL; 2101 load_stub_cache_ = NULL;
2102 delete store_stub_cache_;
2103 store_stub_cache_ = NULL;
2101 delete code_aging_helper_; 2104 delete code_aging_helper_;
2102 code_aging_helper_ = NULL; 2105 code_aging_helper_ = NULL;
2103 delete stats_table_; 2106 delete stats_table_;
2104 stats_table_ = NULL; 2107 stats_table_ = NULL;
2105 2108
2106 delete materialized_object_store_; 2109 delete materialized_object_store_;
2107 materialized_object_store_ = NULL; 2110 materialized_object_store_ = NULL;
2108 2111
2109 delete logger_; 2112 delete logger_;
2110 logger_ = NULL; 2113 logger_ = NULL;
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
2233 compilation_cache_ = new CompilationCache(this); 2236 compilation_cache_ = new CompilationCache(this);
2234 keyed_lookup_cache_ = new KeyedLookupCache(); 2237 keyed_lookup_cache_ = new KeyedLookupCache();
2235 context_slot_cache_ = new ContextSlotCache(); 2238 context_slot_cache_ = new ContextSlotCache();
2236 descriptor_lookup_cache_ = new DescriptorLookupCache(); 2239 descriptor_lookup_cache_ = new DescriptorLookupCache();
2237 unicode_cache_ = new UnicodeCache(); 2240 unicode_cache_ = new UnicodeCache();
2238 inner_pointer_to_code_cache_ = new InnerPointerToCodeCache(this); 2241 inner_pointer_to_code_cache_ = new InnerPointerToCodeCache(this);
2239 global_handles_ = new GlobalHandles(this); 2242 global_handles_ = new GlobalHandles(this);
2240 eternal_handles_ = new EternalHandles(); 2243 eternal_handles_ = new EternalHandles();
2241 bootstrapper_ = new Bootstrapper(this); 2244 bootstrapper_ = new Bootstrapper(this);
2242 handle_scope_implementer_ = new HandleScopeImplementer(this); 2245 handle_scope_implementer_ = new HandleScopeImplementer(this);
2243 stub_cache_ = new StubCache(this); 2246 load_stub_cache_ = new StubCache(this, Code::LOAD_IC);
2247 store_stub_cache_ = new StubCache(this, Code::STORE_IC);
2244 materialized_object_store_ = new MaterializedObjectStore(this); 2248 materialized_object_store_ = new MaterializedObjectStore(this);
2245 regexp_stack_ = new RegExpStack(); 2249 regexp_stack_ = new RegExpStack();
2246 regexp_stack_->isolate_ = this; 2250 regexp_stack_->isolate_ = this;
2247 date_cache_ = new DateCache(); 2251 date_cache_ = new DateCache();
2248 call_descriptor_data_ = 2252 call_descriptor_data_ =
2249 new CallInterfaceDescriptorData[CallDescriptors::NUMBER_OF_DESCRIPTORS]; 2253 new CallInterfaceDescriptorData[CallDescriptors::NUMBER_OF_DESCRIPTORS];
2250 cpu_profiler_ = new CpuProfiler(this); 2254 cpu_profiler_ = new CpuProfiler(this);
2251 heap_profiler_ = new HeapProfiler(heap()); 2255 heap_profiler_ = new HeapProfiler(heap());
2252 interpreter_ = new interpreter::Interpreter(this); 2256 interpreter_ = new interpreter::Interpreter(this);
2253 2257
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
2309 } 2313 }
2310 2314
2311 // Initialize runtime profiler before deserialization, because collections may 2315 // Initialize runtime profiler before deserialization, because collections may
2312 // occur, clearing/updating ICs. 2316 // occur, clearing/updating ICs.
2313 runtime_profiler_ = new RuntimeProfiler(this); 2317 runtime_profiler_ = new RuntimeProfiler(this);
2314 2318
2315 // If we are deserializing, read the state into the now-empty heap. 2319 // If we are deserializing, read the state into the now-empty heap.
2316 if (!create_heap_objects) { 2320 if (!create_heap_objects) {
2317 des->Deserialize(this); 2321 des->Deserialize(this);
2318 } 2322 }
2319 stub_cache_->Initialize(); 2323 load_stub_cache_->Initialize();
2324 store_stub_cache_->Initialize();
2320 if (FLAG_ignition || serializer_enabled()) { 2325 if (FLAG_ignition || serializer_enabled()) {
2321 interpreter_->Initialize(); 2326 interpreter_->Initialize();
2322 } 2327 }
2323 2328
2324 // Finish initialization of ThreadLocal after deserialization is done. 2329 // Finish initialization of ThreadLocal after deserialization is done.
2325 clear_pending_exception(); 2330 clear_pending_exception();
2326 clear_pending_message(); 2331 clear_pending_message();
2327 clear_scheduled_exception(); 2332 clear_scheduled_exception();
2328 2333
2329 // Deserializing may put strange things in the root array's copy of the 2334 // Deserializing may put strange things in the root array's copy of the
(...skipping 757 matching lines...) Expand 10 before | Expand all | Expand 10 after
3087 // Then check whether this scope intercepts. 3092 // Then check whether this scope intercepts.
3088 if ((flag & intercept_mask_)) { 3093 if ((flag & intercept_mask_)) {
3089 intercepted_flags_ |= flag; 3094 intercepted_flags_ |= flag;
3090 return true; 3095 return true;
3091 } 3096 }
3092 return false; 3097 return false;
3093 } 3098 }
3094 3099
3095 } // namespace internal 3100 } // namespace internal
3096 } // namespace v8 3101 } // namespace v8
OLDNEW
« no previous file with comments | « src/isolate.h ('k') | src/mips/code-stubs-mips.cc » ('j') | src/type-info.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698