Changeset 121359 in webkit for trunk/Source/JavaScriptCore
- Timestamp:
- Jun 27, 2012, 12:54:48 PM (13 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r121338 r121359 1 2012-06-27 Anthony Scian <[email protected]> 2 3 Web Inspector [JSC]: Implement ScriptCallStack::stackTrace 4 https://bugs.webkit.org/show_bug.cgi?id=40118 5 6 Reviewed by Yong Li. 7 8 Added member functions to expose function name, urlString, and line #. 9 Refactored toString to make use of these member functions to reduce 10 duplicated code for future maintenance. 11 12 Manually tested refactoring of toString by tracing thrown exceptions. 13 14 * interpreter/Interpreter.h: 15 (StackFrame): 16 (JSC::StackFrame::toString): 17 (JSC::StackFrame::friendlySourceURL): 18 (JSC::StackFrame::friendlyFunctionName): 19 (JSC::StackFrame::friendlyLineNumber): 20 1 21 2012-06-27 Oswald Buddenhagen <[email protected]> 2 22 -
trunk/Source/JavaScriptCore/interpreter/Interpreter.h
r115861 r121359 1 1 /* 2 2 * Copyright (C) 2008 Apple Inc. All rights reserved. 3 * Copyright (C) 2012 Research In Motion Limited. All rights reserved. 3 4 * 4 5 * Redistribution and use in source and binary forms, with or without … … 40 41 41 42 #include <wtf/HashMap.h> 43 #include <wtf/text/StringBuilder.h> 42 44 43 45 namespace JSC { … … 81 83 UString toString(CallFrame* callFrame) const 82 84 { 83 bool hasSourceURLInfo = !sourceURL.isNull() && !sourceURL.isEmpty(); 84 bool hasLineInfo = line > -1; 85 StringBuilder traceBuild; 86 String functionName = friendlyFunctionName(callFrame); 87 String sourceURL = friendlySourceURL(); 88 traceBuild.append(functionName); 89 if (!functionName.isEmpty() && !sourceURL.isEmpty()) 90 traceBuild.append('@'); 91 traceBuild.append(sourceURL); 92 if (line > -1) { 93 traceBuild.append(':'); 94 traceBuild.append(String::number(line)); 95 } 96 return traceBuild.toString().impl(); 97 } 98 String friendlySourceURL() const 99 { 100 String traceLine; 101 102 switch (codeType) { 103 case StackFrameEvalCode: 104 case StackFrameFunctionCode: 105 case StackFrameGlobalCode: 106 if (!sourceURL.isEmpty()) 107 traceLine = sourceURL.impl(); 108 break; 109 case StackFrameNativeCode: 110 traceLine = "[native code]"; 111 break; 112 } 113 return traceLine.isNull() ? emptyString() : traceLine; 114 } 115 String friendlyFunctionName(CallFrame* callFrame) const 116 { 85 117 String traceLine; 86 118 JSObject* stackFrameCallee = callee.get(); … … 88 120 switch (codeType) { 89 121 case StackFrameEvalCode: 90 if (hasSourceURLInfo) { 91 traceLine = hasLineInfo ? String::format("eval code@%s:%d", sourceURL.ascii().data(), line) 92 : String::format("eval code@%s", sourceURL.ascii().data()); 93 } else 94 traceLine = String::format("eval code"); 95 break; 96 case StackFrameNativeCode: { 97 if (callee) { 98 UString functionName = getCalculatedDisplayName(callFrame, stackFrameCallee); 99 traceLine = String::format("%s@[native code]", functionName.ascii().data()); 100 } else 101 traceLine = "[native code]"; 122 traceLine = "eval code"; 123 break; 124 case StackFrameNativeCode: 125 if (callee) 126 traceLine = getCalculatedDisplayName(callFrame, stackFrameCallee).impl(); 127 break; 128 case StackFrameFunctionCode: 129 traceLine = getCalculatedDisplayName(callFrame, stackFrameCallee).impl(); 130 break; 131 case StackFrameGlobalCode: 132 traceLine = "global code"; 102 133 break; 103 134 } 104 case StackFrameFunctionCode: { 105 UString functionName = getCalculatedDisplayName(callFrame, stackFrameCallee); 106 if (hasSourceURLInfo) { 107 traceLine = hasLineInfo ? String::format("%s@%s:%d", functionName.ascii().data(), sourceURL.ascii().data(), line) 108 : String::format("%s@%s", functionName.ascii().data(), sourceURL.ascii().data()); 109 } else 110 traceLine = String::format("%s\n", functionName.ascii().data()); 111 break; 112 } 113 case StackFrameGlobalCode: 114 if (hasSourceURLInfo) { 115 traceLine = hasLineInfo ? String::format("global code@%s:%d", sourceURL.ascii().data(), line) 116 : String::format("global code@%s", sourceURL.ascii().data()); 117 } else 118 traceLine = String::format("global code"); 119 120 } 121 return traceLine.impl(); 135 return traceLine.isNull() ? emptyString() : traceLine; 136 } 137 unsigned friendlyLineNumber() const 138 { 139 return line > -1 ? line : 0; 122 140 } 123 141 };
Note:
See TracChangeset
for help on using the changeset viewer.