OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 1234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1245 | 1245 |
1246 void HBinaryOperation::PrintDataTo(StringStream* stream) { | 1246 void HBinaryOperation::PrintDataTo(StringStream* stream) { |
1247 left()->PrintNameTo(stream); | 1247 left()->PrintNameTo(stream); |
1248 stream->Add(" "); | 1248 stream->Add(" "); |
1249 right()->PrintNameTo(stream); | 1249 right()->PrintNameTo(stream); |
1250 if (CheckFlag(kCanOverflow)) stream->Add(" !"); | 1250 if (CheckFlag(kCanOverflow)) stream->Add(" !"); |
1251 if (CheckFlag(kBailoutOnMinusZero)) stream->Add(" -0?"); | 1251 if (CheckFlag(kBailoutOnMinusZero)) stream->Add(" -0?"); |
1252 } | 1252 } |
1253 | 1253 |
1254 | 1254 |
1255 Range* HBitAnd::InferRange() { | 1255 Range* HBitwise::InferRange() { |
| 1256 if (op() == Token::BIT_XOR) return HValue::InferRange(); |
1256 int32_t left_mask = (left()->range() != NULL) | 1257 int32_t left_mask = (left()->range() != NULL) |
1257 ? left()->range()->Mask() | 1258 ? left()->range()->Mask() |
1258 : 0xffffffff; | 1259 : 0xffffffff; |
1259 int32_t right_mask = (right()->range() != NULL) | 1260 int32_t right_mask = (right()->range() != NULL) |
1260 ? right()->range()->Mask() | 1261 ? right()->range()->Mask() |
1261 : 0xffffffff; | 1262 : 0xffffffff; |
1262 int32_t result_mask = left_mask & right_mask; | 1263 int32_t result_mask = (op() == Token::BIT_AND) |
1263 return (result_mask >= 0) | 1264 ? left_mask & right_mask |
1264 ? new Range(0, result_mask) | 1265 : left_mask | right_mask; |
1265 : HValue::InferRange(); | |
1266 } | |
1267 | |
1268 | |
1269 Range* HBitOr::InferRange() { | |
1270 int32_t left_mask = (left()->range() != NULL) | |
1271 ? left()->range()->Mask() | |
1272 : 0xffffffff; | |
1273 int32_t right_mask = (right()->range() != NULL) | |
1274 ? right()->range()->Mask() | |
1275 : 0xffffffff; | |
1276 int32_t result_mask = left_mask | right_mask; | |
1277 return (result_mask >= 0) | 1266 return (result_mask >= 0) |
1278 ? new Range(0, result_mask) | 1267 ? new Range(0, result_mask) |
1279 : HValue::InferRange(); | 1268 : HValue::InferRange(); |
1280 } | 1269 } |
1281 | 1270 |
1282 | 1271 |
1283 Range* HSar::InferRange() { | 1272 Range* HSar::InferRange() { |
1284 if (right()->IsConstant()) { | 1273 if (right()->IsConstant()) { |
1285 HConstant* c = HConstant::cast(right()); | 1274 HConstant* c = HConstant::cast(right()); |
1286 if (c->HasInteger32Value()) { | 1275 if (c->HasInteger32Value()) { |
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1778 HType HArithmeticBinaryOperation::CalculateInferredType() { | 1767 HType HArithmeticBinaryOperation::CalculateInferredType() { |
1779 return HType::TaggedNumber(); | 1768 return HType::TaggedNumber(); |
1780 } | 1769 } |
1781 | 1770 |
1782 | 1771 |
1783 HType HAdd::CalculateInferredType() { | 1772 HType HAdd::CalculateInferredType() { |
1784 return HType::Tagged(); | 1773 return HType::Tagged(); |
1785 } | 1774 } |
1786 | 1775 |
1787 | 1776 |
1788 HType HBitAnd::CalculateInferredType() { | |
1789 return HType::TaggedNumber(); | |
1790 } | |
1791 | |
1792 | |
1793 HType HBitXor::CalculateInferredType() { | |
1794 return HType::TaggedNumber(); | |
1795 } | |
1796 | |
1797 | |
1798 HType HBitOr::CalculateInferredType() { | |
1799 return HType::TaggedNumber(); | |
1800 } | |
1801 | |
1802 | |
1803 HType HBitNot::CalculateInferredType() { | 1777 HType HBitNot::CalculateInferredType() { |
1804 return HType::TaggedNumber(); | 1778 return HType::TaggedNumber(); |
1805 } | 1779 } |
1806 | 1780 |
1807 | 1781 |
1808 HType HUnaryMathOperation::CalculateInferredType() { | 1782 HType HUnaryMathOperation::CalculateInferredType() { |
1809 return HType::TaggedNumber(); | 1783 return HType::TaggedNumber(); |
1810 } | 1784 } |
1811 | 1785 |
1812 | 1786 |
1813 HType HShl::CalculateInferredType() { | |
1814 return HType::TaggedNumber(); | |
1815 } | |
1816 | |
1817 | |
1818 HType HShr::CalculateInferredType() { | |
1819 return HType::TaggedNumber(); | |
1820 } | |
1821 | |
1822 | |
1823 HType HSar::CalculateInferredType() { | |
1824 return HType::TaggedNumber(); | |
1825 } | |
1826 | |
1827 | |
1828 HType HStringCharFromCode::CalculateInferredType() { | 1787 HType HStringCharFromCode::CalculateInferredType() { |
1829 return HType::String(); | 1788 return HType::String(); |
1830 } | 1789 } |
1831 | 1790 |
1832 | 1791 |
1833 HType HArrayLiteral::CalculateInferredType() { | 1792 HType HArrayLiteral::CalculateInferredType() { |
1834 return HType::JSArray(); | 1793 return HType::JSArray(); |
1835 } | 1794 } |
1836 | 1795 |
1837 | 1796 |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1984 | 1943 |
1985 | 1944 |
1986 void HCheckPrototypeMaps::Verify() { | 1945 void HCheckPrototypeMaps::Verify() { |
1987 HInstruction::Verify(); | 1946 HInstruction::Verify(); |
1988 ASSERT(HasNoUses()); | 1947 ASSERT(HasNoUses()); |
1989 } | 1948 } |
1990 | 1949 |
1991 #endif | 1950 #endif |
1992 | 1951 |
1993 } } // namespace v8::internal | 1952 } } // namespace v8::internal |
OLD | NEW |