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 1762 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1773 // If length is not zero, "tos_" contains a non-zero value ==> true. | 1773 // If length is not zero, "tos_" contains a non-zero value ==> true. |
1774 __ Ret(); | 1774 __ Ret(); |
1775 | 1775 |
1776 // Return 0 in "tos_" for false . | 1776 // Return 0 in "tos_" for false . |
1777 __ bind(&false_result); | 1777 __ bind(&false_result); |
1778 __ mov(tos_, Operand(0, RelocInfo::NONE)); | 1778 __ mov(tos_, Operand(0, RelocInfo::NONE)); |
1779 __ Ret(); | 1779 __ Ret(); |
1780 } | 1780 } |
1781 | 1781 |
1782 | 1782 |
| 1783 const char* GenericBinaryOpStub::GetName() { |
| 1784 if (name_ != NULL) return name_; |
| 1785 const int len = 100; |
| 1786 name_ = Isolate::Current()->bootstrapper()->AllocateAutoDeletedArray(len); |
| 1787 if (name_ == NULL) return "OOM"; |
| 1788 const char* op_name = Token::Name(op_); |
| 1789 const char* overwrite_name; |
| 1790 switch (mode_) { |
| 1791 case NO_OVERWRITE: overwrite_name = "Alloc"; break; |
| 1792 case OVERWRITE_RIGHT: overwrite_name = "OverwriteRight"; break; |
| 1793 case OVERWRITE_LEFT: overwrite_name = "OverwriteLeft"; break; |
| 1794 default: overwrite_name = "UnknownOverwrite"; break; |
| 1795 } |
| 1796 |
| 1797 OS::SNPrintF(Vector<char>(name_, len), |
| 1798 "GenericBinaryOpStub_%s_%s%s_%s", |
| 1799 op_name, |
| 1800 overwrite_name, |
| 1801 specialized_on_rhs_ ? "_ConstantRhs" : "", |
| 1802 BinaryOpIC::GetName(runtime_operands_type_)); |
| 1803 return name_; |
| 1804 } |
| 1805 |
| 1806 |
1783 // We fall into this code if the operands were Smis, but the result was | 1807 // We fall into this code if the operands were Smis, but the result was |
1784 // not (eg. overflow). We branch into this code (to the not_smi label) if | 1808 // not (eg. overflow). We branch into this code (to the not_smi label) if |
1785 // the operands were not both Smi. The operands are in r0 and r1. In order | 1809 // the operands were not both Smi. The operands are in r0 and r1. In order |
1786 // to call the C-implemented binary fp operation routines we need to end up | 1810 // to call the C-implemented binary fp operation routines we need to end up |
1787 // with the double precision floating point operands in r0 and r1 (for the | 1811 // with the double precision floating point operands in r0 and r1 (for the |
1788 // value in r1) and r2 and r3 (for the value in r0). | 1812 // value in r1) and r2 and r3 (for the value in r0). |
1789 void GenericBinaryOpStub::HandleBinaryOpSlowCases( | 1813 void GenericBinaryOpStub::HandleBinaryOpSlowCases( |
1790 MacroAssembler* masm, | 1814 MacroAssembler* masm, |
1791 Label* not_smi, | 1815 Label* not_smi, |
1792 Register lhs, | 1816 Register lhs, |
(...skipping 5115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6908 __ str(pc, MemOperand(sp, 0)); | 6932 __ str(pc, MemOperand(sp, 0)); |
6909 __ Jump(target); // Call the C++ function. | 6933 __ Jump(target); // Call the C++ function. |
6910 } | 6934 } |
6911 | 6935 |
6912 | 6936 |
6913 #undef __ | 6937 #undef __ |
6914 | 6938 |
6915 } } // namespace v8::internal | 6939 } } // namespace v8::internal |
6916 | 6940 |
6917 #endif // V8_TARGET_ARCH_ARM | 6941 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |