Handle<FixedArray> break_points_hit;
int break_points_hit_count = 0;
DCHECK(!break_point_objects->IsUndefined());
-
- // Break points are checked by calling into Javascript. This could change
- // the stepping state we are currently in.
- PreserveDebugState state(this);
-
if (break_point_objects->IsFixedArray()) {
Handle<FixedArray> array(FixedArray::cast(*break_point_objects));
break_points_hit = factory->NewFixedArray(array->length());
Object** restarter_frame_function_pointer_;
};
-
- class PreserveDebugState {
- public:
- explicit PreserveDebugState(Debug* debug) : debug_(debug) {
- size_t size = sizeof(debug_->thread_local_);
- storage_ = NewArray<char>(size);
- MemCopy(storage_, &debug_->thread_local_, size);
- }
-
- ~PreserveDebugState() {
- size_t size = sizeof(debug_->thread_local_);
- MemCopy(&debug_->thread_local_, storage_, size);
- DeleteArray(storage_);
- }
-
- private:
- Debug* debug_;
- char* storage_;
- };
-
-
// Storage location for registers when handling debug break calls
ThreadLocal thread_local_;
+++ /dev/null
-// Copyright 2015 the V8 project authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Flags: --expose-debug-as debug
-
-function f() {
- for (var i = 10; i < 14; i++) { // 1
- i; // 2
- }
-} // 3
-
-var state = "conditional";
-var log = [];
-var exception = null;
-
-function listener(event, exec_state, event_data, data) {
- if (event != Debug.DebugEvent.Break) return;
- try {
- var label = +exec_state.frame(0).sourceLineText().substr(-1);
- log.push(label);
- if (label == 2) log.push(exec_state.frame(0).evaluate("i").value());
- exec_state.prepareStep(Debug.StepAction.StepNext, 1);
- } catch (e) {
- exception = e;
- print("Caught something. " + e + " " + e.stack);
- };
-};
-
-
-var Debug = debug.Debug;
-Debug.setListener(listener);
-
-Debug.setBreakPoint(f, 2, 0, "i == 12");
-
-f();
-
-Debug.setListener(null); // 4
-
-assertEquals([2,12,1,1,2,13,1,1,3,4], log);
-assertNull(exception);