Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/bootstrap_natives.h" | 5 #include "vm/bootstrap_natives.h" |
| 6 #include "vm/exceptions.h" | 6 #include "vm/exceptions.h" |
| 7 #include "vm/object_store.h" | 7 #include "vm/object_store.h" |
| 8 #include "vm/runtime_entry.h" | 8 #include "vm/runtime_entry.h" |
| 9 #include "vm/stack_frame.h" | 9 #include "vm/stack_frame.h" |
| 10 | 10 |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 41 GrowableObjectArray::Handle(GrowableObjectArray::New()); | 41 GrowableObjectArray::Handle(GrowableObjectArray::New()); |
| 42 IterateFrames(code_list, pc_offset_list); | 42 IterateFrames(code_list, pc_offset_list); |
| 43 const Array& code_array = Array::Handle(Array::MakeArray(code_list)); | 43 const Array& code_array = Array::Handle(Array::MakeArray(code_list)); |
| 44 const Array& pc_offset_array = | 44 const Array& pc_offset_array = |
| 45 Array::Handle(Array::MakeArray(pc_offset_list)); | 45 Array::Handle(Array::MakeArray(pc_offset_list)); |
| 46 const Stacktrace& stacktrace = Stacktrace::Handle( | 46 const Stacktrace& stacktrace = Stacktrace::Handle( |
| 47 Stacktrace::New(code_array, pc_offset_array)); | 47 Stacktrace::New(code_array, pc_offset_array)); |
| 48 OS::PrintErr("=== Current Trace:\n%s===\n", stacktrace.ToCString()); | 48 OS::PrintErr("=== Current Trace:\n%s===\n", stacktrace.ToCString()); |
| 49 } | 49 } |
| 50 | 50 |
| 51 DEFINE_NATIVE_ENTRY(StackTrace_current, 0) { | |
| 52 const GrowableObjectArray& code_list = | |
| 53 GrowableObjectArray::Handle(GrowableObjectArray::New()); | |
| 54 const GrowableObjectArray& pc_offset_list = | |
| 55 GrowableObjectArray::Handle(GrowableObjectArray::New()); | |
| 56 // Skip the StackFrame.current frame. | |
| 57 IterateFrames(code_list, pc_offset_list); | |
| 58 const Array& code_array = Array::Handle(Array::MakeArray(code_list)); | |
| 59 const Array& pc_offset_array = | |
| 60 Array::Handle(Array::MakeArray(pc_offset_list)); | |
| 61 const Stacktrace& stacktrace = Stacktrace::Handle( | |
| 62 Stacktrace::New(code_array, pc_offset_array)); | |
| 63 return stacktrace.raw(); | |
| 64 } | |
|
Lasse Reichstein Nielsen
2015/11/18 10:11:38
The VM even has the option of dropping the first s
| |
| 65 | |
| 66 | |
| 51 } // namespace dart | 67 } // namespace dart |
| OLD | NEW |