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 866 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
877 } | 877 } |
878 | 878 |
879 | 879 |
880 BytecodeArrayBuilder& BytecodeArrayBuilder::Return() { | 880 BytecodeArrayBuilder& BytecodeArrayBuilder::Return() { |
881 Output(Bytecode::kReturn); | 881 Output(Bytecode::kReturn); |
882 exit_seen_in_block_ = true; | 882 exit_seen_in_block_ = true; |
883 return *this; | 883 return *this; |
884 } | 884 } |
885 | 885 |
886 | 886 |
887 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInPrepare(Register receiver) { | 887 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInPrepare( |
888 Output(Bytecode::kForInPrepare, receiver.ToOperand()); | 888 Register receiver, Register cache_type, Register cache_array, |
| 889 Register cache_length) { |
| 890 Output(Bytecode::kForInPrepare, receiver.ToOperand(), cache_type.ToOperand(), |
| 891 cache_array.ToOperand(), cache_length.ToOperand()); |
889 return *this; | 892 return *this; |
890 } | 893 } |
891 | 894 |
892 | 895 |
893 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInNext(Register for_in_state, | 896 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInNext(Register receiver, |
| 897 Register cache_type, |
| 898 Register cache_array, |
894 Register index) { | 899 Register index) { |
895 Output(Bytecode::kForInNext, for_in_state.ToOperand(), index.ToOperand()); | 900 Output(Bytecode::kForInNext, receiver.ToOperand(), cache_type.ToOperand(), |
| 901 cache_array.ToOperand(), index.ToOperand()); |
896 return *this; | 902 return *this; |
897 } | 903 } |
898 | 904 |
899 | 905 |
900 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInDone(Register for_in_state) { | 906 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInDone(Register index, |
901 Output(Bytecode::kForInDone, for_in_state.ToOperand()); | 907 Register cache_length) { |
| 908 Output(Bytecode::kForInDone, index.ToOperand(), cache_length.ToOperand()); |
| 909 |
902 return *this; | 910 return *this; |
903 } | 911 } |
904 | 912 |
| 913 |
| 914 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInStep(Register index) { |
| 915 Output(Bytecode::kForInStep, index.ToOperand()); |
| 916 return *this; |
| 917 } |
| 918 |
905 | 919 |
906 void BytecodeArrayBuilder::LeaveBasicBlock() { | 920 void BytecodeArrayBuilder::LeaveBasicBlock() { |
907 last_block_end_ = bytecodes()->size(); | 921 last_block_end_ = bytecodes()->size(); |
908 exit_seen_in_block_ = false; | 922 exit_seen_in_block_ = false; |
909 } | 923 } |
910 | 924 |
911 | 925 |
912 void BytecodeArrayBuilder::EnsureReturn() { | 926 void BytecodeArrayBuilder::EnsureReturn() { |
913 if (!exit_seen_in_block_) { | 927 if (!exit_seen_in_block_) { |
914 LoadUndefined(); | 928 LoadUndefined(); |
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1473 DCHECK_GT(next_consecutive_count_, 0); | 1487 DCHECK_GT(next_consecutive_count_, 0); |
1474 builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_); | 1488 builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_); |
1475 allocated_.push_back(next_consecutive_register_); | 1489 allocated_.push_back(next_consecutive_register_); |
1476 next_consecutive_count_--; | 1490 next_consecutive_count_--; |
1477 return Register(next_consecutive_register_++); | 1491 return Register(next_consecutive_register_++); |
1478 } | 1492 } |
1479 | 1493 |
1480 } // namespace interpreter | 1494 } // namespace interpreter |
1481 } // namespace internal | 1495 } // namespace internal |
1482 } // namespace v8 | 1496 } // namespace v8 |
OLD | NEW |