Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(626)

Side by Side Diff: src/interpreter/bytecode-array-builder.cc

Issue 1584813002: [Interpreter] Make ForInPrepare take a kRegTriple8 and ForInNext take kRegPair8 for cache state (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@int_forin
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698