| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 | 33 |
| 34 var DebuggerScript = {}; | 34 var DebuggerScript = {}; |
| 35 | 35 |
| 36 /** | 36 /** |
| 37 * @param {?CompileEvent} eventData | 37 * @param {?CompileEvent} eventData |
| 38 */ | 38 */ |
| 39 DebuggerScript.getAfterCompileScript = function(eventData) | 39 DebuggerScript.getAfterCompileScript = function(eventData) |
| 40 { | 40 { |
| 41 var script = eventData.script().value(); | 41 var script = eventData.script().value(); |
| 42 if (!script.is_debugger_script) | 42 if (!script.is_debugger_script) |
| 43 return DebuggerScript._formatScript(eventData.script().value()); | 43 return script; |
| 44 return null; | 44 return null; |
| 45 } | 45 } |
| 46 | 46 |
| 47 /** @type {!Map<!ScopeType, string>} */ | 47 /** @type {!Map<!ScopeType, string>} */ |
| 48 DebuggerScript._scopeTypeNames = new Map(); | 48 DebuggerScript._scopeTypeNames = new Map(); |
| 49 DebuggerScript._scopeTypeNames.set(ScopeType.Global, "global"); | 49 DebuggerScript._scopeTypeNames.set(ScopeType.Global, "global"); |
| 50 DebuggerScript._scopeTypeNames.set(ScopeType.Local, "local"); | 50 DebuggerScript._scopeTypeNames.set(ScopeType.Local, "local"); |
| 51 DebuggerScript._scopeTypeNames.set(ScopeType.With, "with"); | 51 DebuggerScript._scopeTypeNames.set(ScopeType.With, "with"); |
| 52 DebuggerScript._scopeTypeNames.set(ScopeType.Closure, "closure"); | 52 DebuggerScript._scopeTypeNames.set(ScopeType.Closure, "closure"); |
| 53 DebuggerScript._scopeTypeNames.set(ScopeType.Catch, "catch"); | 53 DebuggerScript._scopeTypeNames.set(ScopeType.Catch, "catch"); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 { | 133 { |
| 134 if (!contextData) | 134 if (!contextData) |
| 135 return 0; | 135 return 0; |
| 136 var match = contextData.match(/^[^,]*,([^,]*),.*$/); | 136 var match = contextData.match(/^[^,]*,([^,]*),.*$/); |
| 137 if (!match) | 137 if (!match) |
| 138 return 0; | 138 return 0; |
| 139 return parseInt(match[1], 10) || 0; | 139 return parseInt(match[1], 10) || 0; |
| 140 } | 140 } |
| 141 | 141 |
| 142 /** | 142 /** |
| 143 * @param {string|undefined} contextData | |
| 144 * @return {string} | |
| 145 */ | |
| 146 DebuggerScript._executionContextAuxData = function(contextData) | |
| 147 { | |
| 148 if (!contextData) | |
| 149 return ""; | |
| 150 var match = contextData.match(/^[^,]*,[^,]*,(.*)$/); | |
| 151 return match ? match[1] : ""; | |
| 152 } | |
| 153 | |
| 154 /** | |
| 155 * @param {string} contextGroupId | |
| 156 * @return {!Array<!FormattedScript>} | |
| 157 */ | |
| 158 DebuggerScript.getScripts = function(contextGroupId) | |
| 159 { | |
| 160 var result = []; | |
| 161 var scripts = Debug.scripts(); | |
| 162 var contextDataPrefix = null; | |
| 163 if (contextGroupId) | |
| 164 contextDataPrefix = contextGroupId + ","; | |
| 165 for (var i = 0; i < scripts.length; ++i) { | |
| 166 var script = scripts[i]; | |
| 167 if (contextDataPrefix) { | |
| 168 if (!script.context_data) | |
| 169 continue; | |
| 170 // Context data is a string in the following format: | |
| 171 // <contextGroupId>,<contextId>,<auxData> | |
| 172 if (script.context_data.indexOf(contextDataPrefix) !== 0) | |
| 173 continue; | |
| 174 } | |
| 175 if (script.is_debugger_script) | |
| 176 continue; | |
| 177 result.push(DebuggerScript._formatScript(script)); | |
| 178 } | |
| 179 return result; | |
| 180 } | |
| 181 | |
| 182 /** | |
| 183 * @param {!Script} script | |
| 184 * @return {!FormattedScript} | |
| 185 */ | |
| 186 DebuggerScript._formatScript = function(script) | |
| 187 { | |
| 188 var lineEnds = script.line_ends; | |
| 189 var lineCount = lineEnds.length; | |
| 190 var endLine = script.line_offset + lineCount - 1; | |
| 191 var endColumn; | |
| 192 // V8 will not count last line if script source ends with \n. | |
| 193 if (script.source[script.source.length - 1] === '\n') { | |
| 194 endLine += 1; | |
| 195 endColumn = 0; | |
| 196 } else { | |
| 197 if (lineCount === 1) | |
| 198 endColumn = script.source.length + script.column_offset; | |
| 199 else | |
| 200 endColumn = script.source.length - (lineEnds[lineCount - 2] + 1); | |
| 201 } | |
| 202 return { | |
| 203 id: script.id, | |
| 204 name: script.nameOrSourceURL(), | |
| 205 sourceURL: script.source_url, | |
| 206 sourceMappingURL: script.source_mapping_url, | |
| 207 source: script.source, | |
| 208 startLine: script.line_offset, | |
| 209 startColumn: script.column_offset, | |
| 210 endLine: endLine, | |
| 211 endColumn: endColumn, | |
| 212 executionContextId: DebuggerScript._executionContextId(script.context_da
ta), | |
| 213 // Note that we cannot derive aux data from context id because of compil
ation cache. | |
| 214 executionContextAuxData: DebuggerScript._executionContextAuxData(script.
context_data) | |
| 215 }; | |
| 216 } | |
| 217 | |
| 218 /** | |
| 219 * @param {!ExecutionState} execState | 143 * @param {!ExecutionState} execState |
| 220 * @param {!BreakpointInfo} info | 144 * @param {!BreakpointInfo} info |
| 221 * @return {string|undefined} | 145 * @return {string|undefined} |
| 222 */ | 146 */ |
| 223 DebuggerScript.setBreakpoint = function(execState, info) | 147 DebuggerScript.setBreakpoint = function(execState, info) |
| 224 { | 148 { |
| 225 var breakId = Debug.setScriptBreakPointById(info.sourceID, info.lineNumber,
info.columnNumber, info.condition, undefined, Debug.BreakPositionAlignment.State
ment); | 149 var breakId = Debug.setScriptBreakPointById(info.sourceID, info.lineNumber,
info.columnNumber, info.condition, undefined, Debug.BreakPositionAlignment.State
ment); |
| 226 var locations = Debug.findBreakPointActualLocations(breakId); | 150 var locations = Debug.findBreakPointActualLocations(breakId); |
| 227 if (!locations.length) | 151 if (!locations.length) |
| 228 return undefined; | 152 return undefined; |
| (...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 640 break; | 564 break; |
| 641 } | 565 } |
| 642 return result; | 566 return result; |
| 643 } | 567 } |
| 644 | 568 |
| 645 // We never resolve Mirror by its handle so to avoid memory leaks caused by Mirr
ors in the cache we disable it. | 569 // We never resolve Mirror by its handle so to avoid memory leaks caused by Mirr
ors in the cache we disable it. |
| 646 ToggleMirrorCache(false); | 570 ToggleMirrorCache(false); |
| 647 | 571 |
| 648 return DebuggerScript; | 572 return DebuggerScript; |
| 649 })(); | 573 })(); |
| OLD | NEW |