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

Side by Side Diff: src/interpreter/bytecodes.cc

Issue 1555713002: [Interpreter] Bytecodes for exchanging registers. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: One more test. 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/bytecodes.h" 5 #include "src/interpreter/bytecodes.h"
6 6
7 #include "src/frames.h" 7 #include "src/frames.h"
8 #include "src/interpreter/bytecode-traits.h" 8 #include "src/interpreter/bytecode-traits.h"
9 9
10 namespace v8 { 10 namespace v8 {
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 if (parameter_index == 0) { 266 if (parameter_index == 0) {
267 os << "<this>"; 267 os << "<this>";
268 } else { 268 } else {
269 os << "a" << parameter_index - 1; 269 os << "a" << parameter_index - 1;
270 } 270 }
271 } else { 271 } else {
272 os << "r" << reg.index(); 272 os << "r" << reg.index();
273 } 273 }
274 break; 274 break;
275 } 275 }
276 case interpreter::OperandType::kReg16: {
277 Register reg =
278 Register::FromWideOperand(ReadUnalignedUInt16(operand_start));
279 os << "r" << reg.index();
rmcilroy 2016/01/04 11:54:54 nit - add "a" argument case as well ?
oth 2016/01/04 14:01:42 Okay, done, was not done as not part of current ch
280 break;
281 }
276 case interpreter::OperandType::kNone: 282 case interpreter::OperandType::kNone:
277 UNREACHABLE(); 283 UNREACHABLE();
278 break; 284 break;
279 } 285 }
280 if (i != number_of_operands - 1) { 286 if (i != number_of_operands - 1) {
281 os << ", "; 287 os << ", ";
282 } 288 }
283 } 289 }
284 return os; 290 return os;
285 } 291 }
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 363
358 364
359 bool Register::is_new_target() const { 365 bool Register::is_new_target() const {
360 return index() == kNewTargetRegisterIndex; 366 return index() == kNewTargetRegisterIndex;
361 } 367 }
362 368
363 369
364 int Register::MaxParameterIndex() { return kMaxParameterIndex; } 370 int Register::MaxParameterIndex() { return kMaxParameterIndex; }
365 371
366 372
367 uint8_t Register::ToOperand() const { return static_cast<uint8_t>(-index_); } 373 uint8_t Register::ToOperand() const {
374 DCHECK_GE(index_, kMinRegisterIndex);
375 DCHECK_LE(index_, kMaxRegisterIndex);
376 return static_cast<uint8_t>(-index_);
377 }
368 378
369 379
370 Register Register::FromOperand(uint8_t operand) { 380 Register Register::FromOperand(uint8_t operand) {
371 return Register(-static_cast<int8_t>(operand)); 381 return Register(-static_cast<int8_t>(operand));
372 } 382 }
373 383
374 384
385 uint16_t Register::ToWideOperand() const {
386 DCHECK_GE(index_, kMinInt16);
387 DCHECK_LE(index_, kMaxInt16);
388 return static_cast<uint16_t>(-index_);
389 }
390
391
392 Register Register::FromWideOperand(uint16_t operand) {
393 return Register(-static_cast<int16_t>(operand));
394 }
395
396
375 bool Register::AreContiguous(Register reg1, Register reg2, Register reg3, 397 bool Register::AreContiguous(Register reg1, Register reg2, Register reg3,
376 Register reg4, Register reg5) { 398 Register reg4, Register reg5) {
377 if (reg1.index() + 1 != reg2.index()) { 399 if (reg1.index() + 1 != reg2.index()) {
378 return false; 400 return false;
379 } 401 }
380 if (reg3.is_valid() && reg2.index() + 1 != reg3.index()) { 402 if (reg3.is_valid() && reg2.index() + 1 != reg3.index()) {
381 return false; 403 return false;
382 } 404 }
383 if (reg4.is_valid() && reg3.index() + 1 != reg4.index()) { 405 if (reg4.is_valid() && reg3.index() + 1 != reg4.index()) {
384 return false; 406 return false;
385 } 407 }
386 if (reg5.is_valid() && reg4.index() + 1 != reg5.index()) { 408 if (reg5.is_valid() && reg4.index() + 1 != reg5.index()) {
387 return false; 409 return false;
388 } 410 }
389 return true; 411 return true;
390 } 412 }
391 413
392 } // namespace interpreter 414 } // namespace interpreter
393 } // namespace internal 415 } // namespace internal
394 } // namespace v8 416 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698