Changeset 184747 in webkit for trunk/Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp
- Timestamp:
- May 21, 2015, 7:39:25 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp
r184445 r184747 587 587 PromotedHeapLocation(ActivationScopePLoc, node).createHint( 588 588 m_graph, node->origin, node->child1().node())); 589 Node* symbolTableNode = m_insertionSet.insertConstant( 590 nodeIndex + 1, node->origin, node->cellOperand()); 591 m_insertionSet.insert( 592 nodeIndex + 1, 593 PromotedHeapLocation(ActivationSymbolTablePLoc, node).createHint( 594 m_graph, node->origin, symbolTableNode)); 595 596 { 597 SymbolTable* symbolTable = node->castOperand<SymbolTable*>(); 598 Node* undefined = m_insertionSet.insertConstant( 599 nodeIndex + 1, node->origin, jsUndefined()); 600 ConcurrentJITLocker locker(symbolTable->m_lock); 601 for (auto iter = symbolTable->begin(locker), end = symbolTable->end(locker); iter != end; ++iter) { 602 m_insertionSet.insert( 603 nodeIndex + 1, 604 PromotedHeapLocation( 605 ClosureVarPLoc, node, iter->value.scopeOffset().offset()).createHint( 606 m_graph, node->origin, undefined)); 607 } 608 } 609 589 610 node->convertToPhantomCreateActivation(); 590 611 } … … 598 619 PromotedHeapLocation(ActivationScopePLoc, node).createHint( 599 620 m_graph, node->origin, m_graph.varArgChild(node, 0).node())); 621 Node* symbolTableNode = m_insertionSet.insertConstant( 622 nodeIndex + 1, node->origin, node->cellOperand()); 623 m_insertionSet.insert( 624 nodeIndex + 1, 625 PromotedHeapLocation(ActivationSymbolTablePLoc, node).createHint( 626 m_graph, node->origin, symbolTableNode)); 600 627 ObjectMaterializationData& data = node->objectMaterializationData(); 601 628 for (unsigned i = 0; i < data.m_properties.size(); ++i) { … … 830 857 831 858 case CreateActivation: 832 if (! m_graph.symbolTableFor(node->origin.semantic)->singletonScope()->isStillValid())859 if (!node->castOperand<SymbolTable*>()->singletonScope()->isStillValid()) 833 860 sinkCandidate(); 834 861 escape(node->child1().node()); … … 933 960 case MaterializeCreateActivation: { 934 961 ObjectMaterializationData* data = m_graph.m_objectMaterializationData.add(); 935 962 FrozenValue* symbolTable = escapee->cellOperand(); 936 963 result = m_graph.addNode( 937 964 escapee->prediction(), Node::VarArg, MaterializeCreateActivation, … … 939 966 escapee->origin.semantic, 940 967 where->origin.forExit), 941 OpInfo(data), OpInfo( ), 0, 0);968 OpInfo(data), OpInfo(symbolTable), 0, 0); 942 969 break; 943 970 } … … 1010 1037 1011 1038 PromotedHeapLocation scope(ActivationScopePLoc, escapee); 1039 PromotedHeapLocation symbolTable(ActivationSymbolTablePLoc, escapee); 1012 1040 ASSERT(locations.contains(scope)); 1013 1041 … … 1018 1046 case ActivationScopePLoc: { 1019 1047 ASSERT(locations[i] == scope); 1048 break; 1049 } 1050 1051 case ActivationSymbolTablePLoc: { 1052 ASSERT(locations[i] == symbolTable); 1020 1053 break; 1021 1054 }
Note:
See TracChangeset
for help on using the changeset viewer.