v8/test/debugger/wrapper/enable-disable.js
jgruber 83b560b0e5 [debugger] Various break-related functionality in test wrapper
This CL adds simple implementation of break and stepping-related functionality
as required by the debug-step.js test. This includes

* stepOver, stepInto, stepOut
* setBreakPoint
* clearBreakPoint
* evaluate

Some of these, e.g. setBreakPoint are not fully implemented for all cases but
only for the ones we need right now.

One interesting result of this is that using the inspector protocol is roughly
14x slower for debug-step.js (14s instead of 0.5s). One cause of this seems to
be iteration over all object properties in toProtocolValue, which is used to
serialize JS objects before being sent over the wire (e.g. FrameMirrors).  This
is something that should be fixed at some point. In the meantime, the test now
runs 100 instead of 1000 iterations.

BUG=v8:5530

Review-Url: https://codereview.chromium.org/2447073007
Cr-Commit-Position: refs/heads/master@{#40636}
2016-10-28 08:18:34 +00:00

30 lines
819 B
JavaScript

// Copyright 2016 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.
let compileCount = 0;
const Debug = new DebugWrapper();
Debug.setListener(function(event, exec_state, event_data, data) {
if (event != Debug.DebugEvent.AfterCompile) return;
compileCount++;
});
Debug.enable();
assertTrue(compileCount != 0);
const compileCountAfterEnable = compileCount;
Debug.enable(); // Idempotent.
assertEquals(compileCountAfterEnable, compileCount);
Debug.disable();
assertEquals(compileCountAfterEnable, compileCount);
Debug.disable(); // Idempotent.
assertEquals(compileCountAfterEnable, compileCount);
Debug.enable(); // Re-enabling causes recompilation.
assertEquals(2 * compileCountAfterEnable, compileCount);