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 // TODO(rmcilroy): Remove this define after this flag is turned on globally | 5 // TODO(rmcilroy): Remove this define after this flag is turned on globally |
6 #define V8_IMMINENT_DEPRECATION_WARNINGS | 6 #define V8_IMMINENT_DEPRECATION_WARNINGS |
7 | 7 |
8 #include "src/v8.h" | 8 #include "src/v8.h" |
9 | 9 |
10 #include "src/execution.h" | 10 #include "src/execution.h" |
(...skipping 1509 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1520 | 1520 |
1521 TEST(InterpreterUnaryNot) { | 1521 TEST(InterpreterUnaryNot) { |
1522 HandleAndZoneScope handles; | 1522 HandleAndZoneScope handles; |
1523 for (size_t i = 1; i < 10; i++) { | 1523 for (size_t i = 1; i < 10; i++) { |
1524 bool expected_value = ((i & 1) == 1); | 1524 bool expected_value = ((i & 1) == 1); |
1525 BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone()); | 1525 BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone()); |
1526 Register r0(0); | 1526 Register r0(0); |
1527 builder.set_locals_count(0); | 1527 builder.set_locals_count(0); |
1528 builder.set_context_count(0); | 1528 builder.set_context_count(0); |
1529 builder.set_parameter_count(0); | 1529 builder.set_parameter_count(0); |
1530 builder.EnterBlock(); | |
1531 builder.LoadFalse(); | 1530 builder.LoadFalse(); |
1532 for (size_t j = 0; j < i; j++) { | 1531 for (size_t j = 0; j < i; j++) { |
1533 builder.LogicalNot(); | 1532 builder.LogicalNot(); |
1534 } | 1533 } |
1535 builder.LeaveBlock().Return(); | 1534 builder.Return(); |
1536 Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(); | 1535 Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(); |
1537 InterpreterTester tester(handles.main_isolate(), bytecode_array); | 1536 InterpreterTester tester(handles.main_isolate(), bytecode_array); |
1538 auto callable = tester.GetCallable<>(); | 1537 auto callable = tester.GetCallable<>(); |
1539 Handle<Object> return_value = callable().ToHandleChecked(); | 1538 Handle<Object> return_value = callable().ToHandleChecked(); |
1540 CHECK(return_value->IsBoolean()); | 1539 CHECK(return_value->IsBoolean()); |
1541 CHECK_EQ(return_value->BooleanValue(), expected_value); | 1540 CHECK_EQ(return_value->BooleanValue(), expected_value); |
1542 } | 1541 } |
1543 } | 1542 } |
1544 | 1543 |
1545 | 1544 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1584 std::make_pair( | 1583 std::make_pair( |
1585 Handle<Object>::cast(factory->NewStringFromStaticChars("")), false), | 1584 Handle<Object>::cast(factory->NewStringFromStaticChars("")), false), |
1586 }; | 1585 }; |
1587 | 1586 |
1588 for (size_t i = 0; i < arraysize(object_type_tuples); i++) { | 1587 for (size_t i = 0; i < arraysize(object_type_tuples); i++) { |
1589 BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone()); | 1588 BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone()); |
1590 Register r0(0); | 1589 Register r0(0); |
1591 builder.set_locals_count(0); | 1590 builder.set_locals_count(0); |
1592 builder.set_context_count(0); | 1591 builder.set_context_count(0); |
1593 builder.set_parameter_count(0); | 1592 builder.set_parameter_count(0); |
1594 builder.EnterBlock(); | |
1595 LoadAny(&builder, factory, object_type_tuples[i].first); | 1593 LoadAny(&builder, factory, object_type_tuples[i].first); |
1596 builder.CastAccumulatorToBoolean(); | 1594 builder.CastAccumulatorToBoolean(); |
1597 builder.LeaveBlock().Return(); | 1595 builder.Return(); |
1598 Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(); | 1596 Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(); |
1599 InterpreterTester tester(handles.main_isolate(), bytecode_array); | 1597 InterpreterTester tester(handles.main_isolate(), bytecode_array); |
1600 auto callable = tester.GetCallable<>(); | 1598 auto callable = tester.GetCallable<>(); |
1601 Handle<Object> return_value = callable().ToHandleChecked(); | 1599 Handle<Object> return_value = callable().ToHandleChecked(); |
1602 CHECK(return_value->IsBoolean()); | 1600 CHECK(return_value->IsBoolean()); |
1603 CHECK_EQ(return_value->BooleanValue(), object_type_tuples[i].second); | 1601 CHECK_EQ(return_value->BooleanValue(), object_type_tuples[i].second); |
1604 } | 1602 } |
1605 } | 1603 } |
1606 | 1604 |
1607 | 1605 |
(...skipping 14 matching lines...) Expand all Loading... |
1622 std::make_pair( | 1620 std::make_pair( |
1623 Handle<Object>::cast(factory->NewStringFromStaticChars("")), true), | 1621 Handle<Object>::cast(factory->NewStringFromStaticChars("")), true), |
1624 }; | 1622 }; |
1625 | 1623 |
1626 for (size_t i = 0; i < arraysize(object_type_tuples); i++) { | 1624 for (size_t i = 0; i < arraysize(object_type_tuples); i++) { |
1627 BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone()); | 1625 BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone()); |
1628 Register r0(0); | 1626 Register r0(0); |
1629 builder.set_locals_count(0); | 1627 builder.set_locals_count(0); |
1630 builder.set_context_count(0); | 1628 builder.set_context_count(0); |
1631 builder.set_parameter_count(0); | 1629 builder.set_parameter_count(0); |
1632 builder.EnterBlock(); | |
1633 LoadAny(&builder, factory, object_type_tuples[i].first); | 1630 LoadAny(&builder, factory, object_type_tuples[i].first); |
1634 builder.LogicalNot(); | 1631 builder.LogicalNot(); |
1635 builder.LeaveBlock().Return(); | 1632 builder.Return(); |
1636 Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(); | 1633 Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(); |
1637 InterpreterTester tester(handles.main_isolate(), bytecode_array); | 1634 InterpreterTester tester(handles.main_isolate(), bytecode_array); |
1638 auto callable = tester.GetCallable<>(); | 1635 auto callable = tester.GetCallable<>(); |
1639 Handle<Object> return_value = callable().ToHandleChecked(); | 1636 Handle<Object> return_value = callable().ToHandleChecked(); |
1640 CHECK(return_value->IsBoolean()); | 1637 CHECK(return_value->IsBoolean()); |
1641 CHECK_EQ(return_value->BooleanValue(), object_type_tuples[i].second); | 1638 CHECK_EQ(return_value->BooleanValue(), object_type_tuples[i].second); |
1642 } | 1639 } |
1643 } | 1640 } |
1644 | 1641 |
1645 | 1642 |
(...skipping 12 matching lines...) Expand all Loading... |
1658 Handle<Object>::cast(factory->NewStringFromStaticChars("hello")), | 1655 Handle<Object>::cast(factory->NewStringFromStaticChars("hello")), |
1659 "string"), | 1656 "string"), |
1660 }; | 1657 }; |
1661 | 1658 |
1662 for (size_t i = 0; i < arraysize(object_type_tuples); i++) { | 1659 for (size_t i = 0; i < arraysize(object_type_tuples); i++) { |
1663 BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone()); | 1660 BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone()); |
1664 Register r0(0); | 1661 Register r0(0); |
1665 builder.set_locals_count(0); | 1662 builder.set_locals_count(0); |
1666 builder.set_context_count(0); | 1663 builder.set_context_count(0); |
1667 builder.set_parameter_count(0); | 1664 builder.set_parameter_count(0); |
1668 builder.EnterBlock(); | |
1669 LoadAny(&builder, factory, object_type_tuples[i].first); | 1665 LoadAny(&builder, factory, object_type_tuples[i].first); |
1670 builder.TypeOf(); | 1666 builder.TypeOf(); |
1671 builder.LeaveBlock().Return(); | 1667 builder.Return(); |
1672 Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(); | 1668 Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(); |
1673 InterpreterTester tester(handles.main_isolate(), bytecode_array); | 1669 InterpreterTester tester(handles.main_isolate(), bytecode_array); |
1674 auto callable = tester.GetCallable<>(); | 1670 auto callable = tester.GetCallable<>(); |
1675 Handle<v8::internal::String> return_value = | 1671 Handle<v8::internal::String> return_value = |
1676 Handle<v8::internal::String>::cast(callable().ToHandleChecked()); | 1672 Handle<v8::internal::String>::cast(callable().ToHandleChecked()); |
1677 auto actual = return_value->ToCString(); | 1673 auto actual = return_value->ToCString(); |
1678 CHECK_EQ(strcmp(&actual[0], object_type_tuples[i].second), 0); | 1674 CHECK_EQ(strcmp(&actual[0], object_type_tuples[i].second), 0); |
1679 } | 1675 } |
1680 } | 1676 } |
1681 | 1677 |
(...skipping 1212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2894 auto callable = tester.GetCallable<>(); | 2890 auto callable = tester.GetCallable<>(); |
2895 | 2891 |
2896 Handle<i::Object> return_value = callable().ToHandleChecked(); | 2892 Handle<i::Object> return_value = callable().ToHandleChecked(); |
2897 CHECK(return_value->SameValue(*switch_ops[i].second)); | 2893 CHECK(return_value->SameValue(*switch_ops[i].second)); |
2898 } | 2894 } |
2899 } | 2895 } |
2900 | 2896 |
2901 } // namespace interpreter | 2897 } // namespace interpreter |
2902 } // namespace internal | 2898 } // namespace internal |
2903 } // namespace v8 | 2899 } // namespace v8 |
OLD | NEW |