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

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

Issue 1241673003: Async-step, first cut. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 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
« no previous file with comments | « runtime/observatory/tests/service/test_helper.dart ('k') | 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_tools_api.h" 8 #include "include/dart_tools_api.h"
9 9
10 #include "vm/object.h" 10 #include "vm/object.h"
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 intptr_t* token_pos, 254 intptr_t* token_pos,
255 intptr_t* end_pos, 255 intptr_t* end_pos,
256 Object* value); 256 Object* value);
257 257
258 RawArray* GetLocalVariables(); 258 RawArray* GetLocalVariables();
259 RawObject* GetParameter(intptr_t index); 259 RawObject* GetParameter(intptr_t index);
260 RawObject* GetClosure(); 260 RawObject* GetClosure();
261 RawObject* GetReceiver(); 261 RawObject* GetReceiver();
262 262
263 const Context& GetSavedCurrentContext(); 263 const Context& GetSavedCurrentContext();
264 RawObject* GetAsyncOperation();
264 265
265 RawObject* Evaluate(const String& expr); 266 RawObject* Evaluate(const String& expr);
266 267
267 // Print the activation frame into |jsobj|. if |full| is false, script 268 // Print the activation frame into |jsobj|. if |full| is false, script
268 // and local variable objects are only references. if |full| is true, 269 // and local variable objects are only references. if |full| is true,
269 // the complete script, function, and, local variable objects are included. 270 // the complete script, function, and, local variable objects are included.
270 void PrintToJSONObject(JSONObject* jsobj, bool full = false); 271 void PrintToJSONObject(JSONObject* jsobj, bool full = false);
271 272
272 private: 273 private:
273 void PrintContextMismatchError(const String& var_name, 274 void PrintContextMismatchError(intptr_t ctx_slot,
274 intptr_t ctx_slot,
275 intptr_t frame_ctx_level, 275 intptr_t frame_ctx_level,
276 intptr_t var_ctx_level); 276 intptr_t var_ctx_level);
277 277
278 intptr_t TryIndex(); 278 intptr_t TryIndex();
279 void GetPcDescriptors(); 279 void GetPcDescriptors();
280 void GetVarDescriptors(); 280 void GetVarDescriptors();
281 void GetDescIndices(); 281 void GetDescIndices();
282 282
283 RawObject* GetLocalVar(intptr_t slot_index); 283 RawObject* GetStackVar(intptr_t slot_index);
284 RawInstance* GetLocalInstanceVar(intptr_t slot_index); 284 RawObject* GetContextVar(intptr_t ctxt_level, intptr_t slot_index);
285 285
286 uword pc_; 286 uword pc_;
287 uword fp_; 287 uword fp_;
288 uword sp_; 288 uword sp_;
289 289
290 // The anchor of the context chain for this function. 290 // The anchor of the context chain for this function.
291 Context& ctx_; 291 Context& ctx_;
292 const Code& code_; 292 const Code& code_;
293 const Function& function_; 293 const Function& function_;
294 bool token_pos_initialized_; 294 bool token_pos_initialized_;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 kIsolateCreated = 4, 346 kIsolateCreated = 4,
347 kIsolateShutdown = 5, 347 kIsolateShutdown = 5,
348 kIsolateInterrupted = 6, 348 kIsolateInterrupted = 6,
349 }; 349 };
350 350
351 explicit DebuggerEvent(Isolate* isolate, EventType event_type) 351 explicit DebuggerEvent(Isolate* isolate, EventType event_type)
352 : isolate_(isolate), 352 : isolate_(isolate),
353 type_(event_type), 353 type_(event_type),
354 top_frame_(NULL), 354 top_frame_(NULL),
355 breakpoint_(NULL), 355 breakpoint_(NULL),
356 exception_(NULL) {} 356 exception_(NULL),
357 async_continuation_(NULL) {}
357 358
358 Isolate* isolate() const { return isolate_; } 359 Isolate* isolate() const { return isolate_; }
359 360
360 EventType type() const { return type_; } 361 EventType type() const { return type_; }
361 362
362 bool IsPauseEvent() const { 363 bool IsPauseEvent() const {
363 return (type_ == kBreakpointReached || 364 return (type_ == kBreakpointReached ||
364 type_ == kIsolateInterrupted || 365 type_ == kIsolateInterrupted ||
365 type_ == kExceptionThrown); 366 type_ == kExceptionThrown);
366 } 367 }
(...skipping 18 matching lines...) Expand all
385 386
386 const Object* exception() const { 387 const Object* exception() const {
387 ASSERT(type_ == kExceptionThrown); 388 ASSERT(type_ == kExceptionThrown);
388 return exception_; 389 return exception_;
389 } 390 }
390 void set_exception(const Object* exception) { 391 void set_exception(const Object* exception) {
391 ASSERT(type_ == kExceptionThrown); 392 ASSERT(type_ == kExceptionThrown);
392 exception_ = exception; 393 exception_ = exception;
393 } 394 }
394 395
396 const Object* async_continuation() const {
397 ASSERT(type_ == kBreakpointReached);
398 return async_continuation_;
399 }
400 void set_async_continuation(const Object* closure) {
401 ASSERT(type_ == kBreakpointReached);
402 async_continuation_ = closure;
403 }
404
395 Dart_Port isolate_id() const { 405 Dart_Port isolate_id() const {
396 return isolate_->main_port(); 406 return isolate_->main_port();
397 } 407 }
398 408
399 private: 409 private:
400 Isolate* isolate_; 410 Isolate* isolate_;
401 EventType type_; 411 EventType type_;
402 ActivationFrame* top_frame_; 412 ActivationFrame* top_frame_;
403 Breakpoint* breakpoint_; 413 Breakpoint* breakpoint_;
404 const Object* exception_; 414 const Object* exception_;
415 const Object* async_continuation_;
405 }; 416 };
406 417
407 418
408 class Debugger { 419 class Debugger {
409 public: 420 public:
410 typedef void EventHandler(DebuggerEvent* event); 421 typedef void EventHandler(DebuggerEvent* event);
411 422
412 Debugger(); 423 Debugger();
413 ~Debugger(); 424 ~Debugger();
414 425
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 644
634 friend class Isolate; 645 friend class Isolate;
635 friend class BreakpointLocation; 646 friend class BreakpointLocation;
636 DISALLOW_COPY_AND_ASSIGN(Debugger); 647 DISALLOW_COPY_AND_ASSIGN(Debugger);
637 }; 648 };
638 649
639 650
640 } // namespace dart 651 } // namespace dart
641 652
642 #endif // VM_DEBUGGER_H_ 653 #endif // VM_DEBUGGER_H_
OLDNEW
« no previous file with comments | « runtime/observatory/tests/service/test_helper.dart ('k') | runtime/vm/debugger.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698