Changeset 39951 in webkit for trunk/JavaScriptCore
- Timestamp:
- Jan 15, 2009, 3:49:55 PM (16 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r39945 r39951 1 2009-01-15 Sam Weinig <[email protected]> 2 3 Reviewed by Gavin Barraclough. 4 5 Fix crash seen running fast/canvas. 6 7 Make sure to mark the ScopeNode and CodeBlock being created 8 in the re-parse for exception information. 9 10 * bytecode/CodeBlock.cpp: 11 (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): 12 * parser/Nodes.h: 13 (JSC::ScopeNode::mark): 14 * runtime/Collector.cpp: 15 (JSC::Heap::collect): 16 * runtime/JSGlobalData.cpp: 17 (JSC::JSGlobalData::JSGlobalData): 18 * runtime/JSGlobalData.h: 19 1 20 2009-01-15 Craig Schlenter <[email protected]> 2 21 -
trunk/JavaScriptCore/bytecode/CodeBlock.cpp
r39910 r39951 1410 1410 RefPtr<FunctionBodyNode> newFunctionBody = m_globalData->parser->reparse<FunctionBodyNode>(m_globalData, ownerFunctionBodyNode); 1411 1411 newFunctionBody->finishParsing(ownerFunctionBodyNode->copyParameters(), ownerFunctionBodyNode->parameterCount()); 1412 1413 m_globalData->scopeNodeBeingReparsed = newFunctionBody.get(); 1414 1412 1415 CodeBlock& newCodeBlock = newFunctionBody->bytecodeForExceptionInfoReparse(scopeChain, this); 1413 1416 ASSERT(newCodeBlock.m_exceptionInfo); … … 1420 1423 1421 1424 m_exceptionInfo.set(newCodeBlock.m_exceptionInfo.release()); 1425 1426 m_globalData->scopeNodeBeingReparsed = 0; 1427 1422 1428 break; 1423 1429 } … … 1425 1431 EvalNode* ownerEvalNode = static_cast<EvalNode*>(m_ownerNode); 1426 1432 RefPtr<EvalNode> newEvalBody = m_globalData->parser->reparse<EvalNode>(m_globalData, ownerEvalNode); 1433 1434 m_globalData->scopeNodeBeingReparsed = newEvalBody.get(); 1435 1427 1436 EvalCodeBlock& newCodeBlock = newEvalBody->bytecodeForExceptionInfoReparse(scopeChain, this); 1428 1437 ASSERT(newCodeBlock.m_exceptionInfo); … … 1435 1444 1436 1445 m_exceptionInfo.set(newCodeBlock.m_exceptionInfo.release()); 1446 1447 m_globalData->scopeNodeBeingReparsed = 0; 1448 1437 1449 break; 1438 1450 } -
trunk/JavaScriptCore/parser/Nodes.h
r39910 r39951 2119 2119 } 2120 2120 2121 virtual void mark() { } 2122 2121 2123 protected: 2122 2124 void setSource(const SourceCode& source) { m_source = source; } … … 2161 2163 EvalCodeBlock& bytecodeForExceptionInfoReparse(ScopeChainNode*, CodeBlock*) JSC_FAST_CALL; 2162 2164 2163 void mark(); 2165 virtual void mark(); 2166 2164 2167 private: 2165 2168 EvalNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, const SourceCode&, CodeFeatures, int numConstants) JSC_FAST_CALL; … … 2204 2207 } 2205 2208 2206 v oid mark();2209 virtual void mark(); 2207 2210 2208 2211 void finishParsing(const SourceCode&, ParameterNode*); -
trunk/JavaScriptCore/runtime/Collector.cpp
r39851 r39951 987 987 m_globalData->interpreter->registerFile().markCallFrames(this); 988 988 m_globalData->smallStrings.mark(); 989 if (m_globalData->scopeNodeBeingReparsed) 990 m_globalData->scopeNodeBeingReparsed->mark(); 989 991 990 992 JAVASCRIPTCORE_GC_MARKED(); -
trunk/JavaScriptCore/runtime/JSGlobalData.cpp
r39755 r39951 92 92 , isSharedInstance(isShared) 93 93 , clientData(0) 94 , scopeNodeBeingReparsed(0) 94 95 , heap(this) 95 96 { -
trunk/JavaScriptCore/runtime/JSGlobalData.h
r39670 r39951 47 47 class Heap; 48 48 class IdentifierTable; 49 class Interpreter; 49 50 class JSGlobalObject; 50 51 class JSObject; 51 52 class Lexer; 52 class Interpreter;53 53 class Parser; 54 54 class ParserRefCounted; 55 class ScopeNode; 55 56 class Structure; 56 57 class UString; … … 121 122 HashSet<JSObject*> arrayVisitedElements; 122 123 124 ScopeNode* scopeNodeBeingReparsed; 125 123 126 Heap heap; 124 127 #if ENABLE(ASSEMBLER)
Note:
See TracChangeset
for help on using the changeset viewer.