Index: src/d8.js |
=================================================================== |
--- src/d8.js (revision 1373) |
+++ src/d8.js (working copy) |
@@ -103,66 +103,54 @@ |
function DebugEventToText(event) { |
- switch (event.eventType()) { |
- case Debug.DebugEvent.Break: |
- // Build the break details. |
- var details = ''; |
- if (event.breakPointsHit()) { |
+ // Convert the JSON string to an object. |
+ var response = new ProtocolPackage(event); |
+ |
+ // Build the text. |
+ var body = response.body(); |
+ var details = ''; |
+ switch (response.event()) { |
+ case 'break': |
+ if (body.breakpoints) { |
details += 'breakpoint'; |
- if (event.breakPointsHit().length > 1) { |
+ if (body.breakpoints.length > 1) { |
details += 's'; |
} |
details += ' #'; |
- for (var i = 0; i < event.breakPointsHit().length; i++) { |
+ for (var i = 0; i < body.breakpoints.length; i++) { |
if (i > 0) { |
details += ', #'; |
} |
- // Find the break point number. For break points originating from a |
- // script break point display the script break point number. |
- var break_point = event.breakPointsHit()[i]; |
- var script_break_point = break_point.script_break_point(); |
- if (script_break_point) { |
- details += script_break_point.number(); |
- } else { |
- details += break_point.number(); |
- } |
+ details += body.breakpoints[i]; |
} |
} else { |
details += 'break'; |
} |
details += ' in '; |
- details += event.executionState().frame(0).invocationText(); |
- details += ' at '; |
- details += event.executionState().frame(0).sourceAndPositionText(); |
- details += '\n' |
- if (event.func().script()) { |
- details += FrameSourceUnderline(event.executionState().frame(0)); |
- } |
- Debug.State.currentSourceLine = |
- event.executionState().frame(0).sourceLine(); |
+ details += body.invocationText; |
+ details += ', '; |
+ details += SourceInfo(body); |
+ details += '\n'; |
+ details += SourceUnderline(body.sourceLineText, body.sourceColumn); |
+ Debug.State.currentSourceLine = body.sourceLine; |
Debug.State.currentFrame = 0; |
return details; |
- |
- case Debug.DebugEvent.Exception: |
- var details = ''; |
- if (event.uncaught_) { |
+ |
+ case 'exception': |
+ if (body.uncaught) { |
details += 'Uncaught: '; |
} else { |
details += 'Exception: '; |
} |
- |
details += '"'; |
- details += event.exception(); |
+ details += body.exception.text; |
details += '"'; |
- if (event.executionState().frameCount() > 0) { |
- details += '"'; |
- details += event.exception(); |
- details += ' at '; |
- details += event.executionState().frame(0).sourceAndPositionText(); |
+ if (body.sourceLine >= 0) { |
+ details += ', '; |
+ details += SourceInfo(body); |
details += '\n'; |
- details += FrameSourceUnderline(event.executionState().frame(0)); |
- Debug.State.currentSourceLine = |
- event.executionState().frame(0).sourceLine(); |
+ details += SourceUnderline(body.sourceLineText, body.sourceColumn); |
+ Debug.State.currentSourceLine = body.sourceLine; |
Debug.State.currentFrame = 0; |
} else { |
details += ' (empty stack)'; |
@@ -170,11 +158,18 @@ |
Debug.State.currentFrame = kNoFrame; |
} |
return details; |
- |
- case Debug.DebugEvent.AfterCompile: |
+ |
+ case 'exception': |
if (trace_compile) { |
+ details = 'Source ' + body.script.name + ' compiled:\n' |
+ } else { |
+ return ''; |
+ } |
+ |
+ case 'afterCompile': |
+ if (trace_compile) { |
details = 'Source ' + event.script().name() + ' compiled:\n' |
- var source = event.script().source(); |
+ var source = body.script.source; |
if (!(source[source.length - 1] == '\n')) { |
details += source; |
} else { |
@@ -185,11 +180,29 @@ |
return ''; |
} |
} |
- |
- return 'Unknown debug event ' + event.eventType(); |
+ return 'Unknown debug event ' + response.event(); |
}; |
+function SourceInfo(body) { |
+ var result = ''; |
+ |
+ if (body.script) { |
+ if (body.script.name) { |
+ result += body.script.name; |
+ } else { |
+ result += '[unnamed]'; |
+ } |
+ } |
+ result += ' line '; |
+ result += body.sourceLine + 1; |
+ result += ' column '; |
+ result += body.sourceColumn + 1; |
+ |
+ return result; |
+} |
+ |
+ |
function SourceUnderline(source_text, position) { |
if (!source_text) { |
return; |
@@ -213,15 +226,6 @@ |
}; |
-function FrameSourceUnderline(frame) { |
- var location = frame.sourceLocation(); |
- if (location) { |
- return SourceUnderline(location.sourceText(), |
- location.position - location.start); |
- } |
-}; |
- |
- |
// Converts a text command to a JSON request. |
function DebugCommandToJSONRequest(cmd_line) { |
return new DebugRequest(cmd_line).JSONRequest(); |