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 #include "src/compiler.h" | 6 #include "src/compiler.h" |
7 | 7 |
8 namespace v8 { | 8 namespace v8 { |
9 namespace internal { | 9 namespace internal { |
10 namespace interpreter { | 10 namespace interpreter { |
(...skipping 1468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1479 } | 1479 } |
1480 } | 1480 } |
1481 | 1481 |
1482 | 1482 |
1483 // static | 1483 // static |
1484 Bytecode BytecodeArrayBuilder::BytecodeForStoreIC(LanguageMode language_mode) { | 1484 Bytecode BytecodeArrayBuilder::BytecodeForStoreIC(LanguageMode language_mode) { |
1485 switch (language_mode) { | 1485 switch (language_mode) { |
1486 case SLOPPY: | 1486 case SLOPPY: |
1487 return Bytecode::kStoreICSloppy; | 1487 return Bytecode::kStoreICSloppy; |
1488 case STRICT: | 1488 case STRICT: |
1489 case STRONG: | |
1490 return Bytecode::kStoreICStrict; | 1489 return Bytecode::kStoreICStrict; |
1491 default: | 1490 default: |
1492 UNREACHABLE(); | 1491 UNREACHABLE(); |
1493 } | 1492 } |
1494 return static_cast<Bytecode>(-1); | 1493 return static_cast<Bytecode>(-1); |
1495 } | 1494 } |
1496 | 1495 |
1497 | 1496 |
1498 // static | 1497 // static |
1499 Bytecode BytecodeArrayBuilder::BytecodeForKeyedStoreIC( | 1498 Bytecode BytecodeArrayBuilder::BytecodeForKeyedStoreIC( |
1500 LanguageMode language_mode) { | 1499 LanguageMode language_mode) { |
1501 switch (language_mode) { | 1500 switch (language_mode) { |
1502 case SLOPPY: | 1501 case SLOPPY: |
1503 return Bytecode::kKeyedStoreICSloppy; | 1502 return Bytecode::kKeyedStoreICSloppy; |
1504 case STRICT: | 1503 case STRICT: |
1505 case STRONG: | |
1506 return Bytecode::kKeyedStoreICStrict; | 1504 return Bytecode::kKeyedStoreICStrict; |
1507 default: | 1505 default: |
1508 UNREACHABLE(); | 1506 UNREACHABLE(); |
1509 } | 1507 } |
1510 return static_cast<Bytecode>(-1); | 1508 return static_cast<Bytecode>(-1); |
1511 } | 1509 } |
1512 | 1510 |
1513 | 1511 |
1514 // static | 1512 // static |
1515 Bytecode BytecodeArrayBuilder::BytecodeForLoadGlobal(TypeofMode typeof_mode) { | 1513 Bytecode BytecodeArrayBuilder::BytecodeForLoadGlobal(TypeofMode typeof_mode) { |
1516 return typeof_mode == INSIDE_TYPEOF ? Bytecode::kLdaGlobalInsideTypeof | 1514 return typeof_mode == INSIDE_TYPEOF ? Bytecode::kLdaGlobalInsideTypeof |
1517 : Bytecode::kLdaGlobal; | 1515 : Bytecode::kLdaGlobal; |
1518 } | 1516 } |
1519 | 1517 |
1520 | 1518 |
1521 // static | 1519 // static |
1522 Bytecode BytecodeArrayBuilder::BytecodeForStoreGlobal( | 1520 Bytecode BytecodeArrayBuilder::BytecodeForStoreGlobal( |
1523 LanguageMode language_mode) { | 1521 LanguageMode language_mode) { |
1524 switch (language_mode) { | 1522 switch (language_mode) { |
1525 case SLOPPY: | 1523 case SLOPPY: |
1526 return Bytecode::kStaGlobalSloppy; | 1524 return Bytecode::kStaGlobalSloppy; |
1527 case STRICT: | 1525 case STRICT: |
1528 return Bytecode::kStaGlobalStrict; | 1526 return Bytecode::kStaGlobalStrict; |
1529 case STRONG: | |
1530 UNIMPLEMENTED(); | |
1531 default: | 1527 default: |
1532 UNREACHABLE(); | 1528 UNREACHABLE(); |
1533 } | 1529 } |
1534 return static_cast<Bytecode>(-1); | 1530 return static_cast<Bytecode>(-1); |
1535 } | 1531 } |
1536 | 1532 |
1537 | 1533 |
1538 // static | 1534 // static |
1539 Bytecode BytecodeArrayBuilder::BytecodeForStoreLookupSlot( | 1535 Bytecode BytecodeArrayBuilder::BytecodeForStoreLookupSlot( |
1540 LanguageMode language_mode) { | 1536 LanguageMode language_mode) { |
1541 switch (language_mode) { | 1537 switch (language_mode) { |
1542 case SLOPPY: | 1538 case SLOPPY: |
1543 return Bytecode::kStaLookupSlotSloppy; | 1539 return Bytecode::kStaLookupSlotSloppy; |
1544 case STRICT: | 1540 case STRICT: |
1545 return Bytecode::kStaLookupSlotStrict; | 1541 return Bytecode::kStaLookupSlotStrict; |
1546 case STRONG: | |
1547 UNIMPLEMENTED(); | |
1548 default: | 1542 default: |
1549 UNREACHABLE(); | 1543 UNREACHABLE(); |
1550 } | 1544 } |
1551 return static_cast<Bytecode>(-1); | 1545 return static_cast<Bytecode>(-1); |
1552 } | 1546 } |
1553 | 1547 |
1554 // static | 1548 // static |
1555 Bytecode BytecodeArrayBuilder::BytecodeForCreateArguments( | 1549 Bytecode BytecodeArrayBuilder::BytecodeForCreateArguments( |
1556 CreateArgumentsType type) { | 1550 CreateArgumentsType type) { |
1557 switch (type) { | 1551 switch (type) { |
1558 case CreateArgumentsType::kMappedArguments: | 1552 case CreateArgumentsType::kMappedArguments: |
1559 return Bytecode::kCreateMappedArguments; | 1553 return Bytecode::kCreateMappedArguments; |
1560 case CreateArgumentsType::kUnmappedArguments: | 1554 case CreateArgumentsType::kUnmappedArguments: |
1561 return Bytecode::kCreateUnmappedArguments; | 1555 return Bytecode::kCreateUnmappedArguments; |
1562 case CreateArgumentsType::kRestParameter: | 1556 case CreateArgumentsType::kRestParameter: |
1563 return Bytecode::kCreateRestParameter; | 1557 return Bytecode::kCreateRestParameter; |
1564 } | 1558 } |
1565 UNREACHABLE(); | 1559 UNREACHABLE(); |
1566 return static_cast<Bytecode>(-1); | 1560 return static_cast<Bytecode>(-1); |
1567 } | 1561 } |
1568 | 1562 |
1569 | 1563 |
1570 // static | 1564 // static |
1571 Bytecode BytecodeArrayBuilder::BytecodeForDelete(LanguageMode language_mode) { | 1565 Bytecode BytecodeArrayBuilder::BytecodeForDelete(LanguageMode language_mode) { |
1572 switch (language_mode) { | 1566 switch (language_mode) { |
1573 case SLOPPY: | 1567 case SLOPPY: |
1574 return Bytecode::kDeletePropertySloppy; | 1568 return Bytecode::kDeletePropertySloppy; |
1575 case STRICT: | 1569 case STRICT: |
1576 return Bytecode::kDeletePropertyStrict; | 1570 return Bytecode::kDeletePropertyStrict; |
1577 case STRONG: | |
1578 UNIMPLEMENTED(); | |
1579 default: | 1571 default: |
1580 UNREACHABLE(); | 1572 UNREACHABLE(); |
1581 } | 1573 } |
1582 return static_cast<Bytecode>(-1); | 1574 return static_cast<Bytecode>(-1); |
1583 } | 1575 } |
1584 | 1576 |
1585 // static | 1577 // static |
1586 Bytecode BytecodeArrayBuilder::BytecodeForCall(TailCallMode tail_call_mode) { | 1578 Bytecode BytecodeArrayBuilder::BytecodeForCall(TailCallMode tail_call_mode) { |
1587 switch (tail_call_mode) { | 1579 switch (tail_call_mode) { |
1588 case TailCallMode::kDisallow: | 1580 case TailCallMode::kDisallow: |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1642 } | 1634 } |
1643 | 1635 |
1644 // static | 1636 // static |
1645 bool BytecodeArrayBuilder::FitsInReg16OperandUntranslated(Register value) { | 1637 bool BytecodeArrayBuilder::FitsInReg16OperandUntranslated(Register value) { |
1646 return value.is_short_operand(); | 1638 return value.is_short_operand(); |
1647 } | 1639 } |
1648 | 1640 |
1649 } // namespace interpreter | 1641 } // namespace interpreter |
1650 } // namespace internal | 1642 } // namespace internal |
1651 } // namespace v8 | 1643 } // namespace v8 |
OLD | NEW |