OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 }; | 72 }; |
73 | 73 |
74 | 74 |
75 // Type of exception break. NOTE: These values are in macros.py as well. | 75 // Type of exception break. NOTE: These values are in macros.py as well. |
76 enum BreakLocatorType { | 76 enum BreakLocatorType { |
77 ALL_BREAK_LOCATIONS = 0, | 77 ALL_BREAK_LOCATIONS = 0, |
78 SOURCE_BREAK_LOCATIONS = 1 | 78 SOURCE_BREAK_LOCATIONS = 1 |
79 }; | 79 }; |
80 | 80 |
81 | 81 |
82 // The different types of breakpoint position alignments. | |
83 // Must match Debug.BreakPositionAlignment in debug-debugger.js | |
84 enum BreakPositionAlignment { | |
85 STATEMENT_ALIGNED = 0, | |
86 BREAK_POSITION_ALIGNED = 1 | |
87 }; | |
88 | |
89 | |
90 // Class for iterating through the break points in a function and changing | 82 // Class for iterating through the break points in a function and changing |
91 // them. | 83 // them. |
92 class BreakLocationIterator { | 84 class BreakLocationIterator { |
93 public: | 85 public: |
94 explicit BreakLocationIterator(Handle<DebugInfo> debug_info, | 86 explicit BreakLocationIterator(Handle<DebugInfo> debug_info, |
95 BreakLocatorType type); | 87 BreakLocatorType type); |
96 virtual ~BreakLocationIterator(); | 88 virtual ~BreakLocationIterator(); |
97 | 89 |
98 void Next(); | 90 void Next(); |
99 void Next(int count); | 91 void Next(int count); |
100 void FindBreakLocationFromAddress(Address pc); | 92 void FindBreakLocationFromAddress(Address pc); |
101 void FindBreakLocationFromPosition(int position, | 93 void FindBreakLocationFromPosition(int position); |
102 BreakPositionAlignment alignment); | |
103 void Reset(); | 94 void Reset(); |
104 bool Done() const; | 95 bool Done() const; |
105 void SetBreakPoint(Handle<Object> break_point_object); | 96 void SetBreakPoint(Handle<Object> break_point_object); |
106 void ClearBreakPoint(Handle<Object> break_point_object); | 97 void ClearBreakPoint(Handle<Object> break_point_object); |
107 void SetOneShot(); | 98 void SetOneShot(); |
108 void ClearOneShot(); | 99 void ClearOneShot(); |
109 bool IsStepInLocation(Isolate* isolate); | 100 bool IsStepInLocation(Isolate* isolate); |
110 void PrepareStepIn(Isolate* isolate); | 101 void PrepareStepIn(Isolate* isolate); |
111 bool IsExit() const; | 102 bool IsExit() const; |
112 bool HasBreakPoint(); | 103 bool HasBreakPoint(); |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 bool InDebugger() { return thread_local_.debugger_entry_ != NULL; } | 234 bool InDebugger() { return thread_local_.debugger_entry_ != NULL; } |
244 void PreemptionWhileInDebugger(); | 235 void PreemptionWhileInDebugger(); |
245 void Iterate(ObjectVisitor* v); | 236 void Iterate(ObjectVisitor* v); |
246 | 237 |
247 Object* Break(Arguments args); | 238 Object* Break(Arguments args); |
248 void SetBreakPoint(Handle<JSFunction> function, | 239 void SetBreakPoint(Handle<JSFunction> function, |
249 Handle<Object> break_point_object, | 240 Handle<Object> break_point_object, |
250 int* source_position); | 241 int* source_position); |
251 bool SetBreakPointForScript(Handle<Script> script, | 242 bool SetBreakPointForScript(Handle<Script> script, |
252 Handle<Object> break_point_object, | 243 Handle<Object> break_point_object, |
253 int* source_position, | 244 int* source_position); |
254 BreakPositionAlignment alignment); | |
255 void ClearBreakPoint(Handle<Object> break_point_object); | 245 void ClearBreakPoint(Handle<Object> break_point_object); |
256 void ClearAllBreakPoints(); | 246 void ClearAllBreakPoints(); |
257 void FloodWithOneShot(Handle<JSFunction> function); | 247 void FloodWithOneShot(Handle<JSFunction> function); |
258 void FloodBoundFunctionWithOneShot(Handle<JSFunction> function); | 248 void FloodBoundFunctionWithOneShot(Handle<JSFunction> function); |
259 void FloodHandlerWithOneShot(); | 249 void FloodHandlerWithOneShot(); |
260 void ChangeBreakOnException(ExceptionBreakType type, bool enable); | 250 void ChangeBreakOnException(ExceptionBreakType type, bool enable); |
261 bool IsBreakOnException(ExceptionBreakType type); | 251 bool IsBreakOnException(ExceptionBreakType type); |
262 void PrepareStep(StepAction step_action, int step_count); | 252 void PrepareStep(StepAction step_action, int step_count); |
263 void ClearStepping(); | 253 void ClearStepping(); |
264 void ClearStepOut(); | 254 void ClearStepOut(); |
(...skipping 22 matching lines...) Expand all Loading... |
287 | 277 |
288 // Check whether a code stub with the specified major key is a possible break | 278 // Check whether a code stub with the specified major key is a possible break |
289 // point location. | 279 // point location. |
290 static bool IsSourceBreakStub(Code* code); | 280 static bool IsSourceBreakStub(Code* code); |
291 static bool IsBreakStub(Code* code); | 281 static bool IsBreakStub(Code* code); |
292 | 282 |
293 // Find the builtin to use for invoking the debug break | 283 // Find the builtin to use for invoking the debug break |
294 static Handle<Code> FindDebugBreak(Handle<Code> code, RelocInfo::Mode mode); | 284 static Handle<Code> FindDebugBreak(Handle<Code> code, RelocInfo::Mode mode); |
295 | 285 |
296 static Handle<Object> GetSourceBreakLocations( | 286 static Handle<Object> GetSourceBreakLocations( |
297 Handle<SharedFunctionInfo> shared, | 287 Handle<SharedFunctionInfo> shared); |
298 BreakPositionAlignment position_aligment); | |
299 | 288 |
300 // Getter for the debug_context. | 289 // Getter for the debug_context. |
301 inline Handle<Context> debug_context() { return debug_context_; } | 290 inline Handle<Context> debug_context() { return debug_context_; } |
302 | 291 |
303 // Check whether a global object is the debug global object. | 292 // Check whether a global object is the debug global object. |
304 bool IsDebugGlobal(GlobalObject* global); | 293 bool IsDebugGlobal(GlobalObject* global); |
305 | 294 |
306 // Check whether this frame is just about to return. | 295 // Check whether this frame is just about to return. |
307 bool IsBreakAtReturn(JavaScriptFrame* frame); | 296 bool IsBreakAtReturn(JavaScriptFrame* frame); |
308 | 297 |
(...skipping 752 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1061 | 1050 |
1062 DISALLOW_COPY_AND_ASSIGN(MessageDispatchHelperThread); | 1051 DISALLOW_COPY_AND_ASSIGN(MessageDispatchHelperThread); |
1063 }; | 1052 }; |
1064 | 1053 |
1065 | 1054 |
1066 } } // namespace v8::internal | 1055 } } // namespace v8::internal |
1067 | 1056 |
1068 #endif // ENABLE_DEBUGGER_SUPPORT | 1057 #endif // ENABLE_DEBUGGER_SUPPORT |
1069 | 1058 |
1070 #endif // V8_DEBUG_H_ | 1059 #endif // V8_DEBUG_H_ |
OLD | NEW |