Changeset 192935 in webkit for trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h
- Timestamp:
- Dec 1, 2015, 5:37:19 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h
r192914 r192935 33 33 template<typename Functor> 34 34 void computeUsesForBytecodeOffset( 35 CodeBlock* codeBlock, BytecodeBasicBlock* block,unsigned bytecodeOffset, const Functor& functor)35 CodeBlock* codeBlock, unsigned bytecodeOffset, const Functor& functor) 36 36 { 37 37 Interpreter* interpreter = codeBlock->vm()->interpreter; … … 72 72 case op_jneq_null: 73 73 case op_dec: 74 case op_inc: 75 case op_resume: { 74 case op_inc: { 76 75 functor(codeBlock, instruction, opcodeID, instruction[1].u.operand); 77 76 return; … … 127 126 case op_get_enumerable_length: 128 127 case op_new_func_exp: 129 case op_new_generator_func_exp:130 128 case op_new_arrow_func_exp: 131 129 case op_to_index_string: … … 156 154 case op_unsigned: 157 155 case op_new_func: 158 case op_new_generator_func:159 156 case op_get_parent_scope: 160 157 case op_create_scoped_arguments: … … 238 235 return; 239 236 } 240 case op_save: {241 functor(codeBlock, instruction, opcodeID, instruction[1].u.operand);242 unsigned mergePointBytecodeOffset = bytecodeOffset + instruction[3].u.operand;243 BytecodeBasicBlock* mergePointBlock = nullptr;244 for (BytecodeBasicBlock* successor : block->successors()) {245 if (successor->leaderBytecodeOffset() == mergePointBytecodeOffset) {246 mergePointBlock = successor;247 break;248 }249 }250 ASSERT(mergePointBlock);251 mergePointBlock->in().forEachSetBit([&](unsigned local) {252 functor(codeBlock, instruction, opcodeID, virtualRegisterForLocal(local).offset());253 });254 return;255 }256 237 default: 257 238 RELEASE_ASSERT_NOT_REACHED(); … … 261 242 262 243 template<typename Functor> 263 void computeDefsForBytecodeOffset(CodeBlock* codeBlock, BytecodeBasicBlock* block,unsigned bytecodeOffset, const Functor& functor)244 void computeDefsForBytecodeOffset(CodeBlock* codeBlock, unsigned bytecodeOffset, const Functor& functor) 264 245 { 265 246 Interpreter* interpreter = codeBlock->vm()->interpreter; … … 276 257 case op_throw: 277 258 case op_throw_static_error: 278 case op_save:279 259 case op_assert: 280 260 case op_debug: … … 337 317 case op_new_func: 338 318 case op_new_func_exp: 339 case op_new_generator_func:340 case op_new_generator_func_exp:341 319 case op_new_arrow_func_exp: 342 320 case op_call_varargs: … … 415 393 functor(codeBlock, instruction, opcodeID, virtualRegisterForLocal(i).offset()); 416 394 return; 417 } 418 case op_resume: { 419 RELEASE_ASSERT(block->successors().size() == 1); 420 block->successors()[0]->in().forEachSetBit([&](unsigned local) { 421 functor(codeBlock, instruction, opcodeID, virtualRegisterForLocal(local).offset()); 422 }); 423 return; 424 } 425 } 395 } } 426 396 } 427 397
Note:
See TracChangeset
for help on using the changeset viewer.