Changeset 261603 in webkit
- Timestamp:
- May 13, 2020 12:24:13 AM (4 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JSTests/ChangeLog
r261601 r261603 1 2020-05-13 Saam Barati <sbarati@apple.com> 2 3 MovHint can see an arguments object be MovHinted to a Tmp 4 https://bugs.webkit.org/show_bug.cgi?id=211820 5 <rdar://problem/62882158> 6 7 Reviewed by Keith Miller. 8 9 * stress/varargs-forwarding-can-see-arguments-mov-hint-to-for-of-tmp.js: Added. 10 (let.iter.Symbol.iterator.return.next): 11 (let.iter.Symbol.iterator): 12 1 13 2020-05-13 Alexey Shvayka <shvaikalesh@gmail.com> 2 14 -
trunk/Source/JavaScriptCore/ChangeLog
r261601 r261603 1 2020-05-13 Saam Barati <sbarati@apple.com> 2 3 MovHint can see an arguments object be MovHinted to a Tmp 4 https://bugs.webkit.org/show_bug.cgi?id=211820 5 <rdar://problem/62882158> 6 7 Reviewed by Keith Miller. 8 9 We had an assert that it wasn't possible to have a MovHint from an arguments 10 object to a Tmp. However, this is possible with for-of. There is nothing 11 about the current algorithm that is specific to only VirtualRegisters. The 12 algorithm also works over Tmps. So I've generalized the algorithm to just work 13 over Operand. 14 15 * dfg/DFGVarargsForwardingPhase.cpp: 16 1 17 2020-05-13 Alexey Shvayka <shvaikalesh@gmail.com> 2 18 -
trunk/Source/JavaScriptCore/dfg/DFGVarargsForwardingPhase.cpp
r261595 r261603 98 98 // sites. 99 99 unsigned lastUserIndex = candidateNodeIndex; 100 Vector< VirtualRegister, 2> relevantLocals; // This is a set. We expect it to be a small set.100 Vector<Operand, 2> relevantLocals; // This is a set. We expect it to be a small set. 101 101 for (unsigned nodeIndex = candidateNodeIndex + 1; nodeIndex < block->size(); ++nodeIndex) { 102 102 Node* node = block->at(nodeIndex); … … 116 116 if (node->child1() != candidate) 117 117 break; 118 ASSERT_WITH_MESSAGE(!node->unlinkedOperand().isTmp(), "We don't currently support a tmp referring to an arguments object.");119 118 lastUserIndex = nodeIndex; 120 if (!relevantLocals.contains(node->unlinkedOperand() .virtualRegister()))121 relevantLocals.append(node->unlinkedOperand() .virtualRegister());119 if (!relevantLocals.contains(node->unlinkedOperand())) 120 relevantLocals.append(node->unlinkedOperand()); 122 121 break; 123 122 … … 246 245 relevantLocals.removeLast(); 247 246 lastUserIndex = nodeIndex; 247 ASSERT(!relevantLocals.contains(operand)); 248 break; 248 249 } 249 250 }
Note: See TracChangeset
for help on using the changeset viewer.