OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_DEBUG_DEBUG_H_ | 5 #ifndef V8_DEBUG_DEBUG_H_ |
6 #define V8_DEBUG_DEBUG_H_ | 6 #define V8_DEBUG_DEBUG_H_ |
7 | 7 |
8 #include "src/allocation.h" | 8 #include "src/allocation.h" |
9 #include "src/assembler.h" | 9 #include "src/assembler.h" |
10 #include "src/base/atomicops.h" | 10 #include "src/base/atomicops.h" |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 | 58 |
59 enum DebugBreakType { | 59 enum DebugBreakType { |
60 NOT_DEBUG_BREAK, | 60 NOT_DEBUG_BREAK, |
61 DEBUGGER_STATEMENT, | 61 DEBUGGER_STATEMENT, |
62 DEBUG_BREAK_SLOT, | 62 DEBUG_BREAK_SLOT, |
63 DEBUG_BREAK_SLOT_AT_CALL, | 63 DEBUG_BREAK_SLOT_AT_CALL, |
64 DEBUG_BREAK_SLOT_AT_RETURN, | 64 DEBUG_BREAK_SLOT_AT_RETURN, |
65 DEBUG_BREAK_SLOT_AT_TAIL_CALL, | 65 DEBUG_BREAK_SLOT_AT_TAIL_CALL, |
66 }; | 66 }; |
67 | 67 |
| 68 enum IgnoreBreakMode { |
| 69 kIgnoreIfAllFramesBlackboxed, |
| 70 kIgnoreIfTopFrameBlackboxed |
| 71 }; |
| 72 |
68 class BreakLocation { | 73 class BreakLocation { |
69 public: | 74 public: |
70 static BreakLocation FromFrame(Handle<DebugInfo> debug_info, | 75 static BreakLocation FromFrame(Handle<DebugInfo> debug_info, |
71 JavaScriptFrame* frame); | 76 JavaScriptFrame* frame); |
72 | 77 |
73 static void AllAtCurrentStatement(Handle<DebugInfo> debug_info, | 78 static void AllAtCurrentStatement(Handle<DebugInfo> debug_info, |
74 JavaScriptFrame* frame, | 79 JavaScriptFrame* frame, |
75 List<BreakLocation>* result_out); | 80 List<BreakLocation>* result_out); |
76 | 81 |
77 inline bool IsReturn() const { return type_ == DEBUG_BREAK_SLOT_AT_RETURN; } | 82 inline bool IsReturn() const { return type_ == DEBUG_BREAK_SLOT_AT_RETURN; } |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 void OnThrow(Handle<Object> exception); | 274 void OnThrow(Handle<Object> exception); |
270 void OnPromiseReject(Handle<Object> promise, Handle<Object> value); | 275 void OnPromiseReject(Handle<Object> promise, Handle<Object> value); |
271 void OnCompileError(Handle<Script> script); | 276 void OnCompileError(Handle<Script> script); |
272 void OnAfterCompile(Handle<Script> script); | 277 void OnAfterCompile(Handle<Script> script); |
273 void OnAsyncTaskEvent(debug::PromiseDebugActionType type, int id, | 278 void OnAsyncTaskEvent(debug::PromiseDebugActionType type, int id, |
274 int parent_id); | 279 int parent_id); |
275 | 280 |
276 MUST_USE_RESULT MaybeHandle<Object> Call(Handle<Object> fun, | 281 MUST_USE_RESULT MaybeHandle<Object> Call(Handle<Object> fun, |
277 Handle<Object> data); | 282 Handle<Object> data); |
278 Handle<Context> GetDebugContext(); | 283 Handle<Context> GetDebugContext(); |
279 void HandleDebugBreak(); | 284 void HandleDebugBreak(IgnoreBreakMode ignore_break_mode); |
280 | 285 |
281 // Internal logic | 286 // Internal logic |
282 bool Load(); | 287 bool Load(); |
283 void Break(JavaScriptFrame* frame); | 288 void Break(JavaScriptFrame* frame); |
284 | 289 |
285 // Scripts handling. | 290 // Scripts handling. |
286 Handle<FixedArray> GetLoadedScripts(); | 291 Handle<FixedArray> GetLoadedScripts(); |
287 | 292 |
288 // Break point handling. | 293 // Break point handling. |
289 bool SetBreakPoint(Handle<JSFunction> function, | 294 bool SetBreakPoint(Handle<JSFunction> function, |
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
794 Handle<Code> code); | 799 Handle<Code> code); |
795 static bool DebugBreakSlotIsPatched(Address pc); | 800 static bool DebugBreakSlotIsPatched(Address pc); |
796 static void ClearDebugBreakSlot(Isolate* isolate, Address pc); | 801 static void ClearDebugBreakSlot(Isolate* isolate, Address pc); |
797 }; | 802 }; |
798 | 803 |
799 | 804 |
800 } // namespace internal | 805 } // namespace internal |
801 } // namespace v8 | 806 } // namespace v8 |
802 | 807 |
803 #endif // V8_DEBUG_DEBUG_H_ | 808 #endif // V8_DEBUG_DEBUG_H_ |
OLD | NEW |