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

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: Fix release 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
« no previous file with comments | « src/interpreter/bytecode-array-builder.h ('k') | src/interpreter/bytecode-array-iterator.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 963 matching lines...) Expand 10 before | Expand all | Expand 10 after
974 974
975 975
976 BytecodeArrayBuilder& BytecodeArrayBuilder::Return() { 976 BytecodeArrayBuilder& BytecodeArrayBuilder::Return() {
977 Output(Bytecode::kReturn); 977 Output(Bytecode::kReturn);
978 exit_seen_in_block_ = true; 978 exit_seen_in_block_ = true;
979 return *this; 979 return *this;
980 } 980 }
981 981
982 982
983 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInPrepare( 983 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInPrepare(
984 Register cache_type, Register cache_array, Register cache_length) { 984 Register cache_info_triple) {
985 Output(Bytecode::kForInPrepare, cache_type.ToOperand(), 985 Output(Bytecode::kForInPrepare, cache_info_triple.ToOperand());
986 cache_array.ToOperand(), cache_length.ToOperand());
987 return *this; 986 return *this;
988 } 987 }
989 988
990 989
991 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInDone(Register index, 990 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInDone(Register index,
992 Register cache_length) { 991 Register cache_length) {
993 Output(Bytecode::kForInDone, index.ToOperand(), cache_length.ToOperand()); 992 Output(Bytecode::kForInDone, index.ToOperand(), cache_length.ToOperand());
994 return *this; 993 return *this;
995 } 994 }
996 995
997 996
998 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInNext(Register receiver, 997 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInNext(
999 Register cache_type, 998 Register receiver, Register index, Register cache_type_array_pair) {
1000 Register cache_array, 999 Output(Bytecode::kForInNext, receiver.ToOperand(), index.ToOperand(),
1001 Register index) { 1000 cache_type_array_pair.ToOperand());
1002 Output(Bytecode::kForInNext, receiver.ToOperand(), cache_type.ToOperand(),
1003 cache_array.ToOperand(), index.ToOperand());
1004 return *this; 1001 return *this;
1005 } 1002 }
1006 1003
1007 1004
1008 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInStep(Register index) { 1005 BytecodeArrayBuilder& BytecodeArrayBuilder::ForInStep(Register index) {
1009 Output(Bytecode::kForInStep, index.ToOperand()); 1006 Output(Bytecode::kForInStep, index.ToOperand());
1010 return *this; 1007 return *this;
1011 } 1008 }
1012 1009
1013 1010
(...skipping 235 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 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
1599 1604
1600 1605
1601 // static 1606 // static
1602 bool BytecodeArrayBuilder::FitsInReg16Operand(Register value) { 1607 bool BytecodeArrayBuilder::FitsInReg16Operand(Register value) {
1603 return kMinInt16 <= value.index() && value.index() <= kMaxInt16; 1608 return kMinInt16 <= value.index() && value.index() <= kMaxInt16;
1604 } 1609 }
1605 1610
1606 } // namespace interpreter 1611 } // namespace interpreter
1607 } // namespace internal 1612 } // namespace internal
1608 } // namespace v8 1613 } // namespace v8
OLDNEW
« no previous file with comments | « src/interpreter/bytecode-array-builder.h ('k') | src/interpreter/bytecode-array-iterator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698