Mercurial > hg > truffle
annotate truffle/com.oracle.truffle.tools.debug.shell/src/com/oracle/truffle/tools/debug/shell/server/REPLServer.java @ 22449:5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
author | Michael Van De Vanter <michael.van.de.vanter@oracle.com> |
---|---|
date | Wed, 04 Nov 2015 16:35:38 -0800 |
parents | |
children | ad180d3d4bd7 |
rev | line source |
---|---|
22449
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
1 /* |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
2 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
4 * |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
7 * published by the Free Software Foundation. Oracle designates this |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
8 * particular file as subject to the "Classpath" exception as provided |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
9 * by Oracle in the LICENSE file that accompanied this code. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
10 * |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
11 * This code is distributed in the hope that it will be useful, but WITHOUT |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
14 * version 2 for more details (a copy is included in the LICENSE file that |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
15 * accompanied this code). |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
16 * |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
17 * You should have received a copy of the GNU General Public License version |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
18 * 2 along with this work; if not, write to the Free Software Foundation, |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
20 * |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
22 * or visit www.oracle.com if you need additional information or have any |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
23 * questions. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
24 */ |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
25 package com.oracle.truffle.tools.debug.shell.server; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
26 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
27 import java.io.IOException; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
28 import java.util.ArrayList; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
29 import java.util.Collection; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
30 import java.util.Collections; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
31 import java.util.HashMap; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
32 import java.util.List; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
33 import java.util.Map; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
34 import java.util.WeakHashMap; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
35 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
36 import com.oracle.truffle.api.debug.Breakpoint; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
37 import com.oracle.truffle.api.debug.Debugger; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
38 import com.oracle.truffle.api.debug.ExecutionEvent; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
39 import com.oracle.truffle.api.debug.LineBreakpoint; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
40 import com.oracle.truffle.api.debug.SuspendedEvent; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
41 import com.oracle.truffle.api.debug.TagBreakpoint; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
42 import com.oracle.truffle.api.frame.FrameInstance; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
43 import com.oracle.truffle.api.frame.MaterializedFrame; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
44 import com.oracle.truffle.api.instrument.StandardSyntaxTag; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
45 import com.oracle.truffle.api.instrument.SyntaxTag; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
46 import com.oracle.truffle.api.instrument.Visualizer; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
47 import com.oracle.truffle.api.instrument.impl.DefaultVisualizer; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
48 import com.oracle.truffle.api.nodes.Node; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
49 import com.oracle.truffle.api.source.LineLocation; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
50 import com.oracle.truffle.api.source.Source; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
51 import com.oracle.truffle.api.source.SourceSection; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
52 import com.oracle.truffle.api.vm.EventConsumer; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
53 import com.oracle.truffle.api.vm.PolyglotEngine; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
54 import com.oracle.truffle.api.vm.PolyglotEngine.Language; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
55 import com.oracle.truffle.api.vm.PolyglotEngine.Value; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
56 import com.oracle.truffle.tools.debug.shell.REPLMessage; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
57 import com.oracle.truffle.tools.debug.shell.client.SimpleREPLClient; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
58 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
59 /** |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
60 * The server side of a simple message-based protocol for a possibly remote language |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
61 * Read-Eval-Print-Loop. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
62 */ |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
63 public final class REPLServer { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
64 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
65 // Language-agnostic |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
66 private final PolyglotEngine engine; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
67 private Debugger db; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
68 private Context currentServerContext; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
69 private SimpleREPLClient replClient = null; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
70 private String statusPrefix; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
71 private final Map<String, REPLHandler> handlerMap = new HashMap<>(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
72 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
73 // TODO (mlvdv) Language-specific |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
74 private final PolyglotEngine.Language language; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
75 private final Visualizer visualizer; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
76 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
77 private int nextBreakpointUID = 0; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
78 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
79 /** |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
80 * Map: breakpoints => breakpoint UID. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
81 * <ul> |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
82 * <li>Contains only pending breakpoints when the Debugger not yet available.</li> |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
83 * <li>When the Debugger becomes available, each pending breakpoint is replaced with a Debugger |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
84 * breakpoint, keeping same UID.</li> |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
85 * <li>Contains no disposed breakpoints.</li> |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
86 * <li>UIDs for disposed breakpoints are never reused.</li> |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
87 * </ul> |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
88 */ |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
89 private Map<Breakpoint, Integer> breakpoints = new WeakHashMap<>(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
90 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
91 /** |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
92 * Create a single-language server. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
93 */ |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
94 public REPLServer(String mimeType, Visualizer visualizer) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
95 this.visualizer = visualizer == null ? new DefaultVisualizer() : visualizer; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
96 EventConsumer<SuspendedEvent> onHalted = new EventConsumer<SuspendedEvent>(SuspendedEvent.class) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
97 @Override |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
98 protected void on(SuspendedEvent ev) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
99 REPLServer.this.haltedAt(ev); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
100 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
101 }; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
102 EventConsumer<ExecutionEvent> onExec = new EventConsumer<ExecutionEvent>(ExecutionEvent.class) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
103 @Override |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
104 protected void on(ExecutionEvent event) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
105 if (db == null) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
106 db = event.getDebugger(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
107 if (!breakpoints.isEmpty()) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
108 ArrayList<? extends Breakpoint> pendingBreakpoints = new ArrayList<>(breakpoints.keySet()); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
109 try { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
110 for (Breakpoint pending : pendingBreakpoints) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
111 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
112 Integer uid = breakpoints.get(pending); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
113 pending.dispose(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
114 Breakpoint replacement = null; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
115 if (pending instanceof PendingLineBreakpoint) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
116 final PendingLineBreakpoint lineBreak = (PendingLineBreakpoint) pending; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
117 replacement = db.setLineBreakpoint(lineBreak.getIgnoreCount(), lineBreak.getLineLocation(), lineBreak.isOneShot()); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
118 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
119 } else if (pending instanceof PendingTagBreakpoint) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
120 final PendingTagBreakpoint tagBreak = (PendingTagBreakpoint) pending; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
121 replacement = db.setTagBreakpoint(tagBreak.getIgnoreCount(), tagBreak.getTag(), tagBreak.isOneShot()); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
122 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
123 breakpoints.put(replacement, uid); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
124 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
125 } catch (IOException e) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
126 throw new IllegalStateException("pending breakpoints should all be valid"); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
127 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
128 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
129 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
130 event.prepareStepInto(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
131 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
132 }; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
133 engine = PolyglotEngine.buildNew().onEvent(onHalted).onEvent(onExec).build(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
134 this.language = engine.getLanguages().get(mimeType); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
135 if (language == null) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
136 throw new RuntimeException("Implementation not found for \"" + mimeType + "\""); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
137 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
138 statusPrefix = languageName(language); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
139 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
140 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
141 public void add(REPLHandler handler) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
142 handlerMap.put(handler.getOp(), handler); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
143 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
144 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
145 /** |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
146 * Starts up a server; status returned in a message. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
147 */ |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
148 public void start() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
149 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
150 addHandlers(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
151 this.replClient = new SimpleREPLClient(this); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
152 this.currentServerContext = new Context(null, null); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
153 replClient.start(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
154 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
155 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
156 protected void addHandlers() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
157 add(REPLHandler.BACKTRACE_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
158 add(REPLHandler.BREAK_AT_LINE_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
159 add(REPLHandler.BREAK_AT_LINE_ONCE_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
160 add(REPLHandler.BREAK_AT_THROW_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
161 add(REPLHandler.BREAK_AT_THROW_ONCE_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
162 add(REPLHandler.BREAKPOINT_INFO_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
163 add(REPLHandler.CALL_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
164 add(REPLHandler.CLEAR_BREAK_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
165 add(REPLHandler.CONTINUE_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
166 add(REPLHandler.DELETE_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
167 add(REPLHandler.DISABLE_BREAK_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
168 add(REPLHandler.ENABLE_BREAK_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
169 add(REPLHandler.EVAL_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
170 add(REPLHandler.FILE_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
171 add(REPLHandler.FRAME_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
172 add(REPLHandler.INFO_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
173 add(REPLHandler.KILL_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
174 add(REPLHandler.LOAD_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
175 add(REPLHandler.QUIT_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
176 add(REPLHandler.SET_BREAK_CONDITION_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
177 add(REPLHandler.STEP_INTO_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
178 add(REPLHandler.STEP_OUT_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
179 add(REPLHandler.STEP_OVER_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
180 add(REPLHandler.TRUFFLE_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
181 add(REPLHandler.TRUFFLE_NODE_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
182 add(REPLHandler.UNSET_BREAK_CONDITION_HANDLER); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
183 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
184 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
185 void haltedAt(SuspendedEvent event) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
186 // Create and push a new debug context where execution is halted |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
187 currentServerContext = new Context(currentServerContext, event); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
188 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
189 // Message the client that execution is halted and is in a new debugging context |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
190 final REPLMessage message = new REPLMessage(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
191 message.put(REPLMessage.OP, REPLMessage.STOPPED); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
192 final SourceSection src = event.getNode().getSourceSection(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
193 final Source source = src.getSource(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
194 message.put(REPLMessage.SOURCE_NAME, source.getName()); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
195 message.put(REPLMessage.FILE_PATH, source.getPath()); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
196 message.put(REPLMessage.LINE_NUMBER, Integer.toString(src.getStartLine())); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
197 message.put(REPLMessage.STATUS, REPLMessage.SUCCEEDED); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
198 message.put(REPLMessage.DEBUG_LEVEL, Integer.toString(currentServerContext.getLevel())); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
199 List<String> warnings = event.getRecentWarnings(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
200 if (!warnings.isEmpty()) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
201 final StringBuilder sb = new StringBuilder(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
202 for (String warning : warnings) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
203 sb.append(warning + "\n"); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
204 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
205 message.put(REPLMessage.WARNINGS, sb.toString()); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
206 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
207 try { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
208 // Cheat with synchrony: call client directly about entering a nested debugging |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
209 // context. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
210 replClient.halted(message); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
211 } finally { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
212 // Returns when "continue" or "kill" is called in the new debugging context |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
213 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
214 // Pop the debug context, and return so that the old context will continue |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
215 currentServerContext = currentServerContext.predecessor; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
216 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
217 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
218 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
219 /** |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
220 * Execution context of a halted program, possibly nested. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
221 */ |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
222 public final class Context { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
223 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
224 private final Context predecessor; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
225 private final int level; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
226 private final SuspendedEvent event; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
227 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
228 Context(Context predecessor, SuspendedEvent event) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
229 this.level = predecessor == null ? 0 : predecessor.getLevel() + 1; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
230 this.predecessor = predecessor; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
231 this.event = event; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
232 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
233 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
234 /** |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
235 * The nesting depth of this context in the current session. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
236 */ |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
237 int getLevel() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
238 return level; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
239 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
240 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
241 /** |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
242 * The AST node where execution is halted in this context. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
243 */ |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
244 Node getNodeAtHalt() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
245 return event.getNode(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
246 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
247 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
248 /** |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
249 * Evaluates given code snippet in the context of currently suspended execution. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
250 * |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
251 * @param code the snippet to evaluate |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
252 * @param frame <code>null</code> in case the evaluation should happen in top most frame, |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
253 * non-null value |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
254 * @return result of the evaluation |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
255 * @throws IOException if something goes wrong |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
256 */ |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
257 Object eval(String code, FrameInstance frame) throws IOException { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
258 if (event == null) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
259 throw new IOException("top level \"eval\" not yet supported"); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
260 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
261 return event.eval(code, frame); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
262 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
263 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
264 /** |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
265 * The frame where execution is halted in this context. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
266 */ |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
267 MaterializedFrame getFrameAtHalt() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
268 return event.getFrame(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
269 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
270 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
271 /** |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
272 * Dispatches a REPL request to the appropriate handler. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
273 */ |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
274 REPLMessage[] receive(REPLMessage request) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
275 final String command = request.get(REPLMessage.OP); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
276 final REPLHandler handler = handlerMap.get(command); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
277 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
278 if (handler == null) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
279 final REPLMessage message = new REPLMessage(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
280 message.put(REPLMessage.OP, command); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
281 message.put(REPLMessage.STATUS, REPLMessage.FAILED); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
282 message.put(REPLMessage.DISPLAY_MSG, statusPrefix + " op \"" + command + "\" not supported"); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
283 final REPLMessage[] reply = new REPLMessage[]{message}; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
284 return reply; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
285 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
286 return handler.receive(request, REPLServer.this); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
287 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
288 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
289 /** |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
290 * Provides access to the execution stack. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
291 * |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
292 * @return immutable list of stack elements |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
293 */ |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
294 List<FrameDebugDescription> getStack() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
295 List<FrameDebugDescription> frames = new ArrayList<>(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
296 int frameCount = 1; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
297 for (FrameInstance frameInstance : event.getStack()) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
298 if (frameCount == 1) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
299 frames.add(new FrameDebugDescription(frameCount, event.getNode(), frameInstance)); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
300 } else { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
301 frames.add(new FrameDebugDescription(frameCount, frameInstance.getCallNode(), frameInstance)); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
302 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
303 frameCount++; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
304 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
305 return Collections.unmodifiableList(frames); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
306 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
307 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
308 void prepareStepOut() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
309 event.prepareStepOut(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
310 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
311 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
312 void prepareStepInto(int repeat) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
313 event.prepareStepInto(repeat); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
314 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
315 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
316 void prepareStepOver(int repeat) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
317 event.prepareStepOver(repeat); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
318 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
319 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
320 void prepareContinue() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
321 event.prepareContinue(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
322 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
323 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
324 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
325 /** |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
326 * Ask the server to handle a request. Return a non-empty array of messages to simulate remote |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
327 * operation where the protocol has possibly multiple messages being returned asynchronously in |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
328 * response to each request. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
329 */ |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
330 public REPLMessage[] receive(REPLMessage request) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
331 if (currentServerContext == null) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
332 final REPLMessage message = new REPLMessage(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
333 message.put(REPLMessage.STATUS, REPLMessage.FAILED); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
334 message.put(REPLMessage.DISPLAY_MSG, "server not started"); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
335 final REPLMessage[] reply = new REPLMessage[]{message}; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
336 return reply; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
337 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
338 return currentServerContext.receive(request); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
339 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
340 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
341 Context getCurrentContext() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
342 return currentServerContext; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
343 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
344 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
345 Visualizer getVisualizer() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
346 return visualizer; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
347 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
348 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
349 // TODO (mlvdv) language-specific |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
350 Language getLanguage() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
351 return language; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
352 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
353 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
354 // TODO (mlvdv) language-specific |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
355 public String getLanguageName() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
356 return languageName(this.language); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
357 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
358 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
359 private static String languageName(Language lang) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
360 return lang.getName() + "(" + lang.getVersion() + ")"; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
361 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
362 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
363 void eval(Source source) throws IOException { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
364 engine.eval(source); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
365 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
366 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
367 Breakpoint setLineBreakpoint(int ignoreCount, LineLocation lineLocation, boolean oneShot) throws IOException { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
368 Breakpoint breakpoint; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
369 if (db == null) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
370 breakpoint = new PendingLineBreakpoint(ignoreCount, lineLocation, oneShot); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
371 } else { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
372 breakpoint = db.setLineBreakpoint(ignoreCount, lineLocation, oneShot); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
373 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
374 registerNewBreakpoint(breakpoint); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
375 return breakpoint; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
376 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
377 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
378 Breakpoint setTagBreakpoint(int ignoreCount, StandardSyntaxTag tag, boolean oneShot) throws IOException { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
379 Breakpoint breakpoint; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
380 if (db == null) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
381 breakpoint = new PendingTagBreakpoint(ignoreCount, tag, oneShot); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
382 } else { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
383 breakpoint = db.setTagBreakpoint(ignoreCount, tag, oneShot); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
384 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
385 registerNewBreakpoint(breakpoint); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
386 return breakpoint; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
387 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
388 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
389 private synchronized void registerNewBreakpoint(Breakpoint breakpoint) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
390 breakpoints.put(breakpoint, nextBreakpointUID++); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
391 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
392 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
393 synchronized Breakpoint findBreakpoint(int id) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
394 for (Map.Entry<Breakpoint, Integer> entrySet : breakpoints.entrySet()) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
395 if (id == entrySet.getValue()) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
396 return entrySet.getKey(); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
397 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
398 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
399 return null; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
400 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
401 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
402 /** |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
403 * Gets a list of the currently existing breakpoints. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
404 */ |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
405 Collection<Breakpoint> getBreakpoints() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
406 return new ArrayList<>(breakpoints.keySet()); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
407 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
408 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
409 synchronized int getBreakpointID(Breakpoint breakpoint) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
410 final Integer id = breakpoints.get(breakpoint); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
411 return id == null ? -1 : id; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
412 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
413 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
414 void call(String name) throws IOException { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
415 Value symbol = engine.findGlobalSymbol(name); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
416 if (symbol == null) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
417 throw new IOException("symbol \"" + name + "\" not found"); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
418 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
419 symbol.invoke(null); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
420 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
421 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
422 /** |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
423 * The intention to create a line breakpoint. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
424 */ |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
425 private final class PendingLineBreakpoint extends LineBreakpoint { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
426 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
427 private Source conditionSource; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
428 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
429 PendingLineBreakpoint(int ignoreCount, LineLocation lineLocation, boolean oneShot) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
430 super(Breakpoint.State.ENABLED_UNRESOLVED, lineLocation, ignoreCount, oneShot); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
431 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
432 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
433 @Override |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
434 public void setEnabled(boolean enabled) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
435 switch (getState()) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
436 case ENABLED_UNRESOLVED: |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
437 if (!enabled) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
438 setState(State.DISABLED_UNRESOLVED); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
439 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
440 break; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
441 case DISABLED_UNRESOLVED: |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
442 if (enabled) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
443 setState(State.ENABLED_UNRESOLVED); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
444 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
445 break; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
446 case DISPOSED: |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
447 throw new IllegalStateException("Disposed breakpoints must stay disposed"); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
448 default: |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
449 throw new IllegalStateException("Unexpected breakpoint state"); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
450 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
451 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
452 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
453 @Override |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
454 public boolean isEnabled() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
455 return getState() == State.ENABLED_UNRESOLVED; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
456 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
457 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
458 @Override |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
459 public void setCondition(String expr) throws IOException { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
460 this.conditionSource = Source.fromText(expr, "breakpoint condition from text: " + expr); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
461 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
462 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
463 @Override |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
464 public Source getCondition() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
465 return conditionSource; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
466 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
467 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
468 @Override |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
469 public void dispose() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
470 if (getState() == State.DISPOSED) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
471 throw new IllegalStateException("Breakpoint already disposed"); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
472 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
473 setState(State.DISPOSED); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
474 breakpoints.remove(this); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
475 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
476 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
477 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
478 /** |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
479 * The intention to create a line breakpoint. |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
480 */ |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
481 private final class PendingTagBreakpoint extends TagBreakpoint { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
482 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
483 private Source conditionSource; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
484 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
485 PendingTagBreakpoint(int ignoreCount, SyntaxTag tag, boolean oneShot) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
486 super(Breakpoint.State.ENABLED_UNRESOLVED, tag, ignoreCount, oneShot); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
487 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
488 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
489 @Override |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
490 public void setEnabled(boolean enabled) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
491 switch (getState()) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
492 case ENABLED_UNRESOLVED: |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
493 if (!enabled) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
494 setState(State.DISABLED_UNRESOLVED); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
495 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
496 break; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
497 case DISABLED_UNRESOLVED: |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
498 if (enabled) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
499 setState(State.ENABLED_UNRESOLVED); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
500 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
501 break; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
502 case DISPOSED: |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
503 throw new IllegalStateException("Disposed breakpoints must stay disposed"); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
504 default: |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
505 throw new IllegalStateException("Unexpected breakpoint state"); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
506 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
507 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
508 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
509 @Override |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
510 public boolean isEnabled() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
511 return getState() == State.ENABLED_UNRESOLVED; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
512 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
513 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
514 @Override |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
515 public void setCondition(String expr) throws IOException { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
516 this.conditionSource = Source.fromText(expr, "breakpoint condition from text: " + expr); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
517 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
518 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
519 @Override |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
520 public Source getCondition() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
521 return conditionSource; |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
522 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
523 |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
524 @Override |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
525 public void dispose() { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
526 if (getState() == State.DISPOSED) { |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
527 throw new IllegalStateException("Breakpoint already disposed"); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
528 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
529 setState(State.DISPOSED); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
530 breakpoints.remove(this); |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
531 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
532 } |
5df298d7c949
Truffle/Debugging: add change missing from previous fix concerning "pending" breakpoints
Michael Van De Vanter <michael.van.de.vanter@oracle.com>
parents:
diff
changeset
|
533 } |