| OLD | NEW |
| 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/code-stubs.h" | 5 #include "src/code-stubs.h" |
| 6 | 6 |
| 7 #include <sstream> | 7 #include <sstream> |
| 8 | 8 |
| 9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
| 10 #include "src/code-factory.h" | 10 #include "src/code-factory.h" |
| (...skipping 891 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 902 var_result.Bind(result); | 902 var_result.Bind(result); |
| 903 assembler->Goto(&end); | 903 assembler->Goto(&end); |
| 904 } | 904 } |
| 905 assembler->Bind(&end); | 905 assembler->Bind(&end); |
| 906 return var_result.value(); | 906 return var_result.value(); |
| 907 } | 907 } |
| 908 | 908 |
| 909 // static | 909 // static |
| 910 compiler::Node* AddWithFeedbackStub::Generate( | 910 compiler::Node* AddWithFeedbackStub::Generate( |
| 911 CodeStubAssembler* assembler, compiler::Node* lhs, compiler::Node* rhs, | 911 CodeStubAssembler* assembler, compiler::Node* lhs, compiler::Node* rhs, |
| 912 compiler::Node* context, compiler::Node* type_feedback_vector, | 912 compiler::Node* slot_id, compiler::Node* type_feedback_vector, |
| 913 compiler::Node* slot_id) { | 913 compiler::Node* context) { |
| 914 typedef CodeStubAssembler::Label Label; | 914 typedef CodeStubAssembler::Label Label; |
| 915 typedef compiler::Node Node; | 915 typedef compiler::Node Node; |
| 916 typedef CodeStubAssembler::Variable Variable; | 916 typedef CodeStubAssembler::Variable Variable; |
| 917 | 917 |
| 918 // Shared entry for floating point addition. | 918 // Shared entry for floating point addition. |
| 919 Label do_fadd(assembler), end(assembler), | 919 Label do_fadd(assembler), end(assembler), |
| 920 call_add_stub(assembler, Label::kDeferred); | 920 call_add_stub(assembler, Label::kDeferred); |
| 921 Variable var_fadd_lhs(assembler, MachineRepresentation::kFloat64), | 921 Variable var_fadd_lhs(assembler, MachineRepresentation::kFloat64), |
| 922 var_fadd_rhs(assembler, MachineRepresentation::kFloat64), | 922 var_fadd_rhs(assembler, MachineRepresentation::kFloat64), |
| 923 var_type_feedback(assembler, MachineRepresentation::kWord32), | 923 var_type_feedback(assembler, MachineRepresentation::kWord32), |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1210 var_result.Bind(assembler->ChangeFloat64ToTagged(value)); | 1210 var_result.Bind(assembler->ChangeFloat64ToTagged(value)); |
| 1211 assembler->Goto(&end); | 1211 assembler->Goto(&end); |
| 1212 } | 1212 } |
| 1213 assembler->Bind(&end); | 1213 assembler->Bind(&end); |
| 1214 return var_result.value(); | 1214 return var_result.value(); |
| 1215 } | 1215 } |
| 1216 | 1216 |
| 1217 // static | 1217 // static |
| 1218 compiler::Node* SubtractWithFeedbackStub::Generate( | 1218 compiler::Node* SubtractWithFeedbackStub::Generate( |
| 1219 CodeStubAssembler* assembler, compiler::Node* lhs, compiler::Node* rhs, | 1219 CodeStubAssembler* assembler, compiler::Node* lhs, compiler::Node* rhs, |
| 1220 compiler::Node* context, compiler::Node* type_feedback_vector, | 1220 compiler::Node* slot_id, compiler::Node* type_feedback_vector, |
| 1221 compiler::Node* slot_id) { | 1221 compiler::Node* context) { |
| 1222 typedef CodeStubAssembler::Label Label; | 1222 typedef CodeStubAssembler::Label Label; |
| 1223 typedef compiler::Node Node; | 1223 typedef compiler::Node Node; |
| 1224 typedef CodeStubAssembler::Variable Variable; | 1224 typedef CodeStubAssembler::Variable Variable; |
| 1225 | 1225 |
| 1226 // Shared entry for floating point subtraction. | 1226 // Shared entry for floating point subtraction. |
| 1227 Label do_fsub(assembler), end(assembler), | 1227 Label do_fsub(assembler), end(assembler), |
| 1228 call_subtract_stub(assembler, Label::kDeferred); | 1228 call_subtract_stub(assembler, Label::kDeferred); |
| 1229 Variable var_fsub_lhs(assembler, MachineRepresentation::kFloat64), | 1229 Variable var_fsub_lhs(assembler, MachineRepresentation::kFloat64), |
| 1230 var_fsub_rhs(assembler, MachineRepresentation::kFloat64), | 1230 var_fsub_rhs(assembler, MachineRepresentation::kFloat64), |
| 1231 var_type_feedback(assembler, MachineRepresentation::kWord32), | 1231 var_type_feedback(assembler, MachineRepresentation::kWord32), |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1499 assembler->Goto(&return_result); | 1499 assembler->Goto(&return_result); |
| 1500 } | 1500 } |
| 1501 | 1501 |
| 1502 assembler->Bind(&return_result); | 1502 assembler->Bind(&return_result); |
| 1503 return var_result.value(); | 1503 return var_result.value(); |
| 1504 } | 1504 } |
| 1505 | 1505 |
| 1506 // static | 1506 // static |
| 1507 compiler::Node* MultiplyWithFeedbackStub::Generate( | 1507 compiler::Node* MultiplyWithFeedbackStub::Generate( |
| 1508 CodeStubAssembler* assembler, compiler::Node* lhs, compiler::Node* rhs, | 1508 CodeStubAssembler* assembler, compiler::Node* lhs, compiler::Node* rhs, |
| 1509 compiler::Node* context, compiler::Node* type_feedback_vector, | 1509 compiler::Node* slot_id, compiler::Node* type_feedback_vector, |
| 1510 compiler::Node* slot_id) { | 1510 compiler::Node* context) { |
| 1511 using compiler::Node; | 1511 using compiler::Node; |
| 1512 typedef CodeStubAssembler::Label Label; | 1512 typedef CodeStubAssembler::Label Label; |
| 1513 typedef CodeStubAssembler::Variable Variable; | 1513 typedef CodeStubAssembler::Variable Variable; |
| 1514 | 1514 |
| 1515 // Shared entry point for floating point multiplication. | 1515 // Shared entry point for floating point multiplication. |
| 1516 Label do_fmul(assembler), end(assembler), | 1516 Label do_fmul(assembler), end(assembler), |
| 1517 call_multiply_stub(assembler, Label::kDeferred); | 1517 call_multiply_stub(assembler, Label::kDeferred); |
| 1518 Variable var_lhs_float64(assembler, MachineRepresentation::kFloat64), | 1518 Variable var_lhs_float64(assembler, MachineRepresentation::kFloat64), |
| 1519 var_rhs_float64(assembler, MachineRepresentation::kFloat64), | 1519 var_rhs_float64(assembler, MachineRepresentation::kFloat64), |
| 1520 var_result(assembler, MachineRepresentation::kTagged), | 1520 var_result(assembler, MachineRepresentation::kTagged), |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1834 var_result.Bind(assembler->ChangeFloat64ToTagged(value)); | 1834 var_result.Bind(assembler->ChangeFloat64ToTagged(value)); |
| 1835 assembler->Goto(&end); | 1835 assembler->Goto(&end); |
| 1836 } | 1836 } |
| 1837 assembler->Bind(&end); | 1837 assembler->Bind(&end); |
| 1838 return var_result.value(); | 1838 return var_result.value(); |
| 1839 } | 1839 } |
| 1840 | 1840 |
| 1841 // static | 1841 // static |
| 1842 compiler::Node* DivideWithFeedbackStub::Generate( | 1842 compiler::Node* DivideWithFeedbackStub::Generate( |
| 1843 CodeStubAssembler* assembler, compiler::Node* dividend, | 1843 CodeStubAssembler* assembler, compiler::Node* dividend, |
| 1844 compiler::Node* divisor, compiler::Node* context, | 1844 compiler::Node* divisor, compiler::Node* slot_id, |
| 1845 compiler::Node* type_feedback_vector, compiler::Node* slot_id) { | 1845 compiler::Node* type_feedback_vector, compiler::Node* context) { |
| 1846 using compiler::Node; | 1846 using compiler::Node; |
| 1847 typedef CodeStubAssembler::Label Label; | 1847 typedef CodeStubAssembler::Label Label; |
| 1848 typedef CodeStubAssembler::Variable Variable; | 1848 typedef CodeStubAssembler::Variable Variable; |
| 1849 | 1849 |
| 1850 // Shared entry point for floating point division. | 1850 // Shared entry point for floating point division. |
| 1851 Label do_fdiv(assembler), end(assembler), call_divide_stub(assembler); | 1851 Label do_fdiv(assembler), end(assembler), call_divide_stub(assembler); |
| 1852 Variable var_dividend_float64(assembler, MachineRepresentation::kFloat64), | 1852 Variable var_dividend_float64(assembler, MachineRepresentation::kFloat64), |
| 1853 var_divisor_float64(assembler, MachineRepresentation::kFloat64), | 1853 var_divisor_float64(assembler, MachineRepresentation::kFloat64), |
| 1854 var_result(assembler, MachineRepresentation::kTagged), | 1854 var_result(assembler, MachineRepresentation::kTagged), |
| 1855 var_type_feedback(assembler, MachineRepresentation::kWord32); | 1855 var_type_feedback(assembler, MachineRepresentation::kWord32); |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2169 assembler->Goto(&return_result); | 2169 assembler->Goto(&return_result); |
| 2170 } | 2170 } |
| 2171 | 2171 |
| 2172 assembler->Bind(&return_result); | 2172 assembler->Bind(&return_result); |
| 2173 return var_result.value(); | 2173 return var_result.value(); |
| 2174 } | 2174 } |
| 2175 | 2175 |
| 2176 // static | 2176 // static |
| 2177 compiler::Node* ModulusWithFeedbackStub::Generate( | 2177 compiler::Node* ModulusWithFeedbackStub::Generate( |
| 2178 CodeStubAssembler* assembler, compiler::Node* dividend, | 2178 CodeStubAssembler* assembler, compiler::Node* dividend, |
| 2179 compiler::Node* divisor, compiler::Node* context, | 2179 compiler::Node* divisor, compiler::Node* slot_id, |
| 2180 compiler::Node* type_feedback_vector, compiler::Node* slot_id) { | 2180 compiler::Node* type_feedback_vector, compiler::Node* context) { |
| 2181 using compiler::Node; | 2181 using compiler::Node; |
| 2182 typedef CodeStubAssembler::Label Label; | 2182 typedef CodeStubAssembler::Label Label; |
| 2183 typedef CodeStubAssembler::Variable Variable; | 2183 typedef CodeStubAssembler::Variable Variable; |
| 2184 | 2184 |
| 2185 // Shared entry point for floating point division. | 2185 // Shared entry point for floating point division. |
| 2186 Label do_fmod(assembler), end(assembler), call_modulus_stub(assembler); | 2186 Label do_fmod(assembler), end(assembler), call_modulus_stub(assembler); |
| 2187 Variable var_dividend_float64(assembler, MachineRepresentation::kFloat64), | 2187 Variable var_dividend_float64(assembler, MachineRepresentation::kFloat64), |
| 2188 var_divisor_float64(assembler, MachineRepresentation::kFloat64), | 2188 var_divisor_float64(assembler, MachineRepresentation::kFloat64), |
| 2189 var_result(assembler, MachineRepresentation::kTagged), | 2189 var_result(assembler, MachineRepresentation::kTagged), |
| 2190 var_type_feedback(assembler, MachineRepresentation::kWord32); | 2190 var_type_feedback(assembler, MachineRepresentation::kWord32); |
| (...skipping 3658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5849 if (type->Is(Type::UntaggedPointer())) { | 5849 if (type->Is(Type::UntaggedPointer())) { |
| 5850 return Representation::External(); | 5850 return Representation::External(); |
| 5851 } | 5851 } |
| 5852 | 5852 |
| 5853 DCHECK(!type->Is(Type::Untagged())); | 5853 DCHECK(!type->Is(Type::Untagged())); |
| 5854 return Representation::Tagged(); | 5854 return Representation::Tagged(); |
| 5855 } | 5855 } |
| 5856 | 5856 |
| 5857 } // namespace internal | 5857 } // namespace internal |
| 5858 } // namespace v8 | 5858 } // namespace v8 |
| OLD | NEW |