Changeset 238499 in webkit
- Timestamp:
- Nov 26, 2018, 10:15:18 AM (8 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 3 edited
-
JSTests/ChangeLog (modified) (1 diff)
-
JSTests/stress/regress-187373.js (added)
-
Source/JavaScriptCore/ChangeLog (modified) (1 diff)
-
Source/JavaScriptCore/bytecode/PreciseJumpTargetsInlines.h (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/JSTests/ChangeLog
r238437 r238499 1 2018-11-26 Tadeu Zagallo <tzagallo@apple.com> 2 3 ASSERTION FAILED: m_outOfLineJumpTargets.contains(bytecodeOffset) 4 https://bugs.webkit.org/show_bug.cgi?id=191716 5 <rdar://problem/45723878> 6 7 Reviewed by Saam Barati. 8 9 * stress/regress-187373.js: Added. 10 (async.fn): 11 1 12 2018-11-21 Saam barati <sbarati@apple.com> 2 13 -
trunk/Source/JavaScriptCore/ChangeLog
r238461 r238499 1 2018-11-26 Tadeu Zagallo <tzagallo@apple.com> 2 3 ASSERTION FAILED: m_outOfLineJumpTargets.contains(bytecodeOffset) 4 https://bugs.webkit.org/show_bug.cgi?id=191716 5 <rdar://problem/45723878> 6 7 Reviewed by Saam Barati. 8 9 After https://bugs.webkit.org/show_bug.cgi?id=187373, when updating 10 jump targets during generatorification, we only stored the new jump 11 target when it changed. However, the out-of-line jump targets are 12 cleared at the beginning of the pass, so we need to store it 13 unconditionally. 14 15 * bytecode/PreciseJumpTargetsInlines.h: 16 (JSC::extractStoredJumpTargetsForInstruction): 17 (JSC::updateStoredJumpTargetsForInstruction): 18 1 19 2018-11-23 Wenson Hsieh <wenson_hsieh@apple.com> 2 20 -
trunk/Source/JavaScriptCore/bytecode/PreciseJumpTargetsInlines.h
r237933 r238499 113 113 114 114 template<typename Block, typename Function> 115 inline void extractStoredJumpTargetsForInstruction(Block&& codeBlock, const InstructionStream::Ref& instruction, Functionfunction)115 inline void extractStoredJumpTargetsForInstruction(Block&& codeBlock, const InstructionStream::Ref& instruction, const Function& function) 116 116 { 117 117 #define CASE_OP(__op) \ … … 134 134 135 135 template<typename Block, typename Function, typename CodeBlockOrHashMap> 136 inline void updateStoredJumpTargetsForInstruction(Block&& codeBlock, unsigned finalOffset, InstructionStream::MutableRef instruction, Function function, CodeBlockOrHashMapcodeBlockOrHashMap)136 inline void updateStoredJumpTargetsForInstruction(Block&& codeBlock, unsigned finalOffset, InstructionStream::MutableRef instruction, const Function& function, CodeBlockOrHashMap& codeBlockOrHashMap) 137 137 { 138 138 #define CASE_OP(__op) \ … … 140 140 int32_t target = jumpTargetForInstruction<__op>(codeBlockOrHashMap, instruction); \ 141 141 int32_t newTarget = function(target); \ 142 if (newTarget != target || finalOffset) { \ 143 instruction->cast<__op>()->setTarget(BoundLabel(newTarget), [&]() { \ 144 codeBlock->addOutOfLineJumpTarget(finalOffset + instruction.offset(), newTarget); \ 145 return BoundLabel(); \ 146 }); \ 147 } \ 142 instruction->cast<__op>()->setTarget(BoundLabel(newTarget), [&]() { \ 143 codeBlock->addOutOfLineJumpTarget(finalOffset + instruction.offset(), newTarget); \ 144 return BoundLabel(); \ 145 }); \ 148 146 break; \ 149 147 } … … 152 150 do { \ 153 151 int32_t target = __target; \ 154 int32_t newTarget = function(target); \ 155 if (newTarget != target) \ 156 __target = newTarget; \ 152 __target = function(target); \ 157 153 } while (false) 158 154 … … 161 157 int32_t target = jumpTargetForInstruction(codeBlockOrHashMap, instruction, bytecode.defaultOffset); \ 162 158 int32_t newTarget = function(target); \ 163 if (newTarget != target || finalOffset) { \ 164 instruction->cast<__op>()->setDefaultOffset(BoundLabel(newTarget), [&]() { \ 165 codeBlock->addOutOfLineJumpTarget(finalOffset + instruction.offset(), newTarget); \ 166 return BoundLabel(); \ 167 }); \ 168 } \ 159 instruction->cast<__op>()->setDefaultOffset(BoundLabel(newTarget), [&]() { \ 160 codeBlock->addOutOfLineJumpTarget(finalOffset + instruction.offset(), newTarget); \ 161 return BoundLabel(); \ 162 }); \ 169 163 } while (false) 170 164
Note:
See TracChangeset
for help on using the changeset viewer.