Changeset 120556 in webkit for trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
- Timestamp:
- Jun 17, 2012, 6:59:18 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
r120499 r120556 751 751 } 752 752 753 voidaddStructureTransitionCheck(JSCell* object, Structure* structure)753 NodeIndex addStructureTransitionCheck(JSCell* object, Structure* structure) 754 754 { 755 755 // Add a weak JS constant for the object regardless, since the code should … … 759 759 if (object->structure() == structure && structure->transitionWatchpointSetIsStillValid()) { 760 760 addToGraph(StructureTransitionWatchpoint, OpInfo(structure), objectIndex); 761 return ;761 return objectIndex; 762 762 } 763 763 764 764 addToGraph(CheckStructure, OpInfo(m_graph.addStructureSet(structure)), objectIndex); 765 766 return objectIndex; 767 } 768 769 NodeIndex addStructureTransitionCheck(JSCell* object) 770 { 771 return addStructureTransitionCheck(object, object->structure()); 765 772 } 766 773 … … 1592 1599 currentObject = asObject(currentStructure->prototypeForLookup(m_inlineStackTop->m_codeBlock)); 1593 1600 currentStructure = getByIdStatus.chain()[i]; 1594 base = addToGraph(WeakJSConstant, OpInfo(currentObject)); 1595 addToGraph(CheckStructure, OpInfo(m_graph.addStructureSet(currentStructure)), base); 1601 base = addStructureTransitionCheck(currentObject, currentStructure); 1596 1602 } 1597 1603 useInlineStorage = currentStructure->isUsingInlineStorage(); … … 1611 1617 ASSERT(getByIdStatus.specificValue().isCell()); 1612 1618 1613 set(destinationOperand, 1614 addToGraph(WeakJSConstant, OpInfo(getByIdStatus.specificValue().asCell()))); 1619 set(destinationOperand, cellConstant(getByIdStatus.specificValue().asCell())); 1615 1620 return; 1616 1621 } … … 2211 2216 addToGraph(CheckStructure, OpInfo(m_graph.addStructureSet(putByIdStatus.oldStructure())), base); 2212 2217 if (!direct) { 2213 if (!putByIdStatus.oldStructure()->storedPrototype().isNull()) 2214 addToGraph( 2215 CheckStructure, 2216 OpInfo(m_graph.addStructureSet(putByIdStatus.oldStructure()->storedPrototype().asCell()->structure())), 2217 cellConstant(putByIdStatus.oldStructure()->storedPrototype().asCell())); 2218 if (!putByIdStatus.oldStructure()->storedPrototype().isNull()) { 2219 addStructureTransitionCheck( 2220 putByIdStatus.oldStructure()->storedPrototype().asCell()); 2221 } 2218 2222 2219 2223 for (WriteBarrier<Structure>* it = putByIdStatus.structureChain()->head(); *it; ++it) { … … 2222 2226 continue; 2223 2227 ASSERT(prototype.isCell()); 2224 addToGraph( 2225 CheckStructure, 2226 OpInfo(m_graph.addStructureSet(prototype.asCell()->structure())), 2227 cellConstant(prototype.asCell())); 2228 addStructureTransitionCheck(prototype.asCell()); 2228 2229 } 2229 2230 } … … 2322 2323 JSValue specificValue = globalObject->registerAt(entry.getIndex()).get(); 2323 2324 ASSERT(specificValue.isCell()); 2324 set(currentInstruction[1].u.operand, 2325 addToGraph(WeakJSConstant, OpInfo(specificValue.asCell()))); 2325 set(currentInstruction[1].u.operand, cellConstant(specificValue.asCell())); 2326 2326 2327 2327 NEXT_OPCODE(op_get_global_var_watchable);
Note:
See TracChangeset
for help on using the changeset viewer.