Chromium Code Reviews| 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 956 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 967 } | 967 } |
| 968 | 968 |
| 969 | 969 |
| 970 BytecodeArrayBuilder& BytecodeArrayBuilder::Return() { | 970 BytecodeArrayBuilder& BytecodeArrayBuilder::Return() { |
| 971 Output(Bytecode::kReturn); | 971 Output(Bytecode::kReturn); |
| 972 exit_seen_in_block_ = true; | 972 exit_seen_in_block_ = true; |
| 973 return *this; | 973 return *this; |
| 974 } | 974 } |
| 975 | 975 |
| 976 | 976 |
| 977 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInPrepare( | 977 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInPrepare(Register first_reg) { |
|
oth
2016/01/13 15:28:58
Nit, argument name generic, s/first_reg/cache_info
rmcilroy
2016/01/18 09:40:49
Done.
| |
| 978 Register cache_type, Register cache_array, Register cache_length) { | 978 Output(Bytecode::kForInPrepare, first_reg.ToOperand()); |
| 979 Output(Bytecode::kForInPrepare, cache_type.ToOperand(), | |
| 980 cache_array.ToOperand(), cache_length.ToOperand()); | |
| 981 return *this; | 979 return *this; |
| 982 } | 980 } |
| 983 | 981 |
| 984 | 982 |
| 985 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInDone(Register index, | 983 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInDone(Register index, |
| 986 Register cache_length) { | 984 Register cache_length) { |
| 987 Output(Bytecode::kForInDone, index.ToOperand(), cache_length.ToOperand()); | 985 Output(Bytecode::kForInDone, index.ToOperand(), cache_length.ToOperand()); |
| 988 return *this; | 986 return *this; |
| 989 } | 987 } |
| 990 | 988 |
| 991 | 989 |
| 992 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInNext(Register receiver, | 990 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInNext(Register receiver, |
| 993 Register cache_type, | 991 Register index, |
| 994 Register cache_array, | 992 Register cache_reg_pair) { |
| 995 Register index) { | 993 Output(Bytecode::kForInNext, receiver.ToOperand(), index.ToOperand(), |
| 996 Output(Bytecode::kForInNext, receiver.ToOperand(), cache_type.ToOperand(), | 994 cache_reg_pair.ToOperand()); |
| 997 cache_array.ToOperand(), index.ToOperand()); | |
| 998 return *this; | 995 return *this; |
| 999 } | 996 } |
| 1000 | 997 |
| 1001 | 998 |
| 1002 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInStep(Register index) { | 999 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInStep(Register index) { |
| 1003 Output(Bytecode::kForInStep, index.ToOperand()); | 1000 Output(Bytecode::kForInStep, index.ToOperand()); |
| 1004 return *this; | 1001 return *this; |
| 1005 } | 1002 } |
| 1006 | 1003 |
| 1007 | 1004 |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1249 // Fall-through to kReg8 case. | 1246 // Fall-through to kReg8 case. |
| 1250 case OperandType::kReg8: | 1247 case OperandType::kReg8: |
| 1251 return RegisterIsValid( | 1248 return RegisterIsValid( |
| 1252 Register::FromOperand(static_cast<uint8_t>(operand_value))); | 1249 Register::FromOperand(static_cast<uint8_t>(operand_value))); |
| 1253 case OperandType::kRegPair8: { | 1250 case OperandType::kRegPair8: { |
| 1254 Register reg0 = | 1251 Register reg0 = |
| 1255 Register::FromOperand(static_cast<uint8_t>(operand_value)); | 1252 Register::FromOperand(static_cast<uint8_t>(operand_value)); |
| 1256 Register reg1 = Register(reg0.index() + 1); | 1253 Register reg1 = Register(reg0.index() + 1); |
| 1257 return RegisterIsValid(reg0) && RegisterIsValid(reg1); | 1254 return RegisterIsValid(reg0) && RegisterIsValid(reg1); |
| 1258 } | 1255 } |
| 1256 case OperandType::kRegTriple8: { | |
| 1257 Register reg0 = | |
| 1258 Register::FromOperand(static_cast<uint8_t>(operand_value)); | |
| 1259 Register reg1 = Register(reg0.index() + 1); | |
| 1260 Register reg2 = Register(reg0.index() + 2); | |
| 1261 return RegisterIsValid(reg0) && RegisterIsValid(reg1) && | |
| 1262 RegisterIsValid(reg2); | |
| 1263 } | |
| 1259 case OperandType::kReg16: | 1264 case OperandType::kReg16: |
| 1260 if (bytecode != Bytecode::kExchange && | 1265 if (bytecode != Bytecode::kExchange && |
| 1261 bytecode != Bytecode::kExchangeWide) { | 1266 bytecode != Bytecode::kExchangeWide) { |
| 1262 return false; | 1267 return false; |
| 1263 } | 1268 } |
| 1264 return RegisterIsValid( | 1269 return RegisterIsValid( |
| 1265 Register::FromWideOperand(static_cast<uint16_t>(operand_value))); | 1270 Register::FromWideOperand(static_cast<uint16_t>(operand_value))); |
| 1266 } | 1271 } |
| 1267 UNREACHABLE(); | 1272 UNREACHABLE(); |
| 1268 return false; | 1273 return false; |
| (...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1663 DCHECK_GT(next_consecutive_count_, 0); | 1668 DCHECK_GT(next_consecutive_count_, 0); |
| 1664 builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_); | 1669 builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_); |
| 1665 allocated_.push_back(next_consecutive_register_); | 1670 allocated_.push_back(next_consecutive_register_); |
| 1666 next_consecutive_count_--; | 1671 next_consecutive_count_--; |
| 1667 return Register(next_consecutive_register_++); | 1672 return Register(next_consecutive_register_++); |
| 1668 } | 1673 } |
| 1669 | 1674 |
| 1670 } // namespace interpreter | 1675 } // namespace interpreter |
| 1671 } // namespace internal | 1676 } // namespace internal |
| 1672 } // namespace v8 | 1677 } // namespace v8 |
| OLD | NEW |