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

Side by Side Diff: src/x64/macro-assembler-x64.cc

Issue 1229233002: Remove more uses of the deprecated EnumSet template class. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 5 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/x64/macro-assembler-x64.h ('k') | test/cctest/test-macro-assembler-x64.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_X64 7 #if V8_TARGET_ARCH_X64
8 8
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/base/division-by-constant.h" 10 #include "src/base/division-by-constant.h"
(...skipping 1362 matching lines...) Expand 10 before | Expand all | Expand 10 after
1373 addl(Operand(dst, kSmiShift / kBitsPerByte), 1373 addl(Operand(dst, kSmiShift / kBitsPerByte),
1374 Immediate(constant->value())); 1374 Immediate(constant->value()));
1375 } else { 1375 } else {
1376 DCHECK(SmiValuesAre31Bits()); 1376 DCHECK(SmiValuesAre31Bits());
1377 addp(dst, Immediate(constant)); 1377 addp(dst, Immediate(constant));
1378 } 1378 }
1379 } 1379 }
1380 } 1380 }
1381 1381
1382 1382
1383 void MacroAssembler::SmiAddConstant(Register dst, 1383 void MacroAssembler::SmiAddConstant(Register dst, Register src, Smi* constant,
1384 Register src, 1384 SmiOperationConstraints constraints,
1385 Smi* constant,
1386 SmiOperationExecutionMode mode,
1387 Label* bailout_label, 1385 Label* bailout_label,
1388 Label::Distance near_jump) { 1386 Label::Distance near_jump) {
1389 if (constant->value() == 0) { 1387 if (constant->value() == 0) {
1390 if (!dst.is(src)) { 1388 if (!dst.is(src)) {
1391 movp(dst, src); 1389 movp(dst, src);
1392 } 1390 }
1393 } else if (dst.is(src)) { 1391 } else if (dst.is(src)) {
1394 DCHECK(!dst.is(kScratchRegister)); 1392 DCHECK(!dst.is(kScratchRegister));
1395 LoadSmiConstant(kScratchRegister, constant); 1393 LoadSmiConstant(kScratchRegister, constant);
1396 addp(dst, kScratchRegister); 1394 addp(dst, kScratchRegister);
1397 if (mode.Contains(BAILOUT_ON_NO_OVERFLOW)) { 1395 if (constraints & SmiOperationConstraint::kBailoutOnNoOverflow) {
1398 j(no_overflow, bailout_label, near_jump); 1396 j(no_overflow, bailout_label, near_jump);
1399 DCHECK(mode.Contains(PRESERVE_SOURCE_REGISTER)); 1397 DCHECK(constraints & SmiOperationConstraint::kPreserveSourceRegister);
1400 subp(dst, kScratchRegister); 1398 subp(dst, kScratchRegister);
1401 } else if (mode.Contains(BAILOUT_ON_OVERFLOW)) { 1399 } else if (constraints & SmiOperationConstraint::kBailoutOnOverflow) {
1402 if (mode.Contains(PRESERVE_SOURCE_REGISTER)) { 1400 if (constraints & SmiOperationConstraint::kPreserveSourceRegister) {
1403 Label done; 1401 Label done;
1404 j(no_overflow, &done, Label::kNear); 1402 j(no_overflow, &done, Label::kNear);
1405 subp(dst, kScratchRegister); 1403 subp(dst, kScratchRegister);
1406 jmp(bailout_label, near_jump); 1404 jmp(bailout_label, near_jump);
1407 bind(&done); 1405 bind(&done);
1408 } else { 1406 } else {
1409 // Bailout if overflow without reserving src. 1407 // Bailout if overflow without reserving src.
1410 j(overflow, bailout_label, near_jump); 1408 j(overflow, bailout_label, near_jump);
1411 } 1409 }
1412 } else { 1410 } else {
1413 CHECK(mode.IsEmpty()); 1411 UNREACHABLE();
1414 } 1412 }
1415 } else { 1413 } else {
1416 DCHECK(mode.Contains(PRESERVE_SOURCE_REGISTER)); 1414 DCHECK(constraints & SmiOperationConstraint::kPreserveSourceRegister);
1417 DCHECK(mode.Contains(BAILOUT_ON_OVERFLOW)); 1415 DCHECK(constraints & SmiOperationConstraint::kBailoutOnOverflow);
1418 LoadSmiConstant(dst, constant); 1416 LoadSmiConstant(dst, constant);
1419 addp(dst, src); 1417 addp(dst, src);
1420 j(overflow, bailout_label, near_jump); 1418 j(overflow, bailout_label, near_jump);
1421 } 1419 }
1422 } 1420 }
1423 1421
1424 1422
1425 void MacroAssembler::SmiSubConstant(Register dst, Register src, Smi* constant) { 1423 void MacroAssembler::SmiSubConstant(Register dst, Register src, Smi* constant) {
1426 if (constant->value() == 0) { 1424 if (constant->value() == 0) {
1427 if (!dst.is(src)) { 1425 if (!dst.is(src)) {
(...skipping 11 matching lines...) Expand all
1439 addp(dst, src); 1437 addp(dst, src);
1440 } else { 1438 } else {
1441 // Subtract by adding the negation. 1439 // Subtract by adding the negation.
1442 LoadSmiConstant(dst, Smi::FromInt(-constant->value())); 1440 LoadSmiConstant(dst, Smi::FromInt(-constant->value()));
1443 addp(dst, src); 1441 addp(dst, src);
1444 } 1442 }
1445 } 1443 }
1446 } 1444 }
1447 1445
1448 1446
1449 void MacroAssembler::SmiSubConstant(Register dst, 1447 void MacroAssembler::SmiSubConstant(Register dst, Register src, Smi* constant,
1450 Register src, 1448 SmiOperationConstraints constraints,
1451 Smi* constant,
1452 SmiOperationExecutionMode mode,
1453 Label* bailout_label, 1449 Label* bailout_label,
1454 Label::Distance near_jump) { 1450 Label::Distance near_jump) {
1455 if (constant->value() == 0) { 1451 if (constant->value() == 0) {
1456 if (!dst.is(src)) { 1452 if (!dst.is(src)) {
1457 movp(dst, src); 1453 movp(dst, src);
1458 } 1454 }
1459 } else if (dst.is(src)) { 1455 } else if (dst.is(src)) {
1460 DCHECK(!dst.is(kScratchRegister)); 1456 DCHECK(!dst.is(kScratchRegister));
1461 LoadSmiConstant(kScratchRegister, constant); 1457 LoadSmiConstant(kScratchRegister, constant);
1462 subp(dst, kScratchRegister); 1458 subp(dst, kScratchRegister);
1463 if (mode.Contains(BAILOUT_ON_NO_OVERFLOW)) { 1459 if (constraints & SmiOperationConstraint::kBailoutOnNoOverflow) {
1464 j(no_overflow, bailout_label, near_jump); 1460 j(no_overflow, bailout_label, near_jump);
1465 DCHECK(mode.Contains(PRESERVE_SOURCE_REGISTER)); 1461 DCHECK(constraints & SmiOperationConstraint::kPreserveSourceRegister);
1466 addp(dst, kScratchRegister); 1462 addp(dst, kScratchRegister);
1467 } else if (mode.Contains(BAILOUT_ON_OVERFLOW)) { 1463 } else if (constraints & SmiOperationConstraint::kBailoutOnOverflow) {
1468 if (mode.Contains(PRESERVE_SOURCE_REGISTER)) { 1464 if (constraints & SmiOperationConstraint::kPreserveSourceRegister) {
1469 Label done; 1465 Label done;
1470 j(no_overflow, &done, Label::kNear); 1466 j(no_overflow, &done, Label::kNear);
1471 addp(dst, kScratchRegister); 1467 addp(dst, kScratchRegister);
1472 jmp(bailout_label, near_jump); 1468 jmp(bailout_label, near_jump);
1473 bind(&done); 1469 bind(&done);
1474 } else { 1470 } else {
1475 // Bailout if overflow without reserving src. 1471 // Bailout if overflow without reserving src.
1476 j(overflow, bailout_label, near_jump); 1472 j(overflow, bailout_label, near_jump);
1477 } 1473 }
1478 } else { 1474 } else {
1479 CHECK(mode.IsEmpty()); 1475 UNREACHABLE();
1480 } 1476 }
1481 } else { 1477 } else {
1482 DCHECK(mode.Contains(PRESERVE_SOURCE_REGISTER)); 1478 DCHECK(constraints & SmiOperationConstraint::kPreserveSourceRegister);
1483 DCHECK(mode.Contains(BAILOUT_ON_OVERFLOW)); 1479 DCHECK(constraints & SmiOperationConstraint::kBailoutOnOverflow);
1484 if (constant->value() == Smi::kMinValue) { 1480 if (constant->value() == Smi::kMinValue) {
1485 DCHECK(!dst.is(kScratchRegister)); 1481 DCHECK(!dst.is(kScratchRegister));
1486 movp(dst, src); 1482 movp(dst, src);
1487 LoadSmiConstant(kScratchRegister, constant); 1483 LoadSmiConstant(kScratchRegister, constant);
1488 subp(dst, kScratchRegister); 1484 subp(dst, kScratchRegister);
1489 j(overflow, bailout_label, near_jump); 1485 j(overflow, bailout_label, near_jump);
1490 } else { 1486 } else {
1491 // Subtract by adding the negation. 1487 // Subtract by adding the negation.
1492 LoadSmiConstant(dst, Smi::FromInt(-(constant->value()))); 1488 LoadSmiConstant(dst, Smi::FromInt(-(constant->value())));
1493 addp(dst, src); 1489 addp(dst, src);
(...skipping 3600 matching lines...) Expand 10 before | Expand all | Expand 10 after
5094 movl(rax, dividend); 5090 movl(rax, dividend);
5095 shrl(rax, Immediate(31)); 5091 shrl(rax, Immediate(31));
5096 addl(rdx, rax); 5092 addl(rdx, rax);
5097 } 5093 }
5098 5094
5099 5095
5100 } // namespace internal 5096 } // namespace internal
5101 } // namespace v8 5097 } // namespace v8
5102 5098
5103 #endif // V8_TARGET_ARCH_X64 5099 #endif // V8_TARGET_ARCH_X64
OLDNEW
« no previous file with comments | « src/x64/macro-assembler-x64.h ('k') | test/cctest/test-macro-assembler-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698