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 "src/bailout-reason.h" | 7 #include "src/bailout-reason.h" |
8 #include "src/crankshaft/hydrogen.h" | 8 #include "src/crankshaft/hydrogen.h" |
9 #include "src/crankshaft/lithium.h" | 9 #include "src/crankshaft/lithium.h" |
10 #include "src/field-index.h" | 10 #include "src/field-index.h" |
(...skipping 1515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1526 // The input is already a primitive. | 1526 // The input is already a primitive. |
1527 Push(input); | 1527 Push(input); |
1528 } | 1528 } |
1529 if_inputisprimitive.Else(); | 1529 if_inputisprimitive.Else(); |
1530 { | 1530 { |
1531 // Convert the input to a primitive. | 1531 // Convert the input to a primitive. |
1532 Push(BuildToPrimitive(input, input_map)); | 1532 Push(BuildToPrimitive(input, input_map)); |
1533 } | 1533 } |
1534 if_inputisprimitive.End(); | 1534 if_inputisprimitive.End(); |
1535 // Convert the primitive to a string value. | 1535 // Convert the primitive to a string value. |
1536 ToStringDescriptor descriptor(isolate()); | |
1537 ToStringStub stub(isolate()); | 1536 ToStringStub stub(isolate()); |
1538 HValue* values[] = {context(), Pop()}; | 1537 HValue* values[] = {context(), Pop()}; |
1539 Push(AddUncasted<HCallWithDescriptor>( | 1538 Push(AddUncasted<HCallWithDescriptor>( |
1540 Add<HConstant>(stub.GetCode()), 0, descriptor, | 1539 Add<HConstant>(stub.GetCode()), 0, stub.GetCallInterfaceDescriptor(), |
1541 Vector<HValue*>(values, arraysize(values)))); | 1540 Vector<HValue*>(values, arraysize(values)))); |
1542 } | 1541 } |
1543 if_inputisstring.End(); | 1542 if_inputisstring.End(); |
1544 } | 1543 } |
1545 if_inputissmi.End(); | 1544 if_inputissmi.End(); |
1546 return Pop(); | 1545 return Pop(); |
1547 } | 1546 } |
1548 | 1547 |
1549 | 1548 |
1550 HValue* CodeStubGraphBuilderBase::BuildToPrimitive(HValue* input, | 1549 HValue* CodeStubGraphBuilderBase::BuildToPrimitive(HValue* input, |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1788 } | 1787 } |
1789 | 1788 |
1790 | 1789 |
1791 Handle<Code> ElementsTransitionAndStoreStub::GenerateCode() { | 1790 Handle<Code> ElementsTransitionAndStoreStub::GenerateCode() { |
1792 return DoGenerateCode(this); | 1791 return DoGenerateCode(this); |
1793 } | 1792 } |
1794 | 1793 |
1795 | 1794 |
1796 template <> | 1795 template <> |
1797 HValue* CodeStubGraphBuilder<ToObjectStub>::BuildCodeStub() { | 1796 HValue* CodeStubGraphBuilder<ToObjectStub>::BuildCodeStub() { |
1798 HValue* receiver = GetParameter(ToObjectDescriptor::kReceiverIndex); | 1797 HValue* receiver = GetParameter(TypeConversionDescriptor::kArgumentIndex); |
1799 return BuildToObject(receiver); | 1798 return BuildToObject(receiver); |
1800 } | 1799 } |
1801 | 1800 |
1802 | 1801 |
1803 Handle<Code> ToObjectStub::GenerateCode() { return DoGenerateCode(this); } | 1802 Handle<Code> ToObjectStub::GenerateCode() { return DoGenerateCode(this); } |
1804 | 1803 |
1805 | 1804 |
1806 void CodeStubGraphBuilderBase::BuildCheckAndInstallOptimizedCode( | 1805 void CodeStubGraphBuilderBase::BuildCheckAndInstallOptimizedCode( |
1807 HValue* js_function, | 1806 HValue* js_function, |
1808 HValue* native_context, | 1807 HValue* native_context, |
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2364 return Pop(); | 2363 return Pop(); |
2365 } | 2364 } |
2366 | 2365 |
2367 | 2366 |
2368 Handle<Code> KeyedLoadGenericStub::GenerateCode() { | 2367 Handle<Code> KeyedLoadGenericStub::GenerateCode() { |
2369 return DoGenerateCode(this); | 2368 return DoGenerateCode(this); |
2370 } | 2369 } |
2371 | 2370 |
2372 } // namespace internal | 2371 } // namespace internal |
2373 } // namespace v8 | 2372 } // namespace v8 |
OLD | NEW |