| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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-array-builder.h" | 5 #include "src/interpreter/bytecode-array-builder.h" |
| 6 | 6 |
| 7 namespace v8 { | 7 namespace v8 { |
| 8 namespace internal { | 8 namespace internal { |
| 9 namespace interpreter { | 9 namespace interpreter { |
| 10 | 10 |
| (...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 849 } | 849 } |
| 850 | 850 |
| 851 | 851 |
| 852 BytecodeArrayBuilder& BytecodeArrayBuilder::Return() { | 852 BytecodeArrayBuilder& BytecodeArrayBuilder::Return() { |
| 853 Output(Bytecode::kReturn); | 853 Output(Bytecode::kReturn); |
| 854 exit_seen_in_block_ = true; | 854 exit_seen_in_block_ = true; |
| 855 return *this; | 855 return *this; |
| 856 } | 856 } |
| 857 | 857 |
| 858 | 858 |
| 859 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInPrepare(Register receiver) { | 859 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInPrepare( |
| 860 Output(Bytecode::kForInPrepare, receiver.ToOperand()); | 860 Register receiver, Register cache_type, Register cache_array, |
| 861 Register cache_length) { |
| 862 Output(Bytecode::kForInPrepare, receiver.ToOperand(), cache_type.ToOperand(), |
| 863 cache_array.ToOperand(), cache_length.ToOperand()); |
| 861 return *this; | 864 return *this; |
| 862 } | 865 } |
| 863 | 866 |
| 864 | 867 |
| 865 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInNext(Register for_in_state, | 868 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInNext(Register receiver, |
| 869 Register cache_type, |
| 870 Register cache_array, |
| 866 Register index) { | 871 Register index) { |
| 867 Output(Bytecode::kForInNext, for_in_state.ToOperand(), index.ToOperand()); | 872 Output(Bytecode::kForInNext, receiver.ToOperand(), cache_type.ToOperand(), |
| 873 cache_array.ToOperand(), index.ToOperand()); |
| 868 return *this; | 874 return *this; |
| 869 } | 875 } |
| 870 | 876 |
| 871 | 877 |
| 872 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInDone(Register for_in_state) { | 878 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInDone(Register index, |
| 873 Output(Bytecode::kForInDone, for_in_state.ToOperand()); | 879 Register cache_length) { |
| 880 Output(Bytecode::kForInDone, index.ToOperand(), cache_length.ToOperand()); |
| 881 |
| 874 return *this; | 882 return *this; |
| 875 } | 883 } |
| 876 | 884 |
| 885 |
| 886 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInStep(Register index) { |
| 887 Output(Bytecode::kForInStep, index.ToOperand()); |
| 888 return *this; |
| 889 } |
| 890 |
| 877 | 891 |
| 878 void BytecodeArrayBuilder::LeaveBasicBlock() { | 892 void BytecodeArrayBuilder::LeaveBasicBlock() { |
| 879 last_block_end_ = bytecodes()->size(); | 893 last_block_end_ = bytecodes()->size(); |
| 880 exit_seen_in_block_ = false; | 894 exit_seen_in_block_ = false; |
| 881 } | 895 } |
| 882 | 896 |
| 883 | 897 |
| 884 void BytecodeArrayBuilder::EnsureReturn() { | 898 void BytecodeArrayBuilder::EnsureReturn() { |
| 885 if (!exit_seen_in_block_) { | 899 if (!exit_seen_in_block_) { |
| 886 LoadUndefined(); | 900 LoadUndefined(); |
| (...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1428 DCHECK_GT(next_consecutive_count_, 0); | 1442 DCHECK_GT(next_consecutive_count_, 0); |
| 1429 builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_); | 1443 builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_); |
| 1430 allocated_.push_back(next_consecutive_register_); | 1444 allocated_.push_back(next_consecutive_register_); |
| 1431 next_consecutive_count_--; | 1445 next_consecutive_count_--; |
| 1432 return Register(next_consecutive_register_++); | 1446 return Register(next_consecutive_register_++); |
| 1433 } | 1447 } |
| 1434 | 1448 |
| 1435 } // namespace interpreter | 1449 } // namespace interpreter |
| 1436 } // namespace internal | 1450 } // namespace internal |
| 1437 } // namespace v8 | 1451 } // namespace v8 |
| OLD | NEW |