| 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::AllocateRegister(RegisterInfo* info) { |
| 420 info->set_allocated(true); |
| 421 if (!info->materialized()) { |
| 422 info->MoveToNewEquivalenceSet(NextEquivalenceId(), true); |
| 423 } |
| 424 } |
| 425 |
| 419 void BytecodeRegisterOptimizer::RegisterAllocateEvent(Register reg) { | 426 void BytecodeRegisterOptimizer::RegisterAllocateEvent(Register reg) { |
| 420 GetOrCreateRegisterInfo(reg)->set_allocated(true); | 427 AllocateRegister(GetOrCreateRegisterInfo(reg)); |
| 421 } | 428 } |
| 422 | 429 |
| 423 void BytecodeRegisterOptimizer::RegisterListAllocateEvent( | 430 void BytecodeRegisterOptimizer::RegisterListAllocateEvent( |
| 424 RegisterList reg_list) { | 431 RegisterList reg_list) { |
| 425 if (reg_list.register_count() != 0) { | 432 if (reg_list.register_count() != 0) { |
| 426 int first_index = reg_list.first_register().index(); | 433 int first_index = reg_list.first_register().index(); |
| 427 GrowRegisterMap(Register(first_index + reg_list.register_count() - 1)); | 434 GrowRegisterMap(Register(first_index + reg_list.register_count() - 1)); |
| 428 for (int i = 0; i < reg_list.register_count(); i++) { | 435 for (int i = 0; i < reg_list.register_count(); i++) { |
| 429 GetRegisterInfo(Register(first_index + i))->set_allocated(true); | 436 AllocateRegister(GetRegisterInfo(Register(first_index + i))); |
| 430 } | 437 } |
| 431 } | 438 } |
| 432 } | 439 } |
| 433 | 440 |
| 434 void BytecodeRegisterOptimizer::RegisterListFreeEvent(RegisterList reg_list) { | 441 void BytecodeRegisterOptimizer::RegisterListFreeEvent(RegisterList reg_list) { |
| 435 int first_index = reg_list.first_register().index(); | 442 int first_index = reg_list.first_register().index(); |
| 436 for (int i = 0; i < reg_list.register_count(); i++) { | 443 for (int i = 0; i < reg_list.register_count(); i++) { |
| 437 GetRegisterInfo(Register(first_index + i))->set_allocated(false); | 444 GetRegisterInfo(Register(first_index + i))->set_allocated(false); |
| 438 } | 445 } |
| 439 } | 446 } |
| 440 | 447 |
| 441 } // namespace interpreter | 448 } // namespace interpreter |
| 442 } // namespace internal | 449 } // namespace internal |
| 443 } // namespace v8 | 450 } // namespace v8 |
| OLD | NEW |