Changeset 155081 in webkit


Ignore:
Timestamp:
Sep 4, 2013 5:40:15 PM (11 years ago)
Author:
mark.lam@apple.com
Message:

Renamed StackIterator to StackVisitor.
https://bugs.webkit.org/show_bug.cgi?id=120706.

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Also did some minor refactoring:

  • Renamed StackIterator::iterate() to StackVisitor::visit().
  • Make StackVisitor::visit() a static method.
  • Move the instantiation of the StackVisitor instance into StackVisitor::visit() from CallFrame::iterate().
  • Removed StackIterator::resetIterator() and inline its body into the StackVisitor constructor since this is the only remaining caller of it.
  • API/JSContextRef.cpp:

(BacktraceFunctor::operator()):

  • CMakeLists.txt:
  • GNUmakefile.list.am:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Target.pri:
  • interpreter/CallFrame.h:

(JSC::ExecState::iterate):

  • interpreter/Interpreter.cpp:

(JSC::DumpRegisterFunctor::operator()):
(JSC::unwindCallFrame):
(JSC::getStackFrameCodeType):
(JSC::GetStackTraceFunctor::operator()):
(JSC::UnwindFunctor::operator()):

  • interpreter/Interpreter.h:
  • interpreter/StackIterator.cpp: Removed.
  • interpreter/StackIterator.h: Removed.
  • interpreter/StackVisitor.cpp: Copied from Source/JavaScriptCore/interpreter/StackIterator.cpp.

(JSC::StackVisitor::StackVisitor):
(JSC::StackVisitor::gotoNextFrame):
(JSC::StackVisitor::readFrame):
(JSC::StackVisitor::readNonInlinedFrame):
(JSC::StackVisitor::readInlinedFrame):
(JSC::StackVisitor::Frame::codeType):
(JSC::StackVisitor::Frame::functionName):
(JSC::StackVisitor::Frame::sourceURL):
(JSC::StackVisitor::Frame::toString):
(JSC::StackVisitor::Frame::arguments):
(JSC::StackVisitor::Frame::computeLineAndColumn):
(JSC::StackVisitor::Frame::retrieveExpressionInfo):
(JSC::StackVisitor::Frame::setToEnd):
(JSC::StackVisitor::Frame::print):
(DebugPrintFrameFunctor::operator()):

  • interpreter/StackVisitor.h: Copied from Source/JavaScriptCore/interpreter/StackIterator.h.

(JSC::StackVisitor::visit):

  • jsc.cpp:

(FunctionJSCStackFunctor::operator()):

  • profiler/ProfileGenerator.cpp:

(JSC::AddParentForConsoleStartFunctor::operator()):

  • runtime/JSFunction.cpp:

(JSC::RetrieveArgumentsFunctor::operator()):
(JSC::RetrieveCallerFunctionFunctor::operator()):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::GlobalFuncProtoGetterFunctor::operator()):
(JSC::GlobalFuncProtoSetterFunctor::operator()):

  • runtime/ObjectConstructor.cpp:

(JSC::ObjectConstructorGetPrototypeOfFunctor::operator()):

Source/WebCore:

No new tests.

  • ForwardingHeaders/interpreter/StackIterator.h: Removed.
  • ForwardingHeaders/interpreter/StackVisitor.h: Copied from Source/WebCore/ForwardingHeaders/interpreter/StackIterator.h.
  • bindings/js/JSXMLHttpRequestCustom.cpp:

(WebCore::SendFunctor::operator()):

  • bindings/js/ScriptCallStackFactory.cpp:

(WebCore::CreateScriptCallStackFunctor::operator()):
(WebCore::CreateScriptCallStackForConsoleFunctor::operator()):

Location:
trunk/Source
Files:
19 edited
3 moved

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/API/JSContextRef.cpp

    r155075 r155081  
    3838#include "Operations.h"
    3939#include "SourceProvider.h"
    40 #include "StackIterator.h"
     40#include "StackVisitor.h"
    4141#include <wtf/text/StringBuilder.h>
    4242#include <wtf/text/StringHash.h>
     
    222222    }
    223223
    224     StackIterator::Status operator()(StackIterator& iter)
     224    StackVisitor::Status operator()(StackVisitor& visitor)
    225225    {
    226226        if (m_remainingCapacityForFrameCapture) {
    227227            // If callee is unknown, but we've not added any frame yet, we should
    228228            // still add the frame, because something called us, and gave us arguments.
    229             JSObject* callee = iter->callee();
    230             if (!callee && iter->index())
    231                 return StackIterator::Done;
     229            JSObject* callee = visitor->callee();
     230            if (!callee && visitor->index())
     231                return StackVisitor::Done;
    232232
    233233            StringBuilder& builder = m_builder;
     
    235235                builder.append('\n');
    236236            builder.append('#');
    237             builder.appendNumber(iter->index());
     237            builder.appendNumber(visitor->index());
    238238            builder.append(' ');
    239             builder.append(iter->functionName());
     239            builder.append(visitor->functionName());
    240240            builder.appendLiteral("() at ");
    241             builder.append(iter->sourceURL());
    242             if (iter->isJSFrame()) {
     241            builder.append(visitor->sourceURL());
     242            if (visitor->isJSFrame()) {
    243243                builder.append(':');
    244244                unsigned lineNumber;
    245245                unsigned unusedColumn;
    246                 iter->computeLineAndColumn(lineNumber, unusedColumn);
     246                visitor->computeLineAndColumn(lineNumber, unusedColumn);
    247247                builder.appendNumber(lineNumber);
    248248            }
    249249
    250250            if (!callee)
    251                 return StackIterator::Done;
     251                return StackVisitor::Done;
    252252
    253253            m_remainingCapacityForFrameCapture--;
    254             return StackIterator::Continue;
     254            return StackVisitor::Continue;
    255255        }
    256         return StackIterator::Done;
     256        return StackVisitor::Done;
    257257    }
    258258
  • trunk/Source/JavaScriptCore/CMakeLists.txt

    r155023 r155081  
    207207    interpreter/Interpreter.cpp
    208208    interpreter/JSStack.cpp
    209     interpreter/StackIterator.cpp
     209    interpreter/StackVisitor.cpp
    210210    interpreter/VMInspector.cpp
    211211
  • trunk/Source/JavaScriptCore/ChangeLog

    r155076 r155081  
     12013-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
    1662013-09-04  Roger Fong  <roger_fong@apple.com>
    267
  • trunk/Source/JavaScriptCore/GNUmakefile.list.am

    r155023 r155081  
    590590        Source/JavaScriptCore/interpreter/JSStackInlines.h \
    591591        Source/JavaScriptCore/interpreter/Register.h \
    592         Source/JavaScriptCore/interpreter/StackIterator.cpp \
    593         Source/JavaScriptCore/interpreter/StackIterator.h \
     592        Source/JavaScriptCore/interpreter/StackVisitor.cpp \
     593        Source/JavaScriptCore/interpreter/StackVisitor.h \
    594594        Source/JavaScriptCore/interpreter/VMInspector.cpp \
    595595        Source/JavaScriptCore/interpreter/VMInspector.h \
  • trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj

    r155076 r155081  
    361361    <ClCompile Include="..\interpreter\Interpreter.cpp" />
    362362    <ClCompile Include="..\interpreter\JSStack.cpp" />
    363     <ClCompile Include="..\interpreter\StackIterator.cpp" />
     363    <ClCompile Include="..\interpreter\StackVisitor.cpp" />
    364364    <ClCompile Include="..\interpreter\VMInspector.cpp" />
    365365    <ClCompile Include="..\jit\ClosureCallStubRoutine.cpp" />
     
    744744    <ClInclude Include="..\interpreter\JSStackInlines.h" />
    745745    <ClInclude Include="..\interpreter\Register.h" />
    746     <ClInclude Include="..\interpreter\StackIterator.h" />
     746    <ClInclude Include="..\interpreter\StackVisitor.h" />
    747747    <ClInclude Include="..\interpreter\VMInspector.h" />
    748748    <ClInclude Include="..\jit\ClosureCallStubRoutine.h" />
  • trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters

    r155076 r155081  
    286286      <Filter>interpreter</Filter>
    287287    </ClCompile>
    288     <ClCompile Include="..\interpreter\StackIterator.cpp">
     288    <ClCompile Include="..\interpreter\StackVisitor.cpp">
    289289      <Filter>interpreter</Filter>
    290290    </ClCompile>
     
    13301330      <Filter>interpreter</Filter>
    13311331    </ClInclude>
    1332     <ClInclude Include="..\interpreter\StackIterator.h">
     1332    <ClInclude Include="..\interpreter\StackVisitor.h">
    13331333      <Filter>interpreter</Filter>
    13341334    </ClInclude>
  • trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r155064 r155081  
    936936                A7C1EAEF17987AB600299DB2 /* CallFrameInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C1EAEA17987AB600299DB2 /* CallFrameInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
    937937                A7C1EAF017987AB600299DB2 /* JSStackInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C1EAEB17987AB600299DB2 /* JSStackInlines.h */; };
    938                 A7C1EAF117987AB600299DB2 /* StackIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7C1EAEC17987AB600299DB2 /* StackIterator.cpp */; };
    939                 A7C1EAF217987AB600299DB2 /* StackIterator.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, ); }; };
    940940                A7D89CF217A0B8CC00773AD8 /* DFGBasicBlock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7D89CE317A0B8CC00773AD8 /* DFGBasicBlock.cpp */; };
    941941                A7D89CF317A0B8CC00773AD8 /* DFGBlockInsertionSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7D89CE417A0B8CC00773AD8 /* DFGBlockInsertionSet.cpp */; };
     
    21402140                A7C1EAEA17987AB600299DB2 /* CallFrameInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallFrameInlines.h; sourceTree = "<group>"; };
    21412141                A7C1EAEB17987AB600299DB2 /* JSStackInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStackInlines.h; sourceTree = "<group>"; };
    2142                 A7C1EAEC17987AB600299DB2 /* StackIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StackIterator.cpp; sourceTree = "<group>"; };
    2143                 A7C1EAED17987AB600299DB2 /* StackIterator.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>"; };
    21442144                A7C225CC139981F100FF1662 /* KeywordLookupGenerator.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = KeywordLookupGenerator.py; sourceTree = "<group>"; };
    21452145                A7C225CD1399849C00FF1662 /* KeywordLookup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeywordLookup.h; sourceTree = "<group>"; };
     
    26702670                                A7C1EAEB17987AB600299DB2 /* JSStackInlines.h */,
    26712671                                149B24FF0D8AF6D1009CB8C7 /* Register.h */,
    2672                                 A7C1EAEC17987AB600299DB2 /* StackIterator.cpp */,
    2673                                 A7C1EAED17987AB600299DB2 /* StackIterator.h */,
     2672                                A7C1EAEC17987AB600299DB2 /* StackVisitor.cpp */,
     2673                                A7C1EAED17987AB600299DB2 /* StackVisitor.h */,
    26742674                                FE4A331D15BD2E07006F54F3 /* VMInspector.cpp */,
    26752675                                FE4A331E15BD2E07006F54F3 /* VMInspector.h */,
     
    43874387                                0FD8A31C17D51F2200CA2C40 /* FTLOSREntry.h in Headers */,
    43884388                                0FD82E54141DAEEE00179C94 /* SpeculatedType.h in Headers */,
    4389                                 A7C1EAF217987AB600299DB2 /* StackIterator.h in Headers */,
     4389                                A7C1EAF217987AB600299DB2 /* StackVisitor.h in Headers */,
    43904390                                14DF04DA16B3996D0016A513 /* StaticPropertyAnalysis.h in Headers */,
    43914391                                14CA958B16AB50DE00938A06 /* StaticPropertyAnalyzer.h in Headers */,
     
    51755175                                0F5541B11613C1FB00CE3E25 /* SpecialPointer.cpp in Sources */,
    51765176                                0FD82E86141F3FF100179C94 /* SpeculatedType.cpp in Sources */,
    5177                                 A7C1EAF117987AB600299DB2 /* StackIterator.cpp in Sources */,
     5177                                A7C1EAF117987AB600299DB2 /* StackVisitor.cpp in Sources */,
    51785178                                A730B6131250068F009D25B1 /* StrictEvalActivation.cpp in Sources */,
    51795179                                14469DEB107EC7E700650446 /* StringConstructor.cpp in Sources */,
  • trunk/Source/JavaScriptCore/Target.pri

    r155023 r155081  
    206206    interpreter/Interpreter.cpp \
    207207    interpreter/JSStack.cpp \
    208     interpreter/StackIterator.cpp \
     208    interpreter/StackVisitor.cpp \
    209209    jit/ClosureCallStubRoutine.cpp \
    210210    jit/ExecutableAllocatorFixedVMPool.cpp \
  • trunk/Source/JavaScriptCore/interpreter/CallFrame.h

    r155075 r155081  
    2929#include "MacroAssemblerCodeRef.h"
    3030#include "Register.h"
    31 #include "StackIterator.h"
     31#include "StackVisitor.h"
    3232
    3333namespace JSC  {
     
    285285
    286286        // CallFrame::iterate() expects a Functor that implements the following method:
    287         //     StackIterator::Status operator()(StackIterator&);
     287        //     StackVisitor::Status operator()(StackVisitor&);
    288288
    289289        template <typename Functor> void iterate(Functor& functor)
    290290        {
    291             StackIterator iter(this);
    292             iter.iterate<Functor>(functor);
     291            StackVisitor::visit<Functor>(this, functor);
    293292        }
    294293
  • trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp

    r155075 r155081  
    6464#include "Register.h"
    6565#include "SamplingTool.h"
    66 #include "StackIterator.h"
     66#include "StackVisitor.h"
    6767#include "StrictEvalActivation.h"
    6868#include "StrongInlines.h"
     
    283283    }
    284284
    285     StackIterator::Status operator()(StackIterator& iter)
     285    StackVisitor::Status operator()(StackVisitor& visitor)
    286286    {
    287287        if (!m_hasSkippedFirstFrame) {
    288288            m_hasSkippedFirstFrame = true;
    289             return StackIterator::Continue;
     289            return StackVisitor::Continue;
    290290        }
    291291
    292292        unsigned line = 0;
    293293        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);
    296296        ++m_it;
    297         return StackIterator::Done;
     297        return StackVisitor::Done;
    298298    }
    299299
     
    390390}
    391391
    392 static bool unwindCallFrame(StackIterator& iter, JSValue exceptionValue)
    393 {
    394     CallFrame* callFrame = iter->callFrame();
    395     CodeBlock* codeBlock = iter->codeBlock();
     392static bool unwindCallFrame(StackVisitor& visitor, JSValue exceptionValue)
     393{
     394    CallFrame* callFrame = visitor->callFrame();
     395    CodeBlock* codeBlock = visitor->codeBlock();
    396396    CodeBlock* oldCodeBlock = codeBlock;
    397397    JSScope* scope = callFrame->scope();
     
    432432}
    433433
    434 static StackFrameCodeType getStackFrameCodeType(StackIterator iter)
    435 {
    436     switch (iter->codeType()) {
    437     case StackIterator::Frame::Eval:
     434static StackFrameCodeType getStackFrameCodeType(StackVisitor& visitor)
     435{
     436    switch (visitor->codeType()) {
     437    case StackVisitor::Frame::Eval:
    438438        return StackFrameEvalCode;
    439     case StackIterator::Frame::Function:
     439    case StackVisitor::Frame::Function:
    440440        return StackFrameFunctionCode;
    441     case StackIterator::Frame::Global:
     441    case StackVisitor::Frame::Global:
    442442        return StackFrameGlobalCode;
    443     case StackIterator::Frame::Native:
     443    case StackVisitor::Frame::Native:
    444444        ASSERT_NOT_REACHED();
    445445        return StackFrameNativeCode;
     
    507507    }
    508508
    509     StackIterator::Status operator()(StackIterator& iter)
     509    StackVisitor::Status operator()(StackVisitor& visitor)
    510510    {
    511511        VM& vm = m_vm;
    512512        if (m_remainingCapacityForFrameCapture) {
    513             if (iter->isJSFrame()) {
    514                 CodeBlock* codeBlock = iter->codeBlock();
     513            if (visitor->isJSFrame()) {
     514                CodeBlock* codeBlock = visitor->codeBlock();
    515515                StackFrame s = {
    516                     Strong<JSObject>(vm, iter->callee()),
    517                     getStackFrameCodeType(iter),
     516                    Strong<JSObject>(vm, visitor->callee()),
     517                    getStackFrameCodeType(visitor),
    518518                    Strong<ExecutableBase>(vm, codeBlock->ownerExecutable()),
    519519                    Strong<UnlinkedCodeBlock>(vm, codeBlock->unlinkedCodeBlock()),
     
    522522                    codeBlock->firstLineColumnOffset(),
    523523                    codeBlock->sourceOffset(),
    524                     iter->bytecodeOffset(),
    525                     iter->sourceURL()
     524                    visitor->bytecodeOffset(),
     525                    visitor->sourceURL()
    526526                };
    527527                m_results.append(s);
    528528            } 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()};
    530530                m_results.append(s);
    531531            }
    532532   
    533533            m_remainingCapacityForFrameCapture--;
    534             return StackIterator::Continue;
    535         }
    536         return StackIterator::Done;
     534            return StackVisitor::Continue;
     535        }
     536        return StackVisitor::Done;
    537537    }
    538538
     
    578578    }
    579579
    580     StackIterator::Status operator()(StackIterator& iter)
     580    StackVisitor::Status operator()(StackVisitor& visitor)
    581581    {
    582582        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();
    586586
    587587        if (m_isTermination || !(m_handler = m_codeBlock->handlerForBytecodeOffset(bytecodeOffset))) {
    588         if (!unwindCallFrame(iter, m_exceptionValue)) {
     588        if (!unwindCallFrame(visitor, m_exceptionValue)) {
    589589            if (LegacyProfiler* profiler = vm.enabledProfiler())
    590590                profiler->exceptionUnwind(m_callFrame);
    591             return StackIterator::Done;
     591            return StackVisitor::Done;
    592592        }
    593593    } else
    594         return StackIterator::Done;
    595 
    596     return StackIterator::Continue;
     594        return StackVisitor::Done;
     595
     596    return StackVisitor::Continue;
    597597}
    598598
  • trunk/Source/JavaScriptCore/interpreter/Interpreter.h

    r155013 r155081  
    5757    class JSScope;
    5858    class SamplingTool;
    59     class StackIterator;
    6059    struct CallFrameClosure;
    6160    struct HandlerInfo;
  • trunk/Source/JavaScriptCore/interpreter/StackVisitor.cpp

    r155075 r155081  
    2525
    2626#include "config.h"
    27 #include "StackIterator.h"
     27#include "StackVisitor.h"
    2828
    2929#include "Arguments.h"
     
    3636namespace JSC {
    3737
    38 StackIterator::StackIterator(CallFrame* startFrame)
    39     : m_startFrame(startFrame)
    40 {
    41     resetIterator();
    42 }
    43 
    44 void StackIterator::gotoNextFrame()
     38StackVisitor::StackVisitor(CallFrame* startFrame)
     39{
     40    m_frame.m_index = 0;
     41    readFrame(startFrame);
     42}
     43
     44void StackVisitor::gotoNextFrame()
    4545{
    4646#if ENABLE(DFG_JIT)
     
    5555}
    5656
    57 void StackIterator::resetIterator()
    58 {
    59     m_frame.m_index = 0;
    60     readFrame(m_startFrame);
    61 }
    62 
    63 void StackIterator::readFrame(CallFrame* callFrame)
     57void StackVisitor::readFrame(CallFrame* callFrame)
    6458{
    6559    ASSERT(!callFrame->hasHostCallFrameFlag());
     
    107101}
    108102
    109 void StackIterator::readNonInlinedFrame(CallFrame* callFrame, CodeOrigin* codeOrigin)
     103void StackVisitor::readNonInlinedFrame(CallFrame* callFrame, CodeOrigin* codeOrigin)
    110104{
    111105    m_frame.m_callFrame = callFrame;
     
    131125}
    132126
    133 void StackIterator::readInlinedFrame(CallFrame* callFrame, CodeOrigin* codeOrigin)
     127void StackVisitor::readInlinedFrame(CallFrame* callFrame, CodeOrigin* codeOrigin)
    134128{
    135129    ASSERT(codeOrigin);
     
    171165#endif // ENABLE(DFG_JIT)
    172166
    173 StackIterator::Frame::CodeType StackIterator::Frame::codeType() const
     167StackVisitor::Frame::CodeType StackVisitor::Frame::codeType() const
    174168{
    175169    if (!isJSFrame())
    176         return StackIterator::Frame::Native;
     170        return StackVisitor::Frame::Native;
    177171
    178172    switch (codeBlock()->codeType()) {
    179173    case EvalCode:
    180         return StackIterator::Frame::Eval;
     174        return StackVisitor::Frame::Eval;
    181175    case FunctionCode:
    182         return StackIterator::Frame::Function;
     176        return StackVisitor::Frame::Function;
    183177    case GlobalCode:
    184         return StackIterator::Frame::Global;
     178        return StackVisitor::Frame::Global;
    185179    }
    186180    RELEASE_ASSERT_NOT_REACHED();
    187     return StackIterator::Frame::Global;
    188 }
    189 
    190 String StackIterator::Frame::functionName()
     181    return StackVisitor::Frame::Global;
     182}
     183
     184String StackVisitor::Frame::functionName()
    191185{
    192186    String traceLine;
     
    194188
    195189    switch (codeType()) {
    196     case StackIterator::Frame::Eval:
     190    case StackVisitor::Frame::Eval:
    197191        traceLine = "eval code";
    198192        break;
    199     case StackIterator::Frame::Native:
     193    case StackVisitor::Frame::Native:
    200194        if (callee)
    201195            traceLine = getCalculatedDisplayName(callFrame(), callee).impl();
    202196        break;
    203     case StackIterator::Frame::Function:
     197    case StackVisitor::Frame::Function:
    204198        traceLine = getCalculatedDisplayName(callFrame(), callee).impl();
    205199        break;
    206     case StackIterator::Frame::Global:
     200    case StackVisitor::Frame::Global:
    207201        traceLine = "global code";
    208202        break;
     
    211205}
    212206
    213 String StackIterator::Frame::sourceURL()
     207String StackVisitor::Frame::sourceURL()
    214208{
    215209    String traceLine;
    216210
    217211    switch (codeType()) {
    218     case StackIterator::Frame::Eval:
    219     case StackIterator::Frame::Function:
    220     case StackIterator::Frame::Global: {
     212    case StackVisitor::Frame::Eval:
     213    case StackVisitor::Frame::Function:
     214    case StackVisitor::Frame::Global: {
    221215        String sourceURL = codeBlock()->ownerExecutable()->sourceURL();
    222216        if (!sourceURL.isEmpty())
     
    224218        break;
    225219    }
    226     case StackIterator::Frame::Native:
     220    case StackVisitor::Frame::Native:
    227221        traceLine = "[native code]";
    228222        break;
     
    231225}
    232226
    233 String StackIterator::Frame::toString()
     227String StackVisitor::Frame::toString()
    234228{
    235229    StringBuilder traceBuild;
     
    254248}
    255249
    256 Arguments* StackIterator::Frame::arguments()
     250Arguments* StackVisitor::Frame::arguments()
    257251{
    258252    ASSERT(m_callFrame);
     
    274268}
    275269
    276 void StackIterator::Frame::computeLineAndColumn(unsigned& line, unsigned& column)
     270void StackVisitor::Frame::computeLineAndColumn(unsigned& line, unsigned& column)
    277271{
    278272    CodeBlock* codeBlock = this->codeBlock();
     
    294288}
    295289
    296 void StackIterator::Frame::retrieveExpressionInfo(int& divot, int& startOffset, int& endOffset, unsigned& line, unsigned& column)
     290void StackVisitor::Frame::retrieveExpressionInfo(int& divot, int& startOffset, int& endOffset, unsigned& line, unsigned& column)
    297291{
    298292    CodeBlock* codeBlock = this->codeBlock();
     
    301295}
    302296
    303 void StackIterator::Frame::setToEnd()
     297void StackVisitor::Frame::setToEnd()
    304298{
    305299    m_callFrame = 0;
     
    353347}
    354348
    355 void StackIterator::Frame::print(int indentLevel)
     349void StackVisitor::Frame::print(int indentLevel)
    356350{
    357351    int i = indentLevel;
     
    418412
    419413#ifndef NDEBUG
    420 using JSC::StackIterator;
     414using JSC::StackVisitor;
    421415
    422416// For debugging use
     
    436430    }
    437431
    438     StackIterator::Status operator()(StackIterator& iter)
     432    StackVisitor::Status operator()(StackVisitor& visitor)
    439433    {
    440         iter->print(2);
    441         return m_action == PrintAll ? StackIterator::Continue : StackIterator::Done;
     434        visitor->print(2);
     435        return m_action == PrintAll ? StackVisitor::Continue : StackVisitor::Done;
    442436    }
    443437
  • trunk/Source/JavaScriptCore/interpreter/StackVisitor.h

    r155075 r155081  
    2424 */
    2525
    26 #ifndef StackIterator_h
    27 #define StackIterator_h
     26#ifndef StackVisitor_h
     27#define StackVisitor_h
    2828
    2929#include <wtf/text/WTFString.h>
     
    4343typedef ExecState CallFrame;
    4444
    45 class StackIterator {
     45class StackVisitor {
    4646public:
    4747    class Frame {
     
    103103        CallFrame* m_callFrame;
    104104
    105         friend class StackIterator;
     105        friend class StackVisitor;
    106106    };
    107107
     
    111111    };
    112112
    113     // StackIterator::iterate() expects a Functor that implements the following method:
    114     //     Status operator()(StackIterator&);
     113    // StackVisitor::visit() expects a Functor that implements the following method:
     114    //     Status operator()(StackVisitor&);
    115115
    116     template <typename Functor> void iterate(Functor& functor)
     116    template <typename Functor>
     117    static void visit(CallFrame* startFrame, Functor& functor)
    117118    {
    118         while (m_frame.callFrame()) {
    119             Status status = functor(*this);
     119        StackVisitor visitor(startFrame);
     120        while (visitor->callFrame()) {
     121            Status status = functor(visitor);
    120122            if (status != Continue)
    121123                break;
    122             gotoNextFrame();
     124            visitor.gotoNextFrame();
    123125        }
    124126    }
     
    128130
    129131private:
    130     JS_EXPORT_PRIVATE StackIterator(CallFrame* startFrame);
     132    JS_EXPORT_PRIVATE StackVisitor(CallFrame* startFrame);
    131133
    132134    JS_EXPORT_PRIVATE void gotoNextFrame();
    133     void resetIterator();
    134135
    135136    void readFrame(CallFrame*);
     
    139140#endif
    140141
    141     CallFrame* m_startFrame;
    142142    Frame m_frame;
    143 
    144     friend class ExecState;
    145143};
    146144
    147145} // namespace JSC
    148146
    149 #endif // StackIterator_h
     147#endif // StackVisitor_h
    150148
  • trunk/Source/JavaScriptCore/jsc.cpp

    r155075 r155081  
    4040#include "Operations.h"
    4141#include "SamplingTool.h"
    42 #include "StackIterator.h"
     42#include "StackVisitor.h"
    4343#include "StructureRareDataInlines.h"
    4444#include <math.h>
     
    334334    }
    335335
    336     StackIterator::Status operator()(StackIterator& iter)
     336    StackVisitor::Status operator()(StackVisitor& visitor)
    337337    {
    338         m_trace.append(String::format("    %zu   %s\n", iter->index(), iter->toString().utf8().data()));
    339         return StackIterator::Continue;
     338        m_trace.append(String::format("    %zu   %s\n", visitor->index(), visitor->toString().utf8().data()));
     339        return StackVisitor::Continue;
    340340    }
    341341
  • trunk/Source/JavaScriptCore/profiler/ProfileGenerator.cpp

    r155075 r155081  
    3636#include "Operations.h"
    3737#include "Profile.h"
    38 #include "StackIterator.h"
     38#include "StackVisitor.h"
    3939#include "Tracing.h"
    4040
     
    7171    bool foundParent() const { return m_foundParent; }
    7272
    73     StackIterator::Status operator()(StackIterator& iter)
     73    StackVisitor::Status operator()(StackVisitor& visitor)
    7474    {
    7575        if (!m_hasSkippedFirstFrame) {
    7676            m_hasSkippedFirstFrame = true;
    77             return StackIterator::Continue;
     77            return StackVisitor::Continue;
    7878        }
    7979
    8080        unsigned line = 0;
    8181        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());
    8484        m_head->insertNode(m_currentNode.get());
    8585
    8686        m_foundParent = true;
    87         return StackIterator::Done;
     87        return StackVisitor::Done;
    8888    }
    8989
  • trunk/Source/JavaScriptCore/runtime/JSFunction.cpp

    r155075 r155081  
    4444#include "Parser.h"
    4545#include "PropertyNameArray.h"
    46 #include "StackIterator.h"
     46#include "StackVisitor.h"
    4747
    4848using namespace WTF;
     
    193193    JSValue result() const { return m_result; }
    194194
    195     StackIterator::Status operator()(StackIterator& iter)
     195    StackVisitor::Status operator()(StackVisitor& visitor)
    196196    {
    197         JSObject* callee = iter->callee();
     197        JSObject* callee = visitor->callee();
    198198        if (callee != m_targetCallee)
    199             return StackIterator::Continue;
    200 
    201         m_result = JSValue(iter->arguments());
    202         return StackIterator::Done;
     199            return StackVisitor::Continue;
     200
     201        m_result = JSValue(visitor->arguments());
     202        return StackVisitor::Done;
    203203    }
    204204
     
    235235    JSValue result() const { return m_result; }
    236236
    237     StackIterator::Status operator()(StackIterator& iter)
     237    StackVisitor::Status operator()(StackVisitor& visitor)
    238238    {
    239         JSObject* callee = iter->callee();
     239        JSObject* callee = visitor->callee();
    240240
    241241        if (callee && callee->inherits(JSBoundFunction::info()))
    242             return StackIterator::Continue;
     242            return StackVisitor::Continue;
    243243
    244244        if (!m_hasFoundFrame && (callee != m_targetCallee))
    245             return StackIterator::Continue;
     245            return StackVisitor::Continue;
    246246
    247247        m_hasFoundFrame = true;
    248248        if (!m_hasSkippedToCallerFrame) {
    249249            m_hasSkippedToCallerFrame = true;
    250             return StackIterator::Continue;
     250            return StackVisitor::Continue;
    251251        }
    252252
    253253        if (callee)
    254254            m_result = callee;
    255         return StackIterator::Done;
     255        return StackVisitor::Done;
    256256    }
    257257
  • trunk/Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp

    r155075 r155081  
    3838#include "Operations.h"
    3939#include "Parser.h"
    40 #include "StackIterator.h"
     40#include "StackVisitor.h"
    4141#include <wtf/dtoa.h>
    4242#include <stdio.h>
     
    718718    EncodedJSValue result() { return m_result; }
    719719
    720     StackIterator::Status operator()(StackIterator& iter)
     720    StackVisitor::Status operator()(StackVisitor& visitor)
    721721    {
    722722        if (!m_hasSkippedFirstFrame) {
    723723            m_hasSkippedFirstFrame = true;
    724             return StackIterator::Continue;
    725         }
    726 
    727         if (m_thisObject->allowsAccessFrom(iter->callFrame()))
     724            return StackVisitor::Continue;
     725        }
     726
     727        if (m_thisObject->allowsAccessFrom(visitor->callFrame()))
    728728            m_result = JSValue::encode(m_thisObject->prototype());
    729729
    730         return StackIterator::Done;
     730        return StackVisitor::Done;
    731731    }
    732732
     
    760760    bool allowsAccess() const { return m_allowsAccess; }
    761761
    762     StackIterator::Status operator()(StackIterator& iter)
     762    StackVisitor::Status operator()(StackVisitor& visitor)
    763763    {
    764764        if (!m_hasSkippedFirstFrame) {
    765765            m_hasSkippedFirstFrame = true;
    766             return StackIterator::Continue;
    767         }
    768 
    769         m_allowsAccess = m_thisObject->allowsAccessFrom(iter->callFrame());
    770         return StackIterator::Done;
     766            return StackVisitor::Continue;
     767        }
     768
     769        m_allowsAccess = m_thisObject->allowsAccessFrom(visitor->callFrame());
     770        return StackVisitor::Done;
    771771    }
    772772
  • trunk/Source/JavaScriptCore/runtime/ObjectConstructor.cpp

    r155075 r155081  
    3535#include "PropertyDescriptor.h"
    3636#include "PropertyNameArray.h"
    37 #include "StackIterator.h"
     37#include "StackVisitor.h"
    3838
    3939namespace JSC {
     
    143143    EncodedJSValue result() const { return m_result; }
    144144
    145     StackIterator::Status operator()(StackIterator& iter)
     145    StackVisitor::Status operator()(StackVisitor& visitor)
    146146    {
    147147        if (!m_hasSkippedFirstFrame) {
    148148            m_hasSkippedFirstFrame = true;
    149             return StackIterator::Continue;
     149            return StackVisitor::Continue;
    150150        }
    151151
    152     if (m_object->allowsAccessFrom(iter->callFrame()))
     152    if (m_object->allowsAccessFrom(visitor->callFrame()))
    153153        m_result = JSValue::encode(m_object->prototype());
    154     return StackIterator::Done;
     154    return StackVisitor::Done;
    155155}
    156156
  • trunk/Source/WebCore/ChangeLog

    r155078 r155081  
     12013-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
    1182013-09-04  Samuel White  <samuel_white@apple.com>
    219
  • trunk/Source/WebCore/ForwardingHeaders/interpreter/StackVisitor.h

    r155074 r155081  
    1 #ifndef WebCore_FWD_StackIterator_h
    2 #define WebCore_FWD_StackIterator_h
    3 #include <JavaScriptCore/StackIterator.h>
     1#ifndef WebCore_FWD_StackVisitor_h
     2#define WebCore_FWD_StackVisitor_h
     3#include <JavaScriptCore/StackVisitor.h>
    44#endif
  • trunk/Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp

    r155075 r155081  
    4646#include "JSEventListener.h"
    4747#include "XMLHttpRequest.h"
    48 #include <interpreter/StackIterator.h>
     48#include <interpreter/StackVisitor.h>
    4949#include <runtime/ArrayBuffer.h>
    5050#include <runtime/Error.h>
     
    124124    String url() const { return m_url; }
    125125
    126     StackIterator::Status operator()(StackIterator& iter)
     126    StackVisitor::Status operator()(StackVisitor& visitor)
    127127    {
    128128        if (!m_hasSkippedFirstFrame) {
    129129            m_hasSkippedFirstFrame = true;
    130             return StackIterator::Continue;
     130            return StackVisitor::Continue;
    131131        }
    132132
    133133        unsigned line = 0;
    134134        unsigned unusedColumn = 0;
    135         iter->computeLineAndColumn(line, unusedColumn);
     135        visitor->computeLineAndColumn(line, unusedColumn);
    136136        m_line = line;
    137         m_url = iter->sourceURL();
    138         return StackIterator::Done;
     137        m_url = visitor->sourceURL();
     138        return StackVisitor::Done;
    139139    }
    140140
  • trunk/Source/WebCore/bindings/js/ScriptCallStackFactory.cpp

    r155075 r155081  
    4242#include <interpreter/CallFrame.h>
    4343#include <interpreter/CallFrameInlines.h>
    44 #include <interpreter/StackIterator.h>
     44#include <interpreter/StackVisitor.h>
    4545#include <runtime/ArgList.h>
    4646#include <runtime/JSCJSValue.h>
     
    6363    }
    6464
    65     StackIterator::Status operator()(StackIterator& iter)
     65    StackVisitor::Status operator()(StackVisitor& visitor)
    6666    {
    6767        if (m_remainingCapacityForFrameCapture) {
    6868            unsigned line;
    6969            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));
    7272
    7373            m_remainingCapacityForFrameCapture--;
    74             return StackIterator::Continue;
    75         }
    76         return StackIterator::Done;
     74            return StackVisitor::Continue;
     75        }
     76        return StackVisitor::Done;
    7777    }
    7878
     
    108108    }
    109109
    110     StackIterator::Status operator()(StackIterator& iter)
     110    StackVisitor::Status operator()(StackVisitor& visitor)
    111111    {
    112112        if (m_needToSkipAFrame) {
    113113            m_needToSkipAFrame = false;
    114             return StackIterator::Continue;
     114            return StackVisitor::Continue;
    115115        }
    116116
     
    119119            // but the stack trace we produce now is complete and handles all
    120120            // ways in which code may be running
    121             if (!iter->callee() && m_frames.size())
    122                 return StackIterator::Done;
     121            if (!visitor->callee() && m_frames.size())
     122                return StackVisitor::Done;
    123123
    124124            unsigned line;
    125125            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));
    128128
    129129            m_remainingCapacityForFrameCapture--;
    130             return StackIterator::Continue;
    131         }
    132         return StackIterator::Done;
     130            return StackVisitor::Continue;
     131        }
     132        return StackVisitor::Done;
    133133    }
    134134
Note: See TracChangeset for help on using the changeset viewer.