Changeset 155081 in webkit
- Timestamp:
- Sep 4, 2013 5:40:15 PM (11 years ago)
- Location:
- trunk/Source
- Files:
-
- 19 edited
- 3 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/API/JSContextRef.cpp
r155075 r155081 38 38 #include "Operations.h" 39 39 #include "SourceProvider.h" 40 #include "Stack Iterator.h"40 #include "StackVisitor.h" 41 41 #include <wtf/text/StringBuilder.h> 42 42 #include <wtf/text/StringHash.h> … … 222 222 } 223 223 224 Stack Iterator::Status operator()(StackIterator& iter)224 StackVisitor::Status operator()(StackVisitor& visitor) 225 225 { 226 226 if (m_remainingCapacityForFrameCapture) { 227 227 // If callee is unknown, but we've not added any frame yet, we should 228 228 // still add the frame, because something called us, and gave us arguments. 229 JSObject* callee = iter->callee();230 if (!callee && iter->index())231 return Stack Iterator::Done;229 JSObject* callee = visitor->callee(); 230 if (!callee && visitor->index()) 231 return StackVisitor::Done; 232 232 233 233 StringBuilder& builder = m_builder; … … 235 235 builder.append('\n'); 236 236 builder.append('#'); 237 builder.appendNumber( iter->index());237 builder.appendNumber(visitor->index()); 238 238 builder.append(' '); 239 builder.append( iter->functionName());239 builder.append(visitor->functionName()); 240 240 builder.appendLiteral("() at "); 241 builder.append( iter->sourceURL());242 if ( iter->isJSFrame()) {241 builder.append(visitor->sourceURL()); 242 if (visitor->isJSFrame()) { 243 243 builder.append(':'); 244 244 unsigned lineNumber; 245 245 unsigned unusedColumn; 246 iter->computeLineAndColumn(lineNumber, unusedColumn);246 visitor->computeLineAndColumn(lineNumber, unusedColumn); 247 247 builder.appendNumber(lineNumber); 248 248 } 249 249 250 250 if (!callee) 251 return Stack Iterator::Done;251 return StackVisitor::Done; 252 252 253 253 m_remainingCapacityForFrameCapture--; 254 return Stack Iterator::Continue;254 return StackVisitor::Continue; 255 255 } 256 return Stack Iterator::Done;256 return StackVisitor::Done; 257 257 } 258 258 -
trunk/Source/JavaScriptCore/CMakeLists.txt
r155023 r155081 207 207 interpreter/Interpreter.cpp 208 208 interpreter/JSStack.cpp 209 interpreter/Stack Iterator.cpp209 interpreter/StackVisitor.cpp 210 210 interpreter/VMInspector.cpp 211 211 -
trunk/Source/JavaScriptCore/ChangeLog
r155076 r155081 1 2013-09-04 Mark Lam <mark.lam@apple.com> 2 3 Renamed StackIterator to StackVisitor. 4 https://bugs.webkit.org/show_bug.cgi?id=120706. 5 6 Reviewed by Geoffrey Garen. 7 8 Also did some minor refactoring: 9 - Renamed StackIterator::iterate() to StackVisitor::visit(). 10 - Make StackVisitor::visit() a static method. 11 - Move the instantiation of the StackVisitor instance into StackVisitor::visit() 12 from CallFrame::iterate(). 13 - Removed StackIterator::resetIterator() and inline its body into the 14 StackVisitor constructor since this is the only remaining caller of it. 15 16 * API/JSContextRef.cpp: 17 (BacktraceFunctor::operator()): 18 * CMakeLists.txt: 19 * GNUmakefile.list.am: 20 * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: 21 * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: 22 * JavaScriptCore.xcodeproj/project.pbxproj: 23 * Target.pri: 24 * interpreter/CallFrame.h: 25 (JSC::ExecState::iterate): 26 * interpreter/Interpreter.cpp: 27 (JSC::DumpRegisterFunctor::operator()): 28 (JSC::unwindCallFrame): 29 (JSC::getStackFrameCodeType): 30 (JSC::GetStackTraceFunctor::operator()): 31 (JSC::UnwindFunctor::operator()): 32 * interpreter/Interpreter.h: 33 * interpreter/StackIterator.cpp: Removed. 34 * interpreter/StackIterator.h: Removed. 35 * interpreter/StackVisitor.cpp: Copied from Source/JavaScriptCore/interpreter/StackIterator.cpp. 36 (JSC::StackVisitor::StackVisitor): 37 (JSC::StackVisitor::gotoNextFrame): 38 (JSC::StackVisitor::readFrame): 39 (JSC::StackVisitor::readNonInlinedFrame): 40 (JSC::StackVisitor::readInlinedFrame): 41 (JSC::StackVisitor::Frame::codeType): 42 (JSC::StackVisitor::Frame::functionName): 43 (JSC::StackVisitor::Frame::sourceURL): 44 (JSC::StackVisitor::Frame::toString): 45 (JSC::StackVisitor::Frame::arguments): 46 (JSC::StackVisitor::Frame::computeLineAndColumn): 47 (JSC::StackVisitor::Frame::retrieveExpressionInfo): 48 (JSC::StackVisitor::Frame::setToEnd): 49 (JSC::StackVisitor::Frame::print): 50 (DebugPrintFrameFunctor::operator()): 51 * interpreter/StackVisitor.h: Copied from Source/JavaScriptCore/interpreter/StackIterator.h. 52 (JSC::StackVisitor::visit): 53 * jsc.cpp: 54 (FunctionJSCStackFunctor::operator()): 55 * profiler/ProfileGenerator.cpp: 56 (JSC::AddParentForConsoleStartFunctor::operator()): 57 * runtime/JSFunction.cpp: 58 (JSC::RetrieveArgumentsFunctor::operator()): 59 (JSC::RetrieveCallerFunctionFunctor::operator()): 60 * runtime/JSGlobalObjectFunctions.cpp: 61 (JSC::GlobalFuncProtoGetterFunctor::operator()): 62 (JSC::GlobalFuncProtoSetterFunctor::operator()): 63 * runtime/ObjectConstructor.cpp: 64 (JSC::ObjectConstructorGetPrototypeOfFunctor::operator()): 65 1 66 2013-09-04 Roger Fong <roger_fong@apple.com> 2 67 -
trunk/Source/JavaScriptCore/GNUmakefile.list.am
r155023 r155081 590 590 Source/JavaScriptCore/interpreter/JSStackInlines.h \ 591 591 Source/JavaScriptCore/interpreter/Register.h \ 592 Source/JavaScriptCore/interpreter/Stack Iterator.cpp \593 Source/JavaScriptCore/interpreter/Stack Iterator.h \592 Source/JavaScriptCore/interpreter/StackVisitor.cpp \ 593 Source/JavaScriptCore/interpreter/StackVisitor.h \ 594 594 Source/JavaScriptCore/interpreter/VMInspector.cpp \ 595 595 Source/JavaScriptCore/interpreter/VMInspector.h \ -
trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj
r155076 r155081 361 361 <ClCompile Include="..\interpreter\Interpreter.cpp" /> 362 362 <ClCompile Include="..\interpreter\JSStack.cpp" /> 363 <ClCompile Include="..\interpreter\Stack Iterator.cpp" />363 <ClCompile Include="..\interpreter\StackVisitor.cpp" /> 364 364 <ClCompile Include="..\interpreter\VMInspector.cpp" /> 365 365 <ClCompile Include="..\jit\ClosureCallStubRoutine.cpp" /> … … 744 744 <ClInclude Include="..\interpreter\JSStackInlines.h" /> 745 745 <ClInclude Include="..\interpreter\Register.h" /> 746 <ClInclude Include="..\interpreter\Stack Iterator.h" />746 <ClInclude Include="..\interpreter\StackVisitor.h" /> 747 747 <ClInclude Include="..\interpreter\VMInspector.h" /> 748 748 <ClInclude Include="..\jit\ClosureCallStubRoutine.h" /> -
trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters
r155076 r155081 286 286 <Filter>interpreter</Filter> 287 287 </ClCompile> 288 <ClCompile Include="..\interpreter\Stack Iterator.cpp">288 <ClCompile Include="..\interpreter\StackVisitor.cpp"> 289 289 <Filter>interpreter</Filter> 290 290 </ClCompile> … … 1330 1330 <Filter>interpreter</Filter> 1331 1331 </ClInclude> 1332 <ClInclude Include="..\interpreter\Stack Iterator.h">1332 <ClInclude Include="..\interpreter\StackVisitor.h"> 1333 1333 <Filter>interpreter</Filter> 1334 1334 </ClInclude> -
trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
r155064 r155081 936 936 A7C1EAEF17987AB600299DB2 /* CallFrameInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C1EAEA17987AB600299DB2 /* CallFrameInlines.h */; settings = {ATTRIBUTES = (Private, ); }; }; 937 937 A7C1EAF017987AB600299DB2 /* JSStackInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C1EAEB17987AB600299DB2 /* JSStackInlines.h */; }; 938 A7C1EAF117987AB600299DB2 /* Stack Iterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7C1EAEC17987AB600299DB2 /* StackIterator.cpp */; };939 A7C1EAF217987AB600299DB2 /* Stack Iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C1EAED17987AB600299DB2 /* StackIterator.h */; settings = {ATTRIBUTES = (Private, ); }; };938 A7C1EAF117987AB600299DB2 /* StackVisitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7C1EAEC17987AB600299DB2 /* StackVisitor.cpp */; }; 939 A7C1EAF217987AB600299DB2 /* StackVisitor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C1EAED17987AB600299DB2 /* StackVisitor.h */; settings = {ATTRIBUTES = (Private, ); }; }; 940 940 A7D89CF217A0B8CC00773AD8 /* DFGBasicBlock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7D89CE317A0B8CC00773AD8 /* DFGBasicBlock.cpp */; }; 941 941 A7D89CF317A0B8CC00773AD8 /* DFGBlockInsertionSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7D89CE417A0B8CC00773AD8 /* DFGBlockInsertionSet.cpp */; }; … … 2140 2140 A7C1EAEA17987AB600299DB2 /* CallFrameInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallFrameInlines.h; sourceTree = "<group>"; }; 2141 2141 A7C1EAEB17987AB600299DB2 /* JSStackInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStackInlines.h; sourceTree = "<group>"; }; 2142 A7C1EAEC17987AB600299DB2 /* Stack Iterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StackIterator.cpp; sourceTree = "<group>"; };2143 A7C1EAED17987AB600299DB2 /* Stack Iterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StackIterator.h; sourceTree = "<group>"; };2142 A7C1EAEC17987AB600299DB2 /* StackVisitor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StackVisitor.cpp; sourceTree = "<group>"; }; 2143 A7C1EAED17987AB600299DB2 /* StackVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StackVisitor.h; sourceTree = "<group>"; }; 2144 2144 A7C225CC139981F100FF1662 /* KeywordLookupGenerator.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = KeywordLookupGenerator.py; sourceTree = "<group>"; }; 2145 2145 A7C225CD1399849C00FF1662 /* KeywordLookup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeywordLookup.h; sourceTree = "<group>"; }; … … 2670 2670 A7C1EAEB17987AB600299DB2 /* JSStackInlines.h */, 2671 2671 149B24FF0D8AF6D1009CB8C7 /* Register.h */, 2672 A7C1EAEC17987AB600299DB2 /* Stack Iterator.cpp */,2673 A7C1EAED17987AB600299DB2 /* Stack Iterator.h */,2672 A7C1EAEC17987AB600299DB2 /* StackVisitor.cpp */, 2673 A7C1EAED17987AB600299DB2 /* StackVisitor.h */, 2674 2674 FE4A331D15BD2E07006F54F3 /* VMInspector.cpp */, 2675 2675 FE4A331E15BD2E07006F54F3 /* VMInspector.h */, … … 4387 4387 0FD8A31C17D51F2200CA2C40 /* FTLOSREntry.h in Headers */, 4388 4388 0FD82E54141DAEEE00179C94 /* SpeculatedType.h in Headers */, 4389 A7C1EAF217987AB600299DB2 /* Stack Iterator.h in Headers */,4389 A7C1EAF217987AB600299DB2 /* StackVisitor.h in Headers */, 4390 4390 14DF04DA16B3996D0016A513 /* StaticPropertyAnalysis.h in Headers */, 4391 4391 14CA958B16AB50DE00938A06 /* StaticPropertyAnalyzer.h in Headers */, … … 5175 5175 0F5541B11613C1FB00CE3E25 /* SpecialPointer.cpp in Sources */, 5176 5176 0FD82E86141F3FF100179C94 /* SpeculatedType.cpp in Sources */, 5177 A7C1EAF117987AB600299DB2 /* Stack Iterator.cpp in Sources */,5177 A7C1EAF117987AB600299DB2 /* StackVisitor.cpp in Sources */, 5178 5178 A730B6131250068F009D25B1 /* StrictEvalActivation.cpp in Sources */, 5179 5179 14469DEB107EC7E700650446 /* StringConstructor.cpp in Sources */, -
trunk/Source/JavaScriptCore/Target.pri
r155023 r155081 206 206 interpreter/Interpreter.cpp \ 207 207 interpreter/JSStack.cpp \ 208 interpreter/Stack Iterator.cpp \208 interpreter/StackVisitor.cpp \ 209 209 jit/ClosureCallStubRoutine.cpp \ 210 210 jit/ExecutableAllocatorFixedVMPool.cpp \ -
trunk/Source/JavaScriptCore/interpreter/CallFrame.h
r155075 r155081 29 29 #include "MacroAssemblerCodeRef.h" 30 30 #include "Register.h" 31 #include "Stack Iterator.h"31 #include "StackVisitor.h" 32 32 33 33 namespace JSC { … … 285 285 286 286 // CallFrame::iterate() expects a Functor that implements the following method: 287 // Stack Iterator::Status operator()(StackIterator&);287 // StackVisitor::Status operator()(StackVisitor&); 288 288 289 289 template <typename Functor> void iterate(Functor& functor) 290 290 { 291 StackIterator iter(this); 292 iter.iterate<Functor>(functor); 291 StackVisitor::visit<Functor>(this, functor); 293 292 } 294 293 -
trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp
r155075 r155081 64 64 #include "Register.h" 65 65 #include "SamplingTool.h" 66 #include "Stack Iterator.h"66 #include "StackVisitor.h" 67 67 #include "StrictEvalActivation.h" 68 68 #include "StrongInlines.h" … … 283 283 } 284 284 285 Stack Iterator::Status operator()(StackIterator& iter)285 StackVisitor::Status operator()(StackVisitor& visitor) 286 286 { 287 287 if (!m_hasSkippedFirstFrame) { 288 288 m_hasSkippedFirstFrame = true; 289 return Stack Iterator::Continue;289 return StackVisitor::Continue; 290 290 } 291 291 292 292 unsigned line = 0; 293 293 unsigned unusedColumn = 0; 294 iter->computeLineAndColumn(line, unusedColumn);295 dataLogF("[ReturnVPC] | %10p | %d (line %d)\n", m_it, iter->bytecodeOffset(), line);294 visitor->computeLineAndColumn(line, unusedColumn); 295 dataLogF("[ReturnVPC] | %10p | %d (line %d)\n", m_it, visitor->bytecodeOffset(), line); 296 296 ++m_it; 297 return Stack Iterator::Done;297 return StackVisitor::Done; 298 298 } 299 299 … … 390 390 } 391 391 392 static bool unwindCallFrame(Stack Iterator& iter, JSValue exceptionValue)393 { 394 CallFrame* callFrame = iter->callFrame();395 CodeBlock* codeBlock = iter->codeBlock();392 static bool unwindCallFrame(StackVisitor& visitor, JSValue exceptionValue) 393 { 394 CallFrame* callFrame = visitor->callFrame(); 395 CodeBlock* codeBlock = visitor->codeBlock(); 396 396 CodeBlock* oldCodeBlock = codeBlock; 397 397 JSScope* scope = callFrame->scope(); … … 432 432 } 433 433 434 static StackFrameCodeType getStackFrameCodeType(Stack Iterator iter)435 { 436 switch ( iter->codeType()) {437 case Stack Iterator::Frame::Eval:434 static StackFrameCodeType getStackFrameCodeType(StackVisitor& visitor) 435 { 436 switch (visitor->codeType()) { 437 case StackVisitor::Frame::Eval: 438 438 return StackFrameEvalCode; 439 case Stack Iterator::Frame::Function:439 case StackVisitor::Frame::Function: 440 440 return StackFrameFunctionCode; 441 case Stack Iterator::Frame::Global:441 case StackVisitor::Frame::Global: 442 442 return StackFrameGlobalCode; 443 case Stack Iterator::Frame::Native:443 case StackVisitor::Frame::Native: 444 444 ASSERT_NOT_REACHED(); 445 445 return StackFrameNativeCode; … … 507 507 } 508 508 509 Stack Iterator::Status operator()(StackIterator& iter)509 StackVisitor::Status operator()(StackVisitor& visitor) 510 510 { 511 511 VM& vm = m_vm; 512 512 if (m_remainingCapacityForFrameCapture) { 513 if ( iter->isJSFrame()) {514 CodeBlock* codeBlock = iter->codeBlock();513 if (visitor->isJSFrame()) { 514 CodeBlock* codeBlock = visitor->codeBlock(); 515 515 StackFrame s = { 516 Strong<JSObject>(vm, iter->callee()),517 getStackFrameCodeType( iter),516 Strong<JSObject>(vm, visitor->callee()), 517 getStackFrameCodeType(visitor), 518 518 Strong<ExecutableBase>(vm, codeBlock->ownerExecutable()), 519 519 Strong<UnlinkedCodeBlock>(vm, codeBlock->unlinkedCodeBlock()), … … 522 522 codeBlock->firstLineColumnOffset(), 523 523 codeBlock->sourceOffset(), 524 iter->bytecodeOffset(),525 iter->sourceURL()524 visitor->bytecodeOffset(), 525 visitor->sourceURL() 526 526 }; 527 527 m_results.append(s); 528 528 } else { 529 StackFrame s = { Strong<JSObject>(vm, iter->callee()), StackFrameNativeCode, Strong<ExecutableBase>(), Strong<UnlinkedCodeBlock>(), 0, 0, 0, 0, 0, String()};529 StackFrame s = { Strong<JSObject>(vm, visitor->callee()), StackFrameNativeCode, Strong<ExecutableBase>(), Strong<UnlinkedCodeBlock>(), 0, 0, 0, 0, 0, String()}; 530 530 m_results.append(s); 531 531 } 532 532 533 533 m_remainingCapacityForFrameCapture--; 534 return Stack Iterator::Continue;535 } 536 return Stack Iterator::Done;534 return StackVisitor::Continue; 535 } 536 return StackVisitor::Done; 537 537 } 538 538 … … 578 578 } 579 579 580 Stack Iterator::Status operator()(StackIterator& iter)580 StackVisitor::Status operator()(StackVisitor& visitor) 581 581 { 582 582 VM& vm = m_callFrame->vm(); 583 m_callFrame = iter->callFrame();584 m_codeBlock = iter->codeBlock();585 unsigned bytecodeOffset = iter->bytecodeOffset();583 m_callFrame = visitor->callFrame(); 584 m_codeBlock = visitor->codeBlock(); 585 unsigned bytecodeOffset = visitor->bytecodeOffset(); 586 586 587 587 if (m_isTermination || !(m_handler = m_codeBlock->handlerForBytecodeOffset(bytecodeOffset))) { 588 if (!unwindCallFrame( iter, m_exceptionValue)) {588 if (!unwindCallFrame(visitor, m_exceptionValue)) { 589 589 if (LegacyProfiler* profiler = vm.enabledProfiler()) 590 590 profiler->exceptionUnwind(m_callFrame); 591 return Stack Iterator::Done;591 return StackVisitor::Done; 592 592 } 593 593 } else 594 return Stack Iterator::Done;595 596 return Stack Iterator::Continue;594 return StackVisitor::Done; 595 596 return StackVisitor::Continue; 597 597 } 598 598 -
trunk/Source/JavaScriptCore/interpreter/Interpreter.h
r155013 r155081 57 57 class JSScope; 58 58 class SamplingTool; 59 class StackIterator;60 59 struct CallFrameClosure; 61 60 struct HandlerInfo; -
trunk/Source/JavaScriptCore/interpreter/StackVisitor.cpp
r155075 r155081 25 25 26 26 #include "config.h" 27 #include "Stack Iterator.h"27 #include "StackVisitor.h" 28 28 29 29 #include "Arguments.h" … … 36 36 namespace JSC { 37 37 38 Stack Iterator::StackIterator(CallFrame* startFrame)39 : m_startFrame(startFrame) 40 { 41 re setIterator();42 } 43 44 void Stack Iterator::gotoNextFrame()38 StackVisitor::StackVisitor(CallFrame* startFrame) 39 { 40 m_frame.m_index = 0; 41 readFrame(startFrame); 42 } 43 44 void StackVisitor::gotoNextFrame() 45 45 { 46 46 #if ENABLE(DFG_JIT) … … 55 55 } 56 56 57 void StackIterator::resetIterator() 58 { 59 m_frame.m_index = 0; 60 readFrame(m_startFrame); 61 } 62 63 void StackIterator::readFrame(CallFrame* callFrame) 57 void StackVisitor::readFrame(CallFrame* callFrame) 64 58 { 65 59 ASSERT(!callFrame->hasHostCallFrameFlag()); … … 107 101 } 108 102 109 void Stack Iterator::readNonInlinedFrame(CallFrame* callFrame, CodeOrigin* codeOrigin)103 void StackVisitor::readNonInlinedFrame(CallFrame* callFrame, CodeOrigin* codeOrigin) 110 104 { 111 105 m_frame.m_callFrame = callFrame; … … 131 125 } 132 126 133 void Stack Iterator::readInlinedFrame(CallFrame* callFrame, CodeOrigin* codeOrigin)127 void StackVisitor::readInlinedFrame(CallFrame* callFrame, CodeOrigin* codeOrigin) 134 128 { 135 129 ASSERT(codeOrigin); … … 171 165 #endif // ENABLE(DFG_JIT) 172 166 173 Stack Iterator::Frame::CodeType StackIterator::Frame::codeType() const167 StackVisitor::Frame::CodeType StackVisitor::Frame::codeType() const 174 168 { 175 169 if (!isJSFrame()) 176 return Stack Iterator::Frame::Native;170 return StackVisitor::Frame::Native; 177 171 178 172 switch (codeBlock()->codeType()) { 179 173 case EvalCode: 180 return Stack Iterator::Frame::Eval;174 return StackVisitor::Frame::Eval; 181 175 case FunctionCode: 182 return Stack Iterator::Frame::Function;176 return StackVisitor::Frame::Function; 183 177 case GlobalCode: 184 return Stack Iterator::Frame::Global;178 return StackVisitor::Frame::Global; 185 179 } 186 180 RELEASE_ASSERT_NOT_REACHED(); 187 return Stack Iterator::Frame::Global;188 } 189 190 String Stack Iterator::Frame::functionName()181 return StackVisitor::Frame::Global; 182 } 183 184 String StackVisitor::Frame::functionName() 191 185 { 192 186 String traceLine; … … 194 188 195 189 switch (codeType()) { 196 case Stack Iterator::Frame::Eval:190 case StackVisitor::Frame::Eval: 197 191 traceLine = "eval code"; 198 192 break; 199 case Stack Iterator::Frame::Native:193 case StackVisitor::Frame::Native: 200 194 if (callee) 201 195 traceLine = getCalculatedDisplayName(callFrame(), callee).impl(); 202 196 break; 203 case Stack Iterator::Frame::Function:197 case StackVisitor::Frame::Function: 204 198 traceLine = getCalculatedDisplayName(callFrame(), callee).impl(); 205 199 break; 206 case Stack Iterator::Frame::Global:200 case StackVisitor::Frame::Global: 207 201 traceLine = "global code"; 208 202 break; … … 211 205 } 212 206 213 String Stack Iterator::Frame::sourceURL()207 String StackVisitor::Frame::sourceURL() 214 208 { 215 209 String traceLine; 216 210 217 211 switch (codeType()) { 218 case Stack Iterator::Frame::Eval:219 case Stack Iterator::Frame::Function:220 case Stack Iterator::Frame::Global: {212 case StackVisitor::Frame::Eval: 213 case StackVisitor::Frame::Function: 214 case StackVisitor::Frame::Global: { 221 215 String sourceURL = codeBlock()->ownerExecutable()->sourceURL(); 222 216 if (!sourceURL.isEmpty()) … … 224 218 break; 225 219 } 226 case Stack Iterator::Frame::Native:220 case StackVisitor::Frame::Native: 227 221 traceLine = "[native code]"; 228 222 break; … … 231 225 } 232 226 233 String Stack Iterator::Frame::toString()227 String StackVisitor::Frame::toString() 234 228 { 235 229 StringBuilder traceBuild; … … 254 248 } 255 249 256 Arguments* Stack Iterator::Frame::arguments()250 Arguments* StackVisitor::Frame::arguments() 257 251 { 258 252 ASSERT(m_callFrame); … … 274 268 } 275 269 276 void Stack Iterator::Frame::computeLineAndColumn(unsigned& line, unsigned& column)270 void StackVisitor::Frame::computeLineAndColumn(unsigned& line, unsigned& column) 277 271 { 278 272 CodeBlock* codeBlock = this->codeBlock(); … … 294 288 } 295 289 296 void Stack Iterator::Frame::retrieveExpressionInfo(int& divot, int& startOffset, int& endOffset, unsigned& line, unsigned& column)290 void StackVisitor::Frame::retrieveExpressionInfo(int& divot, int& startOffset, int& endOffset, unsigned& line, unsigned& column) 297 291 { 298 292 CodeBlock* codeBlock = this->codeBlock(); … … 301 295 } 302 296 303 void Stack Iterator::Frame::setToEnd()297 void StackVisitor::Frame::setToEnd() 304 298 { 305 299 m_callFrame = 0; … … 353 347 } 354 348 355 void Stack Iterator::Frame::print(int indentLevel)349 void StackVisitor::Frame::print(int indentLevel) 356 350 { 357 351 int i = indentLevel; … … 418 412 419 413 #ifndef NDEBUG 420 using JSC::Stack Iterator;414 using JSC::StackVisitor; 421 415 422 416 // For debugging use … … 436 430 } 437 431 438 Stack Iterator::Status operator()(StackIterator& iter)432 StackVisitor::Status operator()(StackVisitor& visitor) 439 433 { 440 iter->print(2);441 return m_action == PrintAll ? Stack Iterator::Continue : StackIterator::Done;434 visitor->print(2); 435 return m_action == PrintAll ? StackVisitor::Continue : StackVisitor::Done; 442 436 } 443 437 -
trunk/Source/JavaScriptCore/interpreter/StackVisitor.h
r155075 r155081 24 24 */ 25 25 26 #ifndef Stack Iterator_h27 #define Stack Iterator_h26 #ifndef StackVisitor_h 27 #define StackVisitor_h 28 28 29 29 #include <wtf/text/WTFString.h> … … 43 43 typedef ExecState CallFrame; 44 44 45 class Stack Iterator {45 class StackVisitor { 46 46 public: 47 47 class Frame { … … 103 103 CallFrame* m_callFrame; 104 104 105 friend class Stack Iterator;105 friend class StackVisitor; 106 106 }; 107 107 … … 111 111 }; 112 112 113 // Stack Iterator::iterate() expects a Functor that implements the following method:114 // Status operator()(Stack Iterator&);113 // StackVisitor::visit() expects a Functor that implements the following method: 114 // Status operator()(StackVisitor&); 115 115 116 template <typename Functor> void iterate(Functor& functor) 116 template <typename Functor> 117 static void visit(CallFrame* startFrame, Functor& functor) 117 118 { 118 while (m_frame.callFrame()) { 119 Status status = functor(*this); 119 StackVisitor visitor(startFrame); 120 while (visitor->callFrame()) { 121 Status status = functor(visitor); 120 122 if (status != Continue) 121 123 break; 122 gotoNextFrame();124 visitor.gotoNextFrame(); 123 125 } 124 126 } … … 128 130 129 131 private: 130 JS_EXPORT_PRIVATE Stack Iterator(CallFrame* startFrame);132 JS_EXPORT_PRIVATE StackVisitor(CallFrame* startFrame); 131 133 132 134 JS_EXPORT_PRIVATE void gotoNextFrame(); 133 void resetIterator();134 135 135 136 void readFrame(CallFrame*); … … 139 140 #endif 140 141 141 CallFrame* m_startFrame;142 142 Frame m_frame; 143 144 friend class ExecState;145 143 }; 146 144 147 145 } // namespace JSC 148 146 149 #endif // Stack Iterator_h147 #endif // StackVisitor_h 150 148 -
trunk/Source/JavaScriptCore/jsc.cpp
r155075 r155081 40 40 #include "Operations.h" 41 41 #include "SamplingTool.h" 42 #include "Stack Iterator.h"42 #include "StackVisitor.h" 43 43 #include "StructureRareDataInlines.h" 44 44 #include <math.h> … … 334 334 } 335 335 336 Stack Iterator::Status operator()(StackIterator& iter)336 StackVisitor::Status operator()(StackVisitor& visitor) 337 337 { 338 m_trace.append(String::format(" %zu %s\n", iter->index(), iter->toString().utf8().data()));339 return Stack Iterator::Continue;338 m_trace.append(String::format(" %zu %s\n", visitor->index(), visitor->toString().utf8().data())); 339 return StackVisitor::Continue; 340 340 } 341 341 -
trunk/Source/JavaScriptCore/profiler/ProfileGenerator.cpp
r155075 r155081 36 36 #include "Operations.h" 37 37 #include "Profile.h" 38 #include "Stack Iterator.h"38 #include "StackVisitor.h" 39 39 #include "Tracing.h" 40 40 … … 71 71 bool foundParent() const { return m_foundParent; } 72 72 73 Stack Iterator::Status operator()(StackIterator& iter)73 StackVisitor::Status operator()(StackVisitor& visitor) 74 74 { 75 75 if (!m_hasSkippedFirstFrame) { 76 76 m_hasSkippedFirstFrame = true; 77 return Stack Iterator::Continue;77 return StackVisitor::Continue; 78 78 } 79 79 80 80 unsigned line = 0; 81 81 unsigned unusedColumn = 0; 82 iter->computeLineAndColumn(line, unusedColumn);83 m_currentNode = ProfileNode::create(m_exec, LegacyProfiler::createCallIdentifier(m_exec, iter->callee(), iter->sourceURL(), line), m_head.get(), m_head.get());82 visitor->computeLineAndColumn(line, unusedColumn); 83 m_currentNode = ProfileNode::create(m_exec, LegacyProfiler::createCallIdentifier(m_exec, visitor->callee(), visitor->sourceURL(), line), m_head.get(), m_head.get()); 84 84 m_head->insertNode(m_currentNode.get()); 85 85 86 86 m_foundParent = true; 87 return Stack Iterator::Done;87 return StackVisitor::Done; 88 88 } 89 89 -
trunk/Source/JavaScriptCore/runtime/JSFunction.cpp
r155075 r155081 44 44 #include "Parser.h" 45 45 #include "PropertyNameArray.h" 46 #include "Stack Iterator.h"46 #include "StackVisitor.h" 47 47 48 48 using namespace WTF; … … 193 193 JSValue result() const { return m_result; } 194 194 195 Stack Iterator::Status operator()(StackIterator& iter)195 StackVisitor::Status operator()(StackVisitor& visitor) 196 196 { 197 JSObject* callee = iter->callee();197 JSObject* callee = visitor->callee(); 198 198 if (callee != m_targetCallee) 199 return Stack Iterator::Continue;200 201 m_result = JSValue( iter->arguments());202 return Stack Iterator::Done;199 return StackVisitor::Continue; 200 201 m_result = JSValue(visitor->arguments()); 202 return StackVisitor::Done; 203 203 } 204 204 … … 235 235 JSValue result() const { return m_result; } 236 236 237 Stack Iterator::Status operator()(StackIterator& iter)237 StackVisitor::Status operator()(StackVisitor& visitor) 238 238 { 239 JSObject* callee = iter->callee();239 JSObject* callee = visitor->callee(); 240 240 241 241 if (callee && callee->inherits(JSBoundFunction::info())) 242 return Stack Iterator::Continue;242 return StackVisitor::Continue; 243 243 244 244 if (!m_hasFoundFrame && (callee != m_targetCallee)) 245 return Stack Iterator::Continue;245 return StackVisitor::Continue; 246 246 247 247 m_hasFoundFrame = true; 248 248 if (!m_hasSkippedToCallerFrame) { 249 249 m_hasSkippedToCallerFrame = true; 250 return Stack Iterator::Continue;250 return StackVisitor::Continue; 251 251 } 252 252 253 253 if (callee) 254 254 m_result = callee; 255 return Stack Iterator::Done;255 return StackVisitor::Done; 256 256 } 257 257 -
trunk/Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp
r155075 r155081 38 38 #include "Operations.h" 39 39 #include "Parser.h" 40 #include "Stack Iterator.h"40 #include "StackVisitor.h" 41 41 #include <wtf/dtoa.h> 42 42 #include <stdio.h> … … 718 718 EncodedJSValue result() { return m_result; } 719 719 720 Stack Iterator::Status operator()(StackIterator& iter)720 StackVisitor::Status operator()(StackVisitor& visitor) 721 721 { 722 722 if (!m_hasSkippedFirstFrame) { 723 723 m_hasSkippedFirstFrame = true; 724 return Stack Iterator::Continue;725 } 726 727 if (m_thisObject->allowsAccessFrom( iter->callFrame()))724 return StackVisitor::Continue; 725 } 726 727 if (m_thisObject->allowsAccessFrom(visitor->callFrame())) 728 728 m_result = JSValue::encode(m_thisObject->prototype()); 729 729 730 return Stack Iterator::Done;730 return StackVisitor::Done; 731 731 } 732 732 … … 760 760 bool allowsAccess() const { return m_allowsAccess; } 761 761 762 Stack Iterator::Status operator()(StackIterator& iter)762 StackVisitor::Status operator()(StackVisitor& visitor) 763 763 { 764 764 if (!m_hasSkippedFirstFrame) { 765 765 m_hasSkippedFirstFrame = true; 766 return Stack Iterator::Continue;767 } 768 769 m_allowsAccess = m_thisObject->allowsAccessFrom( iter->callFrame());770 return Stack Iterator::Done;766 return StackVisitor::Continue; 767 } 768 769 m_allowsAccess = m_thisObject->allowsAccessFrom(visitor->callFrame()); 770 return StackVisitor::Done; 771 771 } 772 772 -
trunk/Source/JavaScriptCore/runtime/ObjectConstructor.cpp
r155075 r155081 35 35 #include "PropertyDescriptor.h" 36 36 #include "PropertyNameArray.h" 37 #include "Stack Iterator.h"37 #include "StackVisitor.h" 38 38 39 39 namespace JSC { … … 143 143 EncodedJSValue result() const { return m_result; } 144 144 145 Stack Iterator::Status operator()(StackIterator& iter)145 StackVisitor::Status operator()(StackVisitor& visitor) 146 146 { 147 147 if (!m_hasSkippedFirstFrame) { 148 148 m_hasSkippedFirstFrame = true; 149 return Stack Iterator::Continue;149 return StackVisitor::Continue; 150 150 } 151 151 152 if (m_object->allowsAccessFrom( iter->callFrame()))152 if (m_object->allowsAccessFrom(visitor->callFrame())) 153 153 m_result = JSValue::encode(m_object->prototype()); 154 return Stack Iterator::Done;154 return StackVisitor::Done; 155 155 } 156 156 -
trunk/Source/WebCore/ChangeLog
r155078 r155081 1 2013-09-04 Mark Lam <mark.lam@apple.com> 2 3 Renamed StackIterator to StackVisitor. 4 https://bugs.webkit.org/show_bug.cgi?id=120706. 5 6 Reviewed by Geoffrey Garen. 7 8 No new tests. 9 10 * ForwardingHeaders/interpreter/StackIterator.h: Removed. 11 * ForwardingHeaders/interpreter/StackVisitor.h: Copied from Source/WebCore/ForwardingHeaders/interpreter/StackIterator.h. 12 * bindings/js/JSXMLHttpRequestCustom.cpp: 13 (WebCore::SendFunctor::operator()): 14 * bindings/js/ScriptCallStackFactory.cpp: 15 (WebCore::CreateScriptCallStackFunctor::operator()): 16 (WebCore::CreateScriptCallStackForConsoleFunctor::operator()): 17 1 18 2013-09-04 Samuel White <samuel_white@apple.com> 2 19 -
trunk/Source/WebCore/ForwardingHeaders/interpreter/StackVisitor.h
r155074 r155081 1 #ifndef WebCore_FWD_Stack Iterator_h2 #define WebCore_FWD_Stack Iterator_h3 #include <JavaScriptCore/Stack Iterator.h>1 #ifndef WebCore_FWD_StackVisitor_h 2 #define WebCore_FWD_StackVisitor_h 3 #include <JavaScriptCore/StackVisitor.h> 4 4 #endif -
trunk/Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp
r155075 r155081 46 46 #include "JSEventListener.h" 47 47 #include "XMLHttpRequest.h" 48 #include <interpreter/Stack Iterator.h>48 #include <interpreter/StackVisitor.h> 49 49 #include <runtime/ArrayBuffer.h> 50 50 #include <runtime/Error.h> … … 124 124 String url() const { return m_url; } 125 125 126 Stack Iterator::Status operator()(StackIterator& iter)126 StackVisitor::Status operator()(StackVisitor& visitor) 127 127 { 128 128 if (!m_hasSkippedFirstFrame) { 129 129 m_hasSkippedFirstFrame = true; 130 return Stack Iterator::Continue;130 return StackVisitor::Continue; 131 131 } 132 132 133 133 unsigned line = 0; 134 134 unsigned unusedColumn = 0; 135 iter->computeLineAndColumn(line, unusedColumn);135 visitor->computeLineAndColumn(line, unusedColumn); 136 136 m_line = line; 137 m_url = iter->sourceURL();138 return Stack Iterator::Done;137 m_url = visitor->sourceURL(); 138 return StackVisitor::Done; 139 139 } 140 140 -
trunk/Source/WebCore/bindings/js/ScriptCallStackFactory.cpp
r155075 r155081 42 42 #include <interpreter/CallFrame.h> 43 43 #include <interpreter/CallFrameInlines.h> 44 #include <interpreter/Stack Iterator.h>44 #include <interpreter/StackVisitor.h> 45 45 #include <runtime/ArgList.h> 46 46 #include <runtime/JSCJSValue.h> … … 63 63 } 64 64 65 Stack Iterator::Status operator()(StackIterator& iter)65 StackVisitor::Status operator()(StackVisitor& visitor) 66 66 { 67 67 if (m_remainingCapacityForFrameCapture) { 68 68 unsigned line; 69 69 unsigned column; 70 iter->computeLineAndColumn(line, column);71 m_frames.append(ScriptCallFrame( iter->functionName(), iter->sourceURL(), line, column));70 visitor->computeLineAndColumn(line, column); 71 m_frames.append(ScriptCallFrame(visitor->functionName(), visitor->sourceURL(), line, column)); 72 72 73 73 m_remainingCapacityForFrameCapture--; 74 return Stack Iterator::Continue;75 } 76 return Stack Iterator::Done;74 return StackVisitor::Continue; 75 } 76 return StackVisitor::Done; 77 77 } 78 78 … … 108 108 } 109 109 110 Stack Iterator::Status operator()(StackIterator& iter)110 StackVisitor::Status operator()(StackVisitor& visitor) 111 111 { 112 112 if (m_needToSkipAFrame) { 113 113 m_needToSkipAFrame = false; 114 return Stack Iterator::Continue;114 return StackVisitor::Continue; 115 115 } 116 116 … … 119 119 // but the stack trace we produce now is complete and handles all 120 120 // ways in which code may be running 121 if (! iter->callee() && m_frames.size())122 return Stack Iterator::Done;121 if (!visitor->callee() && m_frames.size()) 122 return StackVisitor::Done; 123 123 124 124 unsigned line; 125 125 unsigned column; 126 iter->computeLineAndColumn(line, column);127 m_frames.append(ScriptCallFrame( iter->functionName(), iter->sourceURL(), line, column));126 visitor->computeLineAndColumn(line, column); 127 m_frames.append(ScriptCallFrame(visitor->functionName(), visitor->sourceURL(), line, column)); 128 128 129 129 m_remainingCapacityForFrameCapture--; 130 return Stack Iterator::Continue;131 } 132 return Stack Iterator::Done;130 return StackVisitor::Continue; 131 } 132 return StackVisitor::Done; 133 133 } 134 134
Note: See TracChangeset
for help on using the changeset viewer.