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

Side by Side Diff: runtime/vm/object_store.cc

Issue 2646443005: Track async causal stack traces (Closed)
Patch Set: rebase Created 3 years, 10 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
« no previous file with comments | « runtime/vm/object_store.h ('k') | runtime/vm/parser.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/object_store.h" 5 #include "vm/object_store.h"
6 6
7 #include "vm/exceptions.h" 7 #include "vm/exceptions.h"
8 #include "vm/dart_entry.h" 8 #include "vm/dart_entry.h"
9 #include "vm/isolate.h" 9 #include "vm/isolate.h"
10 #include "vm/object.h" 10 #include "vm/object.h"
11 #include "vm/raw_object.h" 11 #include "vm/raw_object.h"
12 #include "vm/resolver.h"
12 #include "vm/symbols.h" 13 #include "vm/symbols.h"
13 #include "vm/visitor.h" 14 #include "vm/visitor.h"
14 15
15 namespace dart { 16 namespace dart {
16 17
17 ObjectStore::ObjectStore() 18 ObjectStore::ObjectStore()
18 : object_class_(Class::null()), 19 : object_class_(Class::null()),
19 object_type_(Type::null()), 20 object_type_(Type::null()),
20 null_class_(Class::null()), 21 null_class_(Class::null()),
21 null_type_(Type::null()), 22 null_type_(Type::null()),
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 stack_overflow_(Instance::null()), 87 stack_overflow_(Instance::null()),
87 out_of_memory_(Instance::null()), 88 out_of_memory_(Instance::null()),
88 preallocated_unhandled_exception_(UnhandledException::null()), 89 preallocated_unhandled_exception_(UnhandledException::null()),
89 preallocated_stack_trace_(StackTrace::null()), 90 preallocated_stack_trace_(StackTrace::null()),
90 lookup_port_handler_(Function::null()), 91 lookup_port_handler_(Function::null()),
91 empty_uint32_array_(TypedData::null()), 92 empty_uint32_array_(TypedData::null()),
92 handle_message_function_(Function::null()), 93 handle_message_function_(Function::null()),
93 simple_instance_of_function_(Function::null()), 94 simple_instance_of_function_(Function::null()),
94 simple_instance_of_true_function_(Function::null()), 95 simple_instance_of_true_function_(Function::null()),
95 simple_instance_of_false_function_(Function::null()), 96 simple_instance_of_false_function_(Function::null()),
97 async_clear_thread_stack_trace_(Function::null()),
98 async_set_thread_stack_trace_(Function::null()),
96 library_load_error_table_(Array::null()), 99 library_load_error_table_(Array::null()),
97 unique_dynamic_targets_(Array::null()), 100 unique_dynamic_targets_(Array::null()),
98 token_objects_(GrowableObjectArray::null()), 101 token_objects_(GrowableObjectArray::null()),
99 token_objects_map_(Array::null()), 102 token_objects_map_(Array::null()),
100 megamorphic_cache_table_(GrowableObjectArray::null()), 103 megamorphic_cache_table_(GrowableObjectArray::null()),
101 megamorphic_miss_code_(Code::null()), 104 megamorphic_miss_code_(Code::null()),
102 megamorphic_miss_function_(Function::null()) { 105 megamorphic_miss_function_(Function::null()) {
103 for (RawObject** current = from(); current <= to(); current++) { 106 for (RawObject** current = from(); current <= to(); current++) {
104 ASSERT(*current == Object::null()); 107 ASSERT(*current == Object::null());
105 } 108 }
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 cls = async_lib.LookupClass(Symbols::Future()); 233 cls = async_lib.LookupClass(Symbols::Future());
231 ASSERT(!cls.IsNull()); 234 ASSERT(!cls.IsNull());
232 set_future_class(cls); 235 set_future_class(cls);
233 cls = async_lib.LookupClass(Symbols::Completer()); 236 cls = async_lib.LookupClass(Symbols::Completer());
234 ASSERT(!cls.IsNull()); 237 ASSERT(!cls.IsNull());
235 set_completer_class(cls); 238 set_completer_class(cls);
236 cls = async_lib.LookupClass(Symbols::StreamIterator()); 239 cls = async_lib.LookupClass(Symbols::StreamIterator());
237 ASSERT(!cls.IsNull()); 240 ASSERT(!cls.IsNull());
238 set_stream_iterator_class(cls); 241 set_stream_iterator_class(cls);
239 242
243 String& function_name = String::Handle(zone);
244 Function& function = Function::Handle(zone);
245 function_name ^= async_lib.PrivateName(Symbols::SetAsyncThreadStackTrace());
246 ASSERT(!function_name.IsNull());
247 function ^= Resolver::ResolveStatic(async_lib, Object::null_string(),
248 function_name, 1, Object::null_array());
249 set_async_set_thread_stack_trace(function);
250
251 function_name ^= async_lib.PrivateName(Symbols::ClearAsyncThreadStackTrace());
252 ASSERT(!function_name.IsNull());
253 function ^= Resolver::ResolveStatic(async_lib, Object::null_string(),
254 function_name, 0, Object::null_array());
255 ASSERT(!function.IsNull());
256 set_async_clear_thread_stack_trace(function);
257
240 const Library& internal_lib = Library::Handle(_internal_library()); 258 const Library& internal_lib = Library::Handle(_internal_library());
241 cls = internal_lib.LookupClass(Symbols::Symbol()); 259 cls = internal_lib.LookupClass(Symbols::Symbol());
242 set_symbol_class(cls); 260 set_symbol_class(cls);
243 261
244 const Library& core_lib = Library::Handle(core_library()); 262 const Library& core_lib = Library::Handle(core_library());
245 cls = core_lib.LookupClassAllowPrivate(Symbols::_CompileTimeError()); 263 cls = core_lib.LookupClassAllowPrivate(Symbols::_CompileTimeError());
246 ASSERT(!cls.IsNull()); 264 ASSERT(!cls.IsNull());
247 set_compiletime_error_class(cls); 265 set_compiletime_error_class(cls);
248 266
249 // Cache the core private functions used for fast instance of checks. 267 // Cache the core private functions used for fast instance of checks.
250 simple_instance_of_function_ = 268 simple_instance_of_function_ =
251 PrivateObjectLookup(Symbols::_simpleInstanceOf()); 269 PrivateObjectLookup(Symbols::_simpleInstanceOf());
252 simple_instance_of_true_function_ = 270 simple_instance_of_true_function_ =
253 PrivateObjectLookup(Symbols::_simpleInstanceOfTrue()); 271 PrivateObjectLookup(Symbols::_simpleInstanceOfTrue());
254 simple_instance_of_false_function_ = 272 simple_instance_of_false_function_ =
255 PrivateObjectLookup(Symbols::_simpleInstanceOfFalse()); 273 PrivateObjectLookup(Symbols::_simpleInstanceOfFalse());
256 #endif 274 #endif
257 } 275 }
258 276
259 } // namespace dart 277 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/object_store.h ('k') | runtime/vm/parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698