Chromium Code Reviews| Index: test/mjsunit/ignition/elided-instruction.js |
| diff --git a/test/mjsunit/ignition/elided-instruction.js b/test/mjsunit/ignition/elided-instruction.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..5f883c5defa2c03e17b472449e4163e664f1c600 |
| --- /dev/null |
| +++ b/test/mjsunit/ignition/elided-instruction.js |
| @@ -0,0 +1,41 @@ |
| +// 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. |
| + |
| +// Flags: --expose-debug-as debug --ignition --nostress-opt --noalways-opt |
|
rmcilroy
2016/03/14 14:54:55
I guess this will set clusterfuzz on ignition, but
|
| + |
| +Debug = debug.Debug |
| + |
| +var exception = null; |
| +var break_count = 0; |
| + |
| +function listener(event, exec_state, event_data, data) { |
| + if (event != Debug.DebugEvent.Break) return; |
| + try { |
| + print(event_data.sourceLineText()); |
| + var column = event_data.sourceColumn(); |
| + assertTrue(event_data.sourceLineText().indexOf( |
| + `Break ${break_count++}. ${column}.`) > 0); |
| + exec_state.prepareStep(Debug.StepAction.StepIn); |
| + } catch (e) { |
| + print(e + e.stack); |
| + exception = e; |
| + } |
| +}; |
| + |
| +function f() { |
| + var a = 1; // Break 2. 10. |
| + // This return statement emits no bytecode instruction for the evaluation of |
| + // the to-be-returned expression. Therefore we cannot set a break location |
| + // before the statement and a second break location immediately before |
| + // returning to the caller. |
| + return a; |
| +} // Break 3. 0. |
| + |
| +Debug.setListener(listener); |
| +debugger; // Break 0. 0. |
| +f(); // Break 1. 0. |
| +Debug.setListener(null); // Break 4. 0. |
| + |
| +assertNull(exception); |
| +assertEquals(5, break_count); |