OLD | NEW |
---|---|
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/interpreter/bytecode-register-optimizer.h" | 5 #include "src/interpreter/bytecode-register-optimizer.h" |
6 | 6 |
7 namespace v8 { | 7 namespace v8 { |
8 namespace internal { | 8 namespace internal { |
9 namespace interpreter { | 9 namespace interpreter { |
10 | 10 |
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
409 size_t old_size = register_info_table_.size(); | 409 size_t old_size = register_info_table_.size(); |
410 register_info_table_.resize(new_size); | 410 register_info_table_.resize(new_size); |
411 for (size_t i = old_size; i < new_size; ++i) { | 411 for (size_t i = old_size; i < new_size; ++i) { |
412 register_info_table_[i] = | 412 register_info_table_[i] = |
413 new (zone()) RegisterInfo(RegisterFromRegisterInfoTableIndex(i), | 413 new (zone()) RegisterInfo(RegisterFromRegisterInfoTableIndex(i), |
414 NextEquivalenceId(), true, false); | 414 NextEquivalenceId(), true, false); |
415 } | 415 } |
416 } | 416 } |
417 } | 417 } |
418 | 418 |
419 void BytecodeRegisterOptimizer::SetRegisterAllocated(Register reg) { | |
rmcilroy
2017/06/07 13:01:58
nit - could you pull out the GetOrCreateRegisterIn
Jarin
2017/06/07 15:14:07
Done.
| |
420 RegisterInfo* info = GetOrCreateRegisterInfo(reg); | |
421 info->set_allocated(true); | |
422 if (!info->materialized()) { | |
423 info->MoveToNewEquivalenceSet(NextEquivalenceId(), true); | |
424 } | |
425 } | |
426 | |
419 void BytecodeRegisterOptimizer::RegisterAllocateEvent(Register reg) { | 427 void BytecodeRegisterOptimizer::RegisterAllocateEvent(Register reg) { |
420 GetOrCreateRegisterInfo(reg)->set_allocated(true); | 428 SetRegisterAllocated(reg); |
421 } | 429 } |
422 | 430 |
423 void BytecodeRegisterOptimizer::RegisterListAllocateEvent( | 431 void BytecodeRegisterOptimizer::RegisterListAllocateEvent( |
424 RegisterList reg_list) { | 432 RegisterList reg_list) { |
425 if (reg_list.register_count() != 0) { | 433 if (reg_list.register_count() != 0) { |
426 int first_index = reg_list.first_register().index(); | 434 int first_index = reg_list.first_register().index(); |
427 GrowRegisterMap(Register(first_index + reg_list.register_count() - 1)); | 435 GrowRegisterMap(Register(first_index + reg_list.register_count() - 1)); |
428 for (int i = 0; i < reg_list.register_count(); i++) { | 436 for (int i = 0; i < reg_list.register_count(); i++) { |
429 GetRegisterInfo(Register(first_index + i))->set_allocated(true); | 437 SetRegisterAllocated(Register(first_index + i)); |
430 } | 438 } |
431 } | 439 } |
432 } | 440 } |
433 | 441 |
434 void BytecodeRegisterOptimizer::RegisterListFreeEvent(RegisterList reg_list) { | 442 void BytecodeRegisterOptimizer::RegisterListFreeEvent(RegisterList reg_list) { |
435 int first_index = reg_list.first_register().index(); | 443 int first_index = reg_list.first_register().index(); |
436 for (int i = 0; i < reg_list.register_count(); i++) { | 444 for (int i = 0; i < reg_list.register_count(); i++) { |
437 GetRegisterInfo(Register(first_index + i))->set_allocated(false); | 445 GetRegisterInfo(Register(first_index + i))->set_allocated(false); |
438 } | 446 } |
439 } | 447 } |
440 | 448 |
441 } // namespace interpreter | 449 } // namespace interpreter |
442 } // namespace internal | 450 } // namespace internal |
443 } // namespace v8 | 451 } // namespace v8 |
OLD | NEW |