Mercurial > hg > truffle
diff truffle/com.oracle.truffle.tools.debug.shell/src/com/oracle/truffle/tools/debug/shell/client/SimpleREPLClient.java @ 22471:a6c162686d81
Truffle/Language&Debugger: reimplement completely how the execution stack is gathered and communicated; change the signature of TruffelLanguage.evalInContext() to comply.
author | Michael Van De Vanter <michael.van.de.vanter@oracle.com> |
---|---|
date | Sun, 06 Dec 2015 20:13:49 -0800 |
parents | 64658afaf9c0 |
children |
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.tools.debug.shell/src/com/oracle/truffle/tools/debug/shell/client/SimpleREPLClient.java Sun Dec 06 20:12:43 2015 -0800 +++ b/truffle/com.oracle.truffle.tools.debug.shell/src/com/oracle/truffle/tools/debug/shell/client/SimpleREPLClient.java Sun Dec 06 20:13:49 2015 -0800 @@ -94,8 +94,8 @@ static final String CODE_LINE_FORMAT = " %3d %s\n"; static final String CODE_LINE_BREAK_FORMAT = "--> %3d %s\n"; - private static final String STACK_FRAME_FORMAT = " %3d: at %s in %s line =\"%s\"\n"; - private static final String STACK_FRAME_SELECTED_FORMAT = "==> %3d: at %s in %s line =\"%s\"\n"; + private static final String STACK_FRAME_FORMAT = " %3d: at %s in %s %s\n"; + private static final String STACK_FRAME_SELECTED_FORMAT = "==> %3d: at %s in %s %s\n"; // Top level commands private final Map<String, REPLCommand> commandMap = new HashMap<>(); @@ -158,6 +158,7 @@ addCommand(REPLRemoteCommand.BREAK_AT_THROW_CMD); addCommand(REPLRemoteCommand.BREAK_AT_THROW_ONCE_CMD); addCommand(REPLRemoteCommand.CALL_CMD); + addCommand(REPLRemoteCommand.CALL_STEP_INTO_CMD); addCommand(REPLRemoteCommand.CLEAR_BREAK_CMD); addCommand(REPLRemoteCommand.CONDITION_BREAK_CMD); addCommand(REPLRemoteCommand.CONTINUE_CMD); @@ -309,12 +310,13 @@ if (replies[0].get(REPLMessage.STATUS).equals(REPLMessage.SUCCEEDED)) { languageName = replies[0].get(REPLMessage.LANG_NAME); } + final String showLang = languageName == null ? "() " : "( " + languageName + " )"; if (level == 0) { // 0-level context; no executions halted. if (selectedSource == null) { - currentPrompt = languageName == null ? "() " : "( " + languageName + " ) "; + currentPrompt = showLang + " "; } else { - currentPrompt = "(" + selectedSource.getShortName() + ") "; + currentPrompt = "(" + selectedSource.getShortName() + ") " + showLang + " "; } } else if (selectedSource != null && selectedSource != haltedSource) { // User is focusing somewhere else than the current locn; show no line number. @@ -322,7 +324,7 @@ sb.append("(<" + Integer.toString(level) + "> "); sb.append(selectedSource.getShortName()); sb.append(")"); - sb.append("(" + languageName + ")"); + sb.append(showLang); sb.append(" "); currentPrompt = sb.toString(); } else { @@ -334,7 +336,7 @@ sb.append(":" + Integer.toString(haltedLineNumber)); } sb.append(")"); - sb.append("(" + languageName + ")"); + sb.append(showLang); sb.append(" "); currentPrompt = sb.toString(); } @@ -466,7 +468,9 @@ for (REPLFrame frame : frameList) { String sourceLineText = frame.sourceLineText(); if (sourceLineText == null) { - sourceLineText = "<??>"; + sourceLineText = ""; + } else { + sourceLineText = "line=\"" + sourceLineText + "\""; } if (frame.index() == selectedFrameNumber) { writer.format(STACK_FRAME_SELECTED_FORMAT, frame.index(), frame.locationDescription(), frame.name(), sourceLineText);