Changeset 140679 in webkit
- Timestamp:
- Jan 24, 2013 6:14:21 AM (11 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r140673 r140679 1 2013-01-24 Andrey Adaikin <aandrey@chromium.org> 2 3 Web Inspector: [Canvas] REGRESSION: stack traces in the replay log are gone 4 https://bugs.webkit.org/show_bug.cgi?id=107805 5 6 Reviewed by Pavel Feldman. 7 8 A simple test to dump a canvas 2D trace log with function call stack traces. 9 10 * inspector/profiler/canvas-profiler-test.js: 11 (initialize_CanvasWebGLProfilerTest.): 12 (initialize_CanvasWebGLProfilerTest.InspectorTest.dumpTraceLog): 13 * inspector/profiler/canvas2d/canvas-stack-trace-expected.txt: Added. 14 * inspector/profiler/canvas2d/canvas-stack-trace.html: Added. 15 * platform/efl/TestExpectations: 16 * platform/gtk/TestExpectations: 17 * platform/mac/TestExpectations: 18 * platform/qt/TestExpectations: 19 * platform/win/TestExpectations: 20 * platform/wincairo/TestExpectations: 21 1 22 2013-01-23 Alexis Menard <alexis@webkit.org> 2 23 -
trunk/LayoutTests/inspector/profiler/canvas-profiler-test.js
r138497 r140679 39 39 }; 40 40 41 InspectorTest.dumpTraceLogCall = function(call, indent) 42 { 43 indent = indent || ""; 44 function formatSourceURL(url) 45 { 46 return url ? "\"" + url.replace(/^.*\/([^\/]+)\/?$/, "$1") + "\"" : "null"; 47 } 48 var args = (call.arguments || []).map(function(arg) { 49 return arg.description; 50 }); 51 var properties = [ 52 "{Call}", 53 call.functionName ? "functionName:\"" + call.functionName + "\"" : "", 54 call.arguments ? "arguments:[" + args.join(",") + "]" : "", 55 call.result ? "result:" + call.result.description : "", 56 call.property ? "property:\"" + call.property + "\"" : "", 57 call.value ? "value:" + call.value.description : "", 58 call.isDrawingCall ? "isDrawingCall:true" : "", 59 "sourceURL:" + formatSourceURL(call.sourceURL), 60 "lineNumber:" + call.lineNumber, 61 "columnNumber:" + call.columnNumber 62 ]; 63 InspectorTest.addResult(indent + properties.filter(Boolean).join(" ")); 64 }; 65 66 InspectorTest.dumpTraceLog = function(traceLog, indent) 67 { 68 indent = indent || ""; 69 var calls = traceLog.calls; 70 var properties = [ 71 "{TraceLog}", 72 "alive:" + !!traceLog.alive, 73 "startOffset:" + (traceLog.startOffset || 0), 74 "#calls:" + traceLog.totalAvailableCalls 75 ]; 76 InspectorTest.addResult(indent + properties.filter(Boolean).join(" ")); 77 for (var i = 0, n = calls.length; i < n; ++i) 78 InspectorTest.dumpTraceLogCall(calls[i], indent + " "); 79 }; 80 41 81 }; 42 82 -
trunk/LayoutTests/platform/efl/TestExpectations
r140670 r140679 1575 1575 webkit.org/b/99001 inspector/profiler/memory-instrumentation-canvas.html 1576 1576 webkit.org/b/73936 inspector/profiler/canvas2d/canvas-has-uninstrumented-canvases.html 1577 webkit.org/b/73936 inspector/profiler/canvas2d/canvas-stack-trace.html 1577 1578 1578 1579 # EFL port does not support Emacs commands. -
trunk/LayoutTests/platform/gtk/TestExpectations
r140670 r140679 982 982 webkit.org/b/50485 inspector-protocol/take-heap-snapshot.html [ Skip ] 983 983 webkit.org/b/73936 inspector/profiler/canvas2d/canvas-has-uninstrumented-canvases.html [ Failure ] 984 webkit.org/b/73936 inspector/profiler/canvas2d/canvas-stack-trace.html [ Failure ] 984 985 985 986 webkit.org/b/37613 webkit.org/b/20011 printing [ Skip ] -
trunk/LayoutTests/platform/mac/TestExpectations
r140670 r140679 269 269 webkit.org/b/99001 inspector/profiler/memory-instrumentation-canvas.html 270 270 webkit.org/b/73936 inspector/profiler/canvas2d/canvas-has-uninstrumented-canvases.html 271 webkit.org/b/73936 inspector/profiler/canvas2d/canvas-stack-trace.html 271 272 272 273 # Skipping newly added tests while I'm finding out what is wrong. -
trunk/LayoutTests/platform/qt/TestExpectations
r140670 r140679 2441 2441 webkit.org/b/99001 inspector/profiler/memory-instrumentation-canvas.html 2442 2442 webkit.org/b/73936 inspector/profiler/canvas2d/canvas-has-uninstrumented-canvases.html 2443 webkit.org/b/73936 inspector/profiler/canvas2d/canvas-stack-trace.html 2443 2444 2444 2445 # [Qt] Unidentified pixel failures -
trunk/LayoutTests/platform/win/TestExpectations
r140657 r140679 1298 1298 webkit.org/b/99001 inspector/profiler/memory-instrumentation-canvas.html 1299 1299 webkit.org/b/73936 inspector/profiler/canvas2d/canvas-has-uninstrumented-canvases.html 1300 webkit.org/b/73936 inspector/profiler/canvas2d/canvas-stack-trace.html 1300 1301 1301 1302 # https://bugs.webkit.org/show_bug.cgi?id=40300 -
trunk/LayoutTests/platform/wincairo/TestExpectations
r140657 r140679 1824 1824 webkit.org/b/99001 inspector/profiler/memory-instrumentation-canvas.html 1825 1825 webkit.org/b/73936 inspector/profiler/canvas2d/canvas-has-uninstrumented-canvases.html 1826 webkit.org/b/73936 inspector/profiler/canvas2d/canvas-stack-trace.html 1826 1827 1827 1828 # https://bugs.webkit.org/show_bug.cgi?id=40300 -
trunk/Source/WebCore/ChangeLog
r140678 r140679 1 2013-01-24 Andrey Adaikin <aandrey@chromium.org> 2 3 Web Inspector: [Canvas] REGRESSION: stack traces in the replay log are gone 4 https://bugs.webkit.org/show_bug.cgi?id=107805 5 6 Reviewed by Pavel Feldman. 7 8 The V8's Error.prepareStackTrace is now called from the Error.captureStackTrace 9 function instead of the "stack" getter function. 10 11 Test: inspector/profiler/canvas2d/canvas-stack-trace.html 12 13 * inspector/InjectedScriptCanvasModuleSource.js: 14 (.): 15 1 16 2013-01-23 Andrey Adaikin <aandrey@chromium.org> 2 17 -
trunk/Source/WebCore/inspector/InjectedScriptCanvasModuleSource.js
r140678 r140679 193 193 /** 194 194 * @param {number} index 195 * @return {{sourceURL: string, lineNumber: number, columnNumber: number} }195 * @return {{sourceURL: string, lineNumber: number, columnNumber: number}|undefined} 196 196 */ 197 197 callFrame: function(index) … … 223 223 { 224 224 StackTrace.call(this); 225 226 var oldPrepareStackTrace = Error.prepareStackTrace; 225 227 var oldStackTraceLimit = Error.stackTraceLimit; 226 228 if (typeof stackTraceLimit === "number") 227 229 Error.stackTraceLimit = stackTraceLimit; 228 230 229 this._error = /** @type {{stack: Array}} */ ({}); 230 Error.captureStackTrace(this._error, topMostFunctionToIgnore || arguments.callee); 231 /** 232 * @param {Object} error 233 * @param {Array.<CallSite>} structuredStackTrace 234 * @return {Array.<{sourceURL: string, lineNumber: number, columnNumber: number}>} 235 */ 236 Error.prepareStackTrace = function(error, structuredStackTrace) 237 { 238 return structuredStackTrace.map(function(callSite) { 239 return { 240 sourceURL: callSite.getFileName(), 241 lineNumber: callSite.getLineNumber(), 242 columnNumber: callSite.getColumnNumber() 243 }; 244 }); 245 } 246 247 var holder = /** @type {{stack: Array.<{sourceURL: string, lineNumber: number, columnNumber: number}>}} */ ({}); 248 Error.captureStackTrace(holder, topMostFunctionToIgnore || arguments.callee); 249 this._stackTrace = holder.stack; 231 250 232 251 Error.stackTraceLimit = oldStackTraceLimit; 252 Error.prepareStackTrace = oldPrepareStackTrace; 233 253 } 234 254 … … 237 257 * @override 238 258 * @param {number} index 239 * @return {{sourceURL: string, lineNumber: number, columnNumber: number} }259 * @return {{sourceURL: string, lineNumber: number, columnNumber: number}|undefined} 240 260 */ 241 261 callFrame: function(index) 242 262 { 243 if (!this._stackTrace)244 this._prepareStackTrace();245 263 return this._stackTrace[index]; 246 },247 248 _prepareStackTrace: function()249 {250 var oldPrepareStackTrace = Error.prepareStackTrace;251 /**252 * @param {Object} error253 * @param {Array.<CallSite>} structuredStackTrace254 * @return {Array.<{sourceURL: string, lineNumber: number, columnNumber: number}>}255 */256 Error.prepareStackTrace = function(error, structuredStackTrace)257 {258 return structuredStackTrace.map(function(callSite) {259 return {260 sourceURL: callSite.getFileName(),261 lineNumber: callSite.getLineNumber(),262 columnNumber: callSite.getColumnNumber()263 };264 });265 }266 this._stackTrace = this._error.stack;267 Error.prepareStackTrace = oldPrepareStackTrace;268 delete this._error; // No longer needed, free memory.269 264 }, 270 265
Note: See TracChangeset
for help on using the changeset viewer.