Ignore:
Timestamp:
May 2, 2012, 12:18:28 PM (13 years ago)
Author:
[email protected]
Message:

Unreviewed, rolling out r115388.
http://trac.webkit.org/changeset/115388
https://bugs.webkit.org/show_bug.cgi?id=85011

This caused many weird performance problems, and needs to be
landed in pieces.

Source/JavaScriptCore:

  • dfg/DFGOperations.cpp:
  • heap/Heap.cpp:

(JSC::Heap::getConservativeRegisterRoots):
(JSC::Heap::markRoots):

  • interpreter/CallFrame.cpp:

(JSC::CallFrame::dumpCaller):
(JSC):

  • interpreter/CallFrame.h:

(JSC::ExecState::init):
(ExecState):

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::execute):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
(JSC::Interpreter::prepareForRepeatCall):
(JSC::Interpreter::privateExecute):

  • interpreter/Interpreter.h:

(JSC::Interpreter::execute):

  • interpreter/RegisterFile.cpp:

(JSC::RegisterFile::growSlowCase):
(JSC::RegisterFile::gatherConservativeRoots):

  • interpreter/RegisterFile.h:

(JSC::RegisterFile::end):
(JSC::RegisterFile::size):
(JSC::RegisterFile::addressOfEnd):
(RegisterFile):
(JSC::RegisterFile::RegisterFile):
(JSC::RegisterFile::shrink):
(JSC::RegisterFile::grow):

  • jit/JITStubs.cpp:

(JSC::DEFINE_STUB_FUNCTION):
(JSC::jitCompileFor):
(JSC::lazyLinkFor):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::handleHostCall):

  • llint/LowLevelInterpreter.asm:
  • runtime/CommonSlowPaths.h:

(JSC::CommonSlowPaths::arityCheckFor):

LayoutTests:

  • fast/js/global-recursion-on-full-stack-expected.txt:
  • fast/js/stack-trace-expected.txt:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp

    r115657 r115861  
    12091209    CodeBlock* codeBlock = &program->generatedBytecode();
    12101210
    1211     Register* oldEnd = callFrame->startOfReusableRegisterFile();
     1211    Register* oldEnd = m_registerFile.end();
    12121212    Register* newEnd = oldEnd + codeBlock->numParameters() + RegisterFile::CallFrameHeaderSize + codeBlock->m_numCalleeRegisters;
    12131213    if (!m_registerFile.grow(newEnd))
     
    12581258        return checkedReturn(throwStackOverflowError(callFrame));
    12591259
    1260     Register* oldEnd = callFrame->startOfReusableRegisterFile();
     1260    Register* oldEnd = m_registerFile.end();
    12611261    ASSERT(callFrame->frameExtent() <= oldEnd || callFrame == callFrame->scopeChain()->globalObject->globalExec());
    12621262    int argCount = 1 + args.size(); // implicit "this" parameter
     
    13551355        return checkedReturn(throwStackOverflowError(callFrame));
    13561356
    1357     Register* oldEnd = callFrame->startOfReusableRegisterFile();
     1357    Register* oldEnd = m_registerFile.end();
    13581358    int argCount = 1 + args.size(); // implicit "this" parameter
    13591359    size_t registerOffset = argCount + RegisterFile::CallFrameHeaderSize;
     
    14571457    }
    14581458
    1459     Register* oldEnd = callFrame->startOfReusableRegisterFile();
     1459    Register* oldEnd = m_registerFile.end();
    14601460    size_t registerOffset = argumentCountIncludingThis + RegisterFile::CallFrameHeaderSize;
    14611461
     
    15831583    }
    15841584
     1585    Register* oldEnd = m_registerFile.end();
    15851586    Register* newEnd = m_registerFile.begin() + globalRegisterOffset + codeBlock->m_numCalleeRegisters;
    15861587    if (!m_registerFile.grow(newEnd)) {
     
    16261627        (*profiler)->didExecute(callFrame, eval->sourceURL(), eval->lineNo());
    16271628
     1629    m_registerFile.shrink(oldEnd);
    16281630    if (pushedScope)
    16291631        scopeChain->pop();
     
    45174519            if (UNLIKELY(!callFrame)) {
    45184520                callFrame = previousCallFrame;
    4519                 *topCallFrameSlot = callFrame;
    45204521                exceptionValue = createStackOverflowError(callFrame);
    45214522                goto vm_throw;
     
    45964597            newCallFrame = slideRegisterWindowForCall(newCodeBlock, registerFile, newCallFrame, 0, argCount);
    45974598            if (UNLIKELY(!newCallFrame)) {
    4598                 *topCallFrameSlot = callFrame;
    45994599                exceptionValue = createStackOverflowError(callFrame);
    46004600                goto vm_throw;
     
    49184918            if (UNLIKELY(!callFrame)) {
    49194919                callFrame = previousCallFrame;
    4920                 *topCallFrameSlot = callFrame;
    49214920                exceptionValue = createStackOverflowError(callFrame);
    49224921                goto vm_throw;
Note: See TracChangeset for help on using the changeset viewer.