Changeset 117819 in webkit
- Timestamp:
- May 21, 2012, 2:52:08 PM (14 years ago)
- Location:
- branches/dfgopt/Source/JavaScriptCore
- Files:
-
- 5 edited
-
ChangeLog (modified) (1 diff)
-
dfg/DFGByteCodeParser.cpp (modified) (2 diffs)
-
dfg/DFGCSEPhase.cpp (modified) (2 diffs)
-
dfg/DFGSpeculativeJIT32_64.cpp (modified) (1 diff)
-
dfg/DFGSpeculativeJIT64.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/dfgopt/Source/JavaScriptCore/ChangeLog
r117543 r117819 1 2012-05-20 Filip Pizlo <fpizlo@apple.com> 2 3 DFG should not do unnecessary indirections when storing to objects 4 https://bugs.webkit.org/show_bug.cgi?id=86959 5 6 Reviewed by Oliver Hunt. 7 8 * dfg/DFGByteCodeParser.cpp: 9 (JSC::DFG::ByteCodeParser::parseBlock): 10 * dfg/DFGCSEPhase.cpp: 11 (JSC::DFG::CSEPhase::getByOffsetLoadElimination): 12 * dfg/DFGSpeculativeJIT32_64.cpp: 13 (JSC::DFG::SpeculativeJIT::compile): 14 * dfg/DFGSpeculativeJIT64.cpp: 15 (JSC::DFG::SpeculativeJIT::compile): 16 1 17 2012-05-17 Filip Pizlo <fpizlo@apple.com> 2 18 -
branches/dfgopt/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
r117542 r117819 2050 2050 if (!hasExitSite && putByIdStatus.isSimpleReplace()) { 2051 2051 addToGraph(CheckStructure, OpInfo(m_graph.addStructureSet(putByIdStatus.oldStructure())), base); 2052 addToGraph(PutByOffset, OpInfo(m_graph.m_storageAccessData.size()), base, addToGraph(GetPropertyStorage, base), value); 2052 size_t offsetOffset; 2053 NodeIndex propertyStorage; 2054 if (putByIdStatus.oldStructure()->isUsingInlineStorage()) { 2055 propertyStorage = base; 2056 ASSERT(!(sizeof(JSObject) % sizeof(EncodedJSValue))); 2057 offsetOffset = sizeof(JSObject) / sizeof(EncodedJSValue); 2058 } else { 2059 propertyStorage = addToGraph(GetPropertyStorage, base); 2060 offsetOffset = 0; 2061 } 2062 addToGraph(PutByOffset, OpInfo(m_graph.m_storageAccessData.size()), propertyStorage, base, value); 2053 2063 2054 2064 StorageAccessData storageAccessData; 2055 storageAccessData.offset = putByIdStatus.offset() ;2065 storageAccessData.offset = putByIdStatus.offset() + offsetOffset; 2056 2066 storageAccessData.identifierNumber = identifierNumber; 2057 2067 m_graph.m_storageAccessData.append(storageAccessData); … … 2092 2102 base); 2093 2103 2104 size_t offsetOffset; 2105 NodeIndex propertyStorage; 2106 if (putByIdStatus.newStructure()->isUsingInlineStorage()) { 2107 propertyStorage = base; 2108 ASSERT(!(sizeof(JSObject) % sizeof(EncodedJSValue))); 2109 offsetOffset = sizeof(JSObject) / sizeof(EncodedJSValue); 2110 } else { 2111 propertyStorage = addToGraph(GetPropertyStorage, base); 2112 offsetOffset = 0; 2113 } 2094 2114 addToGraph( 2095 2115 PutByOffset, 2096 2116 OpInfo(m_graph.m_storageAccessData.size()), 2117 propertyStorage, 2097 2118 base, 2098 addToGraph(GetPropertyStorage, base),2099 2119 value); 2100 2120 2101 2121 StorageAccessData storageAccessData; 2102 storageAccessData.offset = putByIdStatus.offset() ;2122 storageAccessData.offset = putByIdStatus.offset() + offsetOffset; 2103 2123 storageAccessData.identifierNumber = identifierNumber; 2104 2124 m_graph.m_storageAccessData.append(storageAccessData); -
branches/dfgopt/Source/JavaScriptCore/dfg/DFGCSEPhase.cpp
r117017 r117819 308 308 for (unsigned i = m_indexInBlock; i--;) { 309 309 NodeIndex index = m_currentBlock->at(i); 310 if (index == child1) 310 if (index == child1) 311 311 break; 312 312 … … 321 321 case PutByOffset: 322 322 if (m_graph.m_storageAccessData[node.storageAccessDataIndex()].identifierNumber == identifierNumber) { 323 if (node.child 2() == child1)323 if (node.child1() == child1) // Must be same property storage. 324 324 return node.child3().index(); 325 325 return NoNode; -
branches/dfgopt/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp
r117542 r117819 3538 3538 case PutByOffset: { 3539 3539 #if ENABLE(GGC) || ENABLE(WRITE_BARRIER_PROFILING) 3540 SpeculateCellOperand base(this, node.child 1());3540 SpeculateCellOperand base(this, node.child2()); 3541 3541 #endif 3542 StorageOperand storage(this, node.child 2());3542 StorageOperand storage(this, node.child1()); 3543 3543 JSValueOperand value(this, node.child3()); 3544 3544 -
branches/dfgopt/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
r117542 r117819 3539 3539 case PutByOffset: { 3540 3540 #if ENABLE(GGC) || ENABLE(WRITE_BARRIER_PROFILING) 3541 SpeculateCellOperand base(this, node.child 1());3541 SpeculateCellOperand base(this, node.child2()); 3542 3542 #endif 3543 StorageOperand storage(this, node.child 2());3543 StorageOperand storage(this, node.child1()); 3544 3544 JSValueOperand value(this, node.child3()); 3545 3545
Note:
See TracChangeset
for help on using the changeset viewer.