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

Side by Side Diff: runtime/vm/debugger.h

Issue 11946020: Check whether exceptions are caught (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | runtime/vm/debugger.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) 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_DEBUGGER_H_ 5 #ifndef VM_DEBUGGER_H_
6 #define VM_DEBUGGER_H_ 6 #define VM_DEBUGGER_H_
7 7
8 #include "include/dart_debugger_api.h" 8 #include "include/dart_debugger_api.h"
9 9
10 #include "vm/object.h" 10 #include "vm/object.h"
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 String* name, 147 String* name,
148 intptr_t* token_pos, 148 intptr_t* token_pos,
149 intptr_t* end_pos, 149 intptr_t* end_pos,
150 Instance* value); 150 Instance* value);
151 151
152 RawArray* GetLocalVariables(); 152 RawArray* GetLocalVariables();
153 RawContext* CallerContext(); 153 RawContext* CallerContext();
154 154
155 private: 155 private:
156 intptr_t PcDescIndex(); 156 intptr_t PcDescIndex();
157 intptr_t TryIndex();
157 void GetPcDescriptors(); 158 void GetPcDescriptors();
158 void GetVarDescriptors(); 159 void GetVarDescriptors();
159 void GetDescIndices(); 160 void GetDescIndices();
160 RawInstance* GetLocalVarValue(intptr_t slot_index); 161 RawInstance* GetLocalVarValue(intptr_t slot_index);
161 RawInstance* GetInstanceCallReceiver(intptr_t num_actual_args); 162 RawInstance* GetInstanceCallReceiver(intptr_t num_actual_args);
162 163
163 uword pc_; 164 uword pc_;
164 uword fp_; 165 uword fp_;
165 uword sp_; 166 uword sp_;
166 167
167 // The anchor of the context chain for this function. 168 // The anchor of the context chain for this function.
168 const Context& ctx_; 169 const Context& ctx_;
169 170
170 Function& function_; 171 Function& function_;
171 Code& code_; 172 Code& code_;
172 intptr_t token_pos_; 173 intptr_t token_pos_;
173 intptr_t pc_desc_index_; 174 intptr_t pc_desc_index_;
174 intptr_t line_number_; 175 intptr_t line_number_;
175 intptr_t context_level_; 176 intptr_t context_level_;
176 177
177 bool vars_initialized_; 178 bool vars_initialized_;
178 LocalVarDescriptors& var_descriptors_; 179 LocalVarDescriptors& var_descriptors_;
179 ZoneGrowableArray<intptr_t> desc_indices_; 180 ZoneGrowableArray<intptr_t> desc_indices_;
180 PcDescriptors& pc_desc_; 181 PcDescriptors& pc_desc_;
181 182
182 friend class Debugger; 183 friend class Debugger;
184 friend class DebuggerStackTrace;
183 DISALLOW_COPY_AND_ASSIGN(ActivationFrame); 185 DISALLOW_COPY_AND_ASSIGN(ActivationFrame);
184 }; 186 };
185 187
186 188
187 // Array of function activations on the call stack. 189 // Array of function activations on the call stack.
188 class DebuggerStackTrace : public ZoneAllocated { 190 class DebuggerStackTrace : public ZoneAllocated {
189 public: 191 public:
190 explicit DebuggerStackTrace(int capacity) 192 explicit DebuggerStackTrace(int capacity)
191 : trace_(capacity) { } 193 : trace_(capacity) { }
192 194
193 intptr_t Length() const { return trace_.length(); } 195 intptr_t Length() const { return trace_.length(); }
194 196
195 ActivationFrame* ActivationFrameAt(int i) const { 197 ActivationFrame* ActivationFrameAt(int i) const {
196 ASSERT(i < trace_.length()); 198 ASSERT(i < trace_.length());
197 return trace_[i]; 199 return trace_[i];
198 } 200 }
201 ActivationFrame* GetHandlerFrame(const Instance& exc_obj) const;
199 private: 202 private:
200 void AddActivation(ActivationFrame* frame); 203 void AddActivation(ActivationFrame* frame);
201 ZoneGrowableArray<ActivationFrame*> trace_; 204 ZoneGrowableArray<ActivationFrame*> trace_;
202 205
203 friend class Debugger; 206 friend class Debugger;
204 DISALLOW_COPY_AND_ASSIGN(DebuggerStackTrace); 207 DISALLOW_COPY_AND_ASSIGN(DebuggerStackTrace);
205 }; 208 };
206 209
207 210
208 typedef void BreakpointHandler(Dart_Port isolate_id, 211 typedef void BreakpointHandler(Dart_Port isolate_id,
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 // Utility functions. 289 // Utility functions.
287 static const char* QualifiedFunctionName(const Function& func); 290 static const char* QualifiedFunctionName(const Function& func);
288 291
289 RawObject* GetInstanceField(const Class& cls, 292 RawObject* GetInstanceField(const Class& cls,
290 const String& field_name, 293 const String& field_name,
291 const Instance& object); 294 const Instance& object);
292 RawObject* GetStaticField(const Class& cls, 295 RawObject* GetStaticField(const Class& cls,
293 const String& field_name); 296 const String& field_name);
294 297
295 void SignalBpReached(); 298 void SignalBpReached();
296 void SignalExceptionThrown(const Object& exc); 299 void SignalExceptionThrown(const Instance& exc);
297 static void SignalIsolateEvent(EventType type); 300 static void SignalIsolateEvent(EventType type);
298 301
299 private: 302 private:
300 enum ResumeAction { 303 enum ResumeAction {
301 kContinue, 304 kContinue,
302 kStepOver, 305 kStepOver,
303 kStepInto, 306 kStepInto,
304 kStepOut 307 kStepOut
305 }; 308 };
306 309
(...skipping 18 matching lines...) Expand all
325 void SyncBreakpoint(SourceBreakpoint* bpt); 328 void SyncBreakpoint(SourceBreakpoint* bpt);
326 329
327 DebuggerStackTrace* CollectStackTrace(); 330 DebuggerStackTrace* CollectStackTrace();
328 void SignalBpResolved(SourceBreakpoint *bpt); 331 void SignalBpResolved(SourceBreakpoint *bpt);
329 332
330 bool IsDebuggable(const Function& func); 333 bool IsDebuggable(const Function& func);
331 334
332 intptr_t nextId() { return next_id_++; } 335 intptr_t nextId() { return next_id_++; }
333 336
334 bool ShouldPauseOnException(DebuggerStackTrace* stack_trace, 337 bool ShouldPauseOnException(DebuggerStackTrace* stack_trace,
335 const Object& exc); 338 const Instance& exc);
336 339
337 void CollectLibraryFields(const GrowableObjectArray& field_list, 340 void CollectLibraryFields(const GrowableObjectArray& field_list,
338 const Library& lib, 341 const Library& lib,
339 const String& prefix, 342 const String& prefix,
340 bool include_private_fields); 343 bool include_private_fields);
341 344
342 Isolate* isolate_; 345 Isolate* isolate_;
343 Dart_Port isolate_id_; // A unique ID for the isolate in the debugger. 346 Dart_Port isolate_id_; // A unique ID for the isolate in the debugger.
344 bool initialized_; 347 bool initialized_;
345 348
(...skipping 26 matching lines...) Expand all
372 static EventHandler* event_handler_; 375 static EventHandler* event_handler_;
373 376
374 friend class SourceBreakpoint; 377 friend class SourceBreakpoint;
375 DISALLOW_COPY_AND_ASSIGN(Debugger); 378 DISALLOW_COPY_AND_ASSIGN(Debugger);
376 }; 379 };
377 380
378 381
379 } // namespace dart 382 } // namespace dart
380 383
381 #endif // VM_DEBUGGER_H_ 384 #endif // VM_DEBUGGER_H_
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/debugger.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698