Changeset 267062 in webkit
- Timestamp:
- Sep 14, 2020 6:25:54 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JSTests/ChangeLog
r267040 r267062 1 2020-09-14 Keith Miller <keith_miller@apple.com> 2 3 BytecodeParser should GetLocal op_ret's value even if it's unused by the caller 4 https://bugs.webkit.org/show_bug.cgi?id=216506 5 6 Reviewed by Mark Lam. 7 8 * stress/osr-availability-should-see-unused-return-as-available.js: Added. 9 (foo): 10 (set isFinite): 11 1 12 2020-09-14 Alexey Shvayka <shvaikalesh@gmail.com> 2 13 -
trunk/Source/JavaScriptCore/ChangeLog
r267040 r267062 1 2020-09-14 Keith Miller <keith_miller@apple.com> 2 3 BytecodeParser should GetLocal op_ret's value even if it's unused by the caller 4 https://bugs.webkit.org/show_bug.cgi?id=216506 5 6 Reviewed by Mark Lam. 7 8 We have to unconditionally GetLocal operands each bytecode claims to use 9 regardless of true liveness. This is important to keep OSRAvailability simple. 10 However, op_ret would only GetLocal the return value if we knew the value 11 was going to be used by an inline caller. 12 13 * dfg/DFGByteCodeParser.cpp: 14 (JSC::DFG::ByteCodeParser::parseBlock): 15 1 16 2020-09-14 Alexey Shvayka <shvaikalesh@gmail.com> 2 17 -
trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
r266242 r267062 6521 6521 auto bytecode = currentInstruction->as<OpRet>(); 6522 6522 ASSERT(!m_currentBlock->terminal()); 6523 // We have to get the return here even if we know the caller won't use it because the GetLocal may 6524 // be the only thing keeping m_value alive for OSR. 6525 auto returnValue = get(bytecode.m_value); 6526 6523 6527 if (!inlineCallFrame()) { 6524 6528 // Simple case: we are just producing a return 6525 addToGraph(Return, get(bytecode.m_value));6529 addToGraph(Return, returnValue); 6526 6530 flushForReturn(); 6527 6531 LAST_OPCODE(op_ret); … … 6530 6534 flushForReturn(); 6531 6535 if (m_inlineStackTop->m_returnValue.isValid()) 6532 setDirect(m_inlineStackTop->m_returnValue, get(bytecode.m_value), ImmediateSetWithFlush);6536 setDirect(m_inlineStackTop->m_returnValue, returnValue, ImmediateSetWithFlush); 6533 6537 6534 6538 if (!m_inlineStackTop->m_continuationBlock && m_currentIndex.offset() + currentInstruction->size() != m_inlineStackTop->m_codeBlock->instructions().size()) {
Note: See TracChangeset
for help on using the changeset viewer.