Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 #ifndef VM_OBJECT_H_ | 5 #ifndef VM_OBJECT_H_ |
| 6 #define VM_OBJECT_H_ | 6 #define VM_OBJECT_H_ |
| 7 | 7 |
| 8 #include "include/dart_api.h" | 8 #include "include/dart_api.h" |
| 9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
| 10 #include "platform/utils.h" | 10 #include "platform/utils.h" |
| (...skipping 6054 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6065 } | 6065 } |
| 6066 static intptr_t NextFieldOffset() { | 6066 static intptr_t NextFieldOffset() { |
| 6067 // Indicates this class cannot be extended by dart code. | 6067 // Indicates this class cannot be extended by dart code. |
| 6068 return -kWordSize; | 6068 return -kWordSize; |
| 6069 } | 6069 } |
| 6070 | 6070 |
| 6071 friend class Class; | 6071 friend class Class; |
| 6072 }; | 6072 }; |
| 6073 | 6073 |
| 6074 | 6074 |
| 6075 class ExceptionStackTrace; | |
|
rmacnak
2013/11/07 21:31:12
Move to top of file?
| |
| 6076 class ExceptionStackFrame; | |
| 6077 | |
| 6075 // Internal stacktrace object used in exceptions for printing stack traces. | 6078 // Internal stacktrace object used in exceptions for printing stack traces. |
| 6076 class Stacktrace : public Instance { | 6079 class Stacktrace : public Instance { |
| 6077 public: | 6080 public: |
| 6078 static const int kPreallocatedStackdepth = 10; | 6081 static const int kPreallocatedStackdepth = 10; |
| 6079 | 6082 |
| 6080 intptr_t Length() const; | 6083 intptr_t Length() const; |
| 6081 | 6084 |
| 6082 RawFunction* FunctionAtFrame(intptr_t frame_index) const; | 6085 RawFunction* FunctionAtFrame(intptr_t frame_index) const; |
| 6083 | 6086 |
| 6084 RawCode* CodeAtFrame(intptr_t frame_index) const; | 6087 RawCode* CodeAtFrame(intptr_t frame_index) const; |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 6095 static intptr_t InstanceSize() { | 6098 static intptr_t InstanceSize() { |
| 6096 return RoundedAllocationSize(sizeof(RawStacktrace)); | 6099 return RoundedAllocationSize(sizeof(RawStacktrace)); |
| 6097 } | 6100 } |
| 6098 static RawStacktrace* New(const Array& code_array, | 6101 static RawStacktrace* New(const Array& code_array, |
| 6099 const Array& pc_offset_array, | 6102 const Array& pc_offset_array, |
| 6100 Heap::Space space = Heap::kNew); | 6103 Heap::Space space = Heap::kNew); |
| 6101 | 6104 |
| 6102 RawString* FullStacktrace() const; | 6105 RawString* FullStacktrace() const; |
| 6103 const char* ToCStringInternal(intptr_t* frame_index) const; | 6106 const char* ToCStringInternal(intptr_t* frame_index) const; |
| 6104 | 6107 |
| 6108 ExceptionStackTrace* BuildExceptionStackTrace() const; | |
|
rmacnak
2013/11/07 21:31:12
Ditto bad name.
| |
| 6109 | |
| 6105 private: | 6110 private: |
| 6106 void set_code_array(const Array& code_array) const; | 6111 void set_code_array(const Array& code_array) const; |
| 6107 void set_pc_offset_array(const Array& pc_offset_array) const; | 6112 void set_pc_offset_array(const Array& pc_offset_array) const; |
| 6108 void set_catch_code_array(const Array& code_array) const; | 6113 void set_catch_code_array(const Array& code_array) const; |
| 6109 void set_catch_pc_offset_array(const Array& pc_offset_array) const; | 6114 void set_catch_pc_offset_array(const Array& pc_offset_array) const; |
| 6110 bool expand_inlined() const; | 6115 bool expand_inlined() const; |
| 6111 | 6116 |
| 6112 FINAL_HEAP_OBJECT_IMPLEMENTATION(Stacktrace, Instance); | 6117 FINAL_HEAP_OBJECT_IMPLEMENTATION(Stacktrace, Instance); |
| 6113 friend class Class; | 6118 friend class Class; |
| 6114 }; | 6119 }; |
| 6115 | 6120 |
| 6116 | 6121 |
| 6122 // Constructed and handed out by the API to avoid repeatedly iterating through | |
| 6123 // frames to expand inlined frames and skip invisible frames. | |
| 6124 // Cf. DebuggerStackTrace. | |
| 6125 class ExceptionStackTrace : public ZoneAllocated { | |
| 6126 public: | |
| 6127 explicit ExceptionStackTrace(int capacity) | |
| 6128 : frames_(capacity) { } | |
| 6129 | |
| 6130 intptr_t Length() const { return frames_.length(); } | |
| 6131 | |
| 6132 ExceptionStackFrame* FrameAt(int i) const { return frames_[i]; } | |
| 6133 | |
| 6134 private: | |
| 6135 void AddFrame(ExceptionStackFrame* frame) { frames_.Add(frame); } | |
| 6136 ZoneGrowableArray<ExceptionStackFrame*> frames_; | |
| 6137 | |
| 6138 friend class Stacktrace; | |
| 6139 friend class Debugger; | |
| 6140 DISALLOW_COPY_AND_ASSIGN(ExceptionStackTrace); | |
| 6141 }; | |
| 6142 | |
| 6143 | |
| 6144 class ExceptionStackFrame : public ZoneAllocated { | |
| 6145 public: | |
| 6146 explicit ExceptionStackFrame( | |
| 6147 String& function_name, | |
| 6148 String& script_uri, | |
| 6149 intptr_t line_number, | |
| 6150 intptr_t column_number) | |
| 6151 : function_name_(String::ZoneHandle(function_name.raw())), | |
| 6152 script_uri_(String::ZoneHandle(script_uri.raw())), | |
| 6153 line_number_(line_number), | |
| 6154 column_number_(column_number) { } | |
| 6155 | |
| 6156 RawString* function_name() const { return function_name_.raw(); } | |
| 6157 RawString* script_uri() const { return script_uri_.raw(); } | |
| 6158 intptr_t line_number() const { return line_number_; } | |
| 6159 intptr_t column_number() const { return column_number_; } | |
| 6160 | |
| 6161 private: | |
| 6162 const String& function_name_; | |
| 6163 const String& script_uri_; | |
| 6164 const intptr_t line_number_; | |
| 6165 const intptr_t column_number_; | |
| 6166 | |
| 6167 friend class Stacktrace; | |
| 6168 DISALLOW_COPY_AND_ASSIGN(ExceptionStackFrame); | |
| 6169 }; | |
| 6170 | |
| 6171 | |
| 6117 // Internal JavaScript regular expression object. | 6172 // Internal JavaScript regular expression object. |
| 6118 class JSRegExp : public Instance { | 6173 class JSRegExp : public Instance { |
| 6119 public: | 6174 public: |
| 6120 // Meaning of RegExType: | 6175 // Meaning of RegExType: |
| 6121 // kUninitialized: the type of th regexp has not been initialized yet. | 6176 // kUninitialized: the type of th regexp has not been initialized yet. |
| 6122 // kSimple: A simple pattern to match against, using string indexOf operation. | 6177 // kSimple: A simple pattern to match against, using string indexOf operation. |
| 6123 // kComplex: A complex pattern to match. | 6178 // kComplex: A complex pattern to match. |
| 6124 enum RegExType { | 6179 enum RegExType { |
| 6125 kUnitialized = 0, | 6180 kUnitialized = 0, |
| 6126 kSimple, | 6181 kSimple, |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6381 | 6436 |
| 6382 | 6437 |
| 6383 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, | 6438 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, |
| 6384 intptr_t index) { | 6439 intptr_t index) { |
| 6385 return array.At((index * kEntryLength) + kTargetFunctionIndex); | 6440 return array.At((index * kEntryLength) + kTargetFunctionIndex); |
| 6386 } | 6441 } |
| 6387 | 6442 |
| 6388 } // namespace dart | 6443 } // namespace dart |
| 6389 | 6444 |
| 6390 #endif // VM_OBJECT_H_ | 6445 #endif // VM_OBJECT_H_ |
| OLD | NEW |