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

Side by Side Diff: src/debug.h

Issue 264233005: Clean up stack guard interrupts. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: addressed comments Created 6 years, 7 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
OLDNEW
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_H_ 5 #ifndef V8_DEBUG_H_
6 #define V8_DEBUG_H_ 6 #define V8_DEBUG_H_
7 7
8 #include "allocation.h" 8 #include "allocation.h"
9 #include "arguments.h" 9 #include "arguments.h"
10 #include "assembler.h" 10 #include "assembler.h"
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 // This class controls the debug info for all functions which currently have 209 // This class controls the debug info for all functions which currently have
210 // active breakpoints in them. This debug info is held in the heap root object 210 // active breakpoints in them. This debug info is held in the heap root object
211 // debug_info which is a FixedArray. Each entry in this list is of class 211 // debug_info which is a FixedArray. Each entry in this list is of class
212 // DebugInfo. 212 // DebugInfo.
213 class Debug { 213 class Debug {
214 public: 214 public:
215 bool Load(); 215 bool Load();
216 void Unload(); 216 void Unload();
217 bool IsLoaded() { return !debug_context_.is_null(); } 217 bool IsLoaded() { return !debug_context_.is_null(); }
218 bool InDebugger() { return thread_local_.debugger_entry_ != NULL; } 218 bool InDebugger() { return thread_local_.debugger_entry_ != NULL; }
219 void PreemptionWhileInDebugger();
220 219
221 Object* Break(Arguments args); 220 Object* Break(Arguments args);
222 void SetBreakPoint(Handle<JSFunction> function, 221 void SetBreakPoint(Handle<JSFunction> function,
223 Handle<Object> break_point_object, 222 Handle<Object> break_point_object,
224 int* source_position); 223 int* source_position);
225 bool SetBreakPointForScript(Handle<Script> script, 224 bool SetBreakPointForScript(Handle<Script> script,
226 Handle<Object> break_point_object, 225 Handle<Object> break_point_object,
227 int* source_position, 226 int* source_position,
228 BreakPositionAlignment alignment); 227 BreakPositionAlignment alignment);
229 void ClearBreakPoint(Handle<Object> break_point_object); 228 void ClearBreakPoint(Handle<Object> break_point_object);
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 Address step_out_fp() { return thread_local_.step_out_fp_; } 309 Address step_out_fp() { return thread_local_.step_out_fp_; }
311 310
312 EnterDebugger* debugger_entry() { 311 EnterDebugger* debugger_entry() {
313 return thread_local_.debugger_entry_; 312 return thread_local_.debugger_entry_;
314 } 313 }
315 void set_debugger_entry(EnterDebugger* entry) { 314 void set_debugger_entry(EnterDebugger* entry) {
316 thread_local_.debugger_entry_ = entry; 315 thread_local_.debugger_entry_ = entry;
317 } 316 }
318 317
319 // Check whether any of the specified interrupts are pending. 318 // Check whether any of the specified interrupts are pending.
320 bool is_interrupt_pending(InterruptFlag what) { 319 bool has_pending_interrupt() {
321 return (thread_local_.pending_interrupts_ & what) != 0; 320 return thread_local_.has_pending_interrupt_;
322 } 321 }
323 322
324 // Set specified interrupts as pending. 323 // Set specified interrupts as pending.
325 void set_interrupts_pending(InterruptFlag what) { 324 void set_has_pending_interrupt(bool value) {
326 thread_local_.pending_interrupts_ |= what; 325 thread_local_.has_pending_interrupt_ = value;
327 }
328
329 // Clear specified interrupts from pending.
330 void clear_interrupt_pending(InterruptFlag what) {
331 thread_local_.pending_interrupts_ &= ~static_cast<int>(what);
332 } 326 }
333 327
334 // Getter and setter for the disable break state. 328 // Getter and setter for the disable break state.
335 bool disable_break() { return disable_break_; } 329 bool disable_break() { return disable_break_; }
336 void set_disable_break(bool disable_break) { 330 void set_disable_break(bool disable_break) {
337 disable_break_ = disable_break; 331 disable_break_ = disable_break;
338 } 332 }
339 333
340 // Getters for the current exception break state. 334 // Getters for the current exception break state.
341 bool break_on_exception() { return break_on_exception_; } 335 bool break_on_exception() { return break_on_exception_; }
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 Address after_break_target_; 572 Address after_break_target_;
579 573
580 // Stores the way how LiveEdit has patched the stack. It is used when 574 // Stores the way how LiveEdit has patched the stack. It is used when
581 // debugger returns control back to user script. 575 // debugger returns control back to user script.
582 FrameDropMode frame_drop_mode_; 576 FrameDropMode frame_drop_mode_;
583 577
584 // Top debugger entry. 578 // Top debugger entry.
585 EnterDebugger* debugger_entry_; 579 EnterDebugger* debugger_entry_;
586 580
587 // Pending interrupts scheduled while debugging. 581 // Pending interrupts scheduled while debugging.
588 int pending_interrupts_; 582 bool has_pending_interrupt_;
589 583
590 // When restarter frame is on stack, stores the address 584 // When restarter frame is on stack, stores the address
591 // of the pointer to function being restarted. Otherwise (most of the time) 585 // of the pointer to function being restarted. Otherwise (most of the time)
592 // stores NULL. This pointer is used with 'step in' implementation. 586 // stores NULL. This pointer is used with 'step in' implementation.
593 Object** restarter_frame_function_pointer_; 587 Object** restarter_frame_function_pointer_;
594 }; 588 };
595 589
596 // Storage location for registers when handling debug break calls 590 // Storage location for registers when handling debug break calls
597 JSCallerSavedBuffer registers_; 591 JSCallerSavedBuffer registers_;
598 ThreadLocal thread_local_; 592 ThreadLocal thread_local_;
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
1019 Mutex mutex_; 1013 Mutex mutex_;
1020 bool already_signalled_; 1014 bool already_signalled_;
1021 1015
1022 DISALLOW_COPY_AND_ASSIGN(MessageDispatchHelperThread); 1016 DISALLOW_COPY_AND_ASSIGN(MessageDispatchHelperThread);
1023 }; 1017 };
1024 1018
1025 1019
1026 } } // namespace v8::internal 1020 } } // namespace v8::internal
1027 1021
1028 #endif // V8_DEBUG_H_ 1022 #endif // V8_DEBUG_H_
OLDNEW
« no previous file with comments | « src/arm64/regexp-macro-assembler-arm64.cc ('k') | src/debug.cc » ('j') | src/execution.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698