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 844 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
855 return *this; | 855 return *this; |
856 } | 856 } |
857 | 857 |
858 | 858 |
859 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInPrepare(Register receiver) { | 859 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInPrepare(Register receiver) { |
860 Output(Bytecode::kForInPrepare, receiver.ToOperand()); | 860 Output(Bytecode::kForInPrepare, receiver.ToOperand()); |
861 return *this; | 861 return *this; |
862 } | 862 } |
863 | 863 |
864 | 864 |
865 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInNext(Register for_in_state, | 865 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInNext(Register receiver, |
866 Register index) { | 866 Register index, |
867 Output(Bytecode::kForInNext, for_in_state.ToOperand(), index.ToOperand()); | 867 Register cache_type, |
| 868 Register cache_array) { |
| 869 Output(Bytecode::kForInNext, receiver.ToOperand(), index.ToOperand(), |
| 870 cache_type.ToOperand(), cache_array.ToOperand()); |
868 return *this; | 871 return *this; |
869 } | 872 } |
870 | 873 |
871 | 874 |
872 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInDone(Register for_in_state) { | 875 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInDone(Register index, |
873 Output(Bytecode::kForInDone, for_in_state.ToOperand()); | 876 Register cache_length) { |
| 877 Output(Bytecode::kForInDone, index.ToOperand(), cache_length.ToOperand()); |
| 878 |
874 return *this; | 879 return *this; |
875 } | 880 } |
876 | 881 |
| 882 |
| 883 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInStep(Register index) { |
| 884 Output(Bytecode::kForInStep, index.ToOperand()); |
| 885 return *this; |
| 886 } |
| 887 |
877 | 888 |
878 void BytecodeArrayBuilder::LeaveBasicBlock() { | 889 void BytecodeArrayBuilder::LeaveBasicBlock() { |
879 last_block_end_ = bytecodes()->size(); | 890 last_block_end_ = bytecodes()->size(); |
880 exit_seen_in_block_ = false; | 891 exit_seen_in_block_ = false; |
881 } | 892 } |
882 | 893 |
883 | 894 |
884 void BytecodeArrayBuilder::EnsureReturn() { | 895 void BytecodeArrayBuilder::EnsureReturn() { |
885 if (!exit_seen_in_block_) { | 896 if (!exit_seen_in_block_) { |
886 LoadUndefined(); | 897 LoadUndefined(); |
(...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1428 DCHECK_GT(next_consecutive_count_, 0); | 1439 DCHECK_GT(next_consecutive_count_, 0); |
1429 builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_); | 1440 builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_); |
1430 allocated_.push_back(next_consecutive_register_); | 1441 allocated_.push_back(next_consecutive_register_); |
1431 next_consecutive_count_--; | 1442 next_consecutive_count_--; |
1432 return Register(next_consecutive_register_++); | 1443 return Register(next_consecutive_register_++); |
1433 } | 1444 } |
1434 | 1445 |
1435 } // namespace interpreter | 1446 } // namespace interpreter |
1436 } // namespace internal | 1447 } // namespace internal |
1437 } // namespace v8 | 1448 } // namespace v8 |
OLD | NEW |