Ignore:
Timestamp:
Jan 15, 2009, 3:49:55 PM (16 years ago)
Author:
[email protected]
Message:

2009-01-15 Sam Weinig <[email protected]>

Reviewed by Gavin Barraclough.

Fix crash seen running fast/canvas.

Make sure to mark the ScopeNode and CodeBlock being created
in the re-parse for exception information.

  • bytecode/CodeBlock.cpp: (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
  • parser/Nodes.h: (JSC::ScopeNode::mark):
  • runtime/Collector.cpp: (JSC::Heap::collect):
  • runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData):
  • runtime/JSGlobalData.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/bytecode/CodeBlock.cpp

    r39910 r39951  
    14101410            RefPtr<FunctionBodyNode> newFunctionBody = m_globalData->parser->reparse<FunctionBodyNode>(m_globalData, ownerFunctionBodyNode);
    14111411            newFunctionBody->finishParsing(ownerFunctionBodyNode->copyParameters(), ownerFunctionBodyNode->parameterCount());
     1412
     1413            m_globalData->scopeNodeBeingReparsed = newFunctionBody.get();
     1414
    14121415            CodeBlock& newCodeBlock = newFunctionBody->bytecodeForExceptionInfoReparse(scopeChain, this);
    14131416            ASSERT(newCodeBlock.m_exceptionInfo);
     
    14201423
    14211424            m_exceptionInfo.set(newCodeBlock.m_exceptionInfo.release());
     1425
     1426            m_globalData->scopeNodeBeingReparsed = 0;
     1427
    14221428            break;
    14231429        }
     
    14251431            EvalNode* ownerEvalNode = static_cast<EvalNode*>(m_ownerNode);
    14261432            RefPtr<EvalNode> newEvalBody = m_globalData->parser->reparse<EvalNode>(m_globalData, ownerEvalNode);
     1433
     1434            m_globalData->scopeNodeBeingReparsed = newEvalBody.get();
     1435
    14271436            EvalCodeBlock& newCodeBlock = newEvalBody->bytecodeForExceptionInfoReparse(scopeChain, this);
    14281437            ASSERT(newCodeBlock.m_exceptionInfo);
     
    14351444
    14361445            m_exceptionInfo.set(newCodeBlock.m_exceptionInfo.release());
     1446
     1447            m_globalData->scopeNodeBeingReparsed = 0;
     1448
    14371449            break;
    14381450        }
Note: See TracChangeset for help on using the changeset viewer.