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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/code-stubs.h" | 7 #include "src/code-stubs.h" |
8 #include "src/field-index.h" | 8 #include "src/field-index.h" |
9 #include "src/hydrogen.h" | 9 #include "src/hydrogen.h" |
10 #include "src/lithium.h" | 10 #include "src/lithium.h" |
(...skipping 1047 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1058 | 1058 |
1059 | 1059 |
1060 Handle<Code> StringAddStub::GenerateCode() { | 1060 Handle<Code> StringAddStub::GenerateCode() { |
1061 return DoGenerateCode(this); | 1061 return DoGenerateCode(this); |
1062 } | 1062 } |
1063 | 1063 |
1064 | 1064 |
1065 template <> | 1065 template <> |
1066 HValue* CodeStubGraphBuilder<ToBooleanStub>::BuildCodeInitializedStub() { | 1066 HValue* CodeStubGraphBuilder<ToBooleanStub>::BuildCodeInitializedStub() { |
1067 ToBooleanStub* stub = casted_stub(); | 1067 ToBooleanStub* stub = casted_stub(); |
| 1068 HValue* true_value = NULL; |
| 1069 HValue* false_value = NULL; |
| 1070 |
| 1071 switch (stub->GetMode()) { |
| 1072 case ToBooleanStub::RESULT_AS_SMI: |
| 1073 true_value = graph()->GetConstant1(); |
| 1074 false_value = graph()->GetConstant0(); |
| 1075 break; |
| 1076 case ToBooleanStub::RESULT_AS_ODDBALL: |
| 1077 true_value = graph()->GetConstantTrue(); |
| 1078 false_value = graph()->GetConstantFalse(); |
| 1079 break; |
| 1080 case ToBooleanStub::RESULT_AS_INVERSE_ODDBALL: |
| 1081 true_value = graph()->GetConstantFalse(); |
| 1082 false_value = graph()->GetConstantTrue(); |
| 1083 break; |
| 1084 } |
1068 | 1085 |
1069 IfBuilder if_true(this); | 1086 IfBuilder if_true(this); |
1070 if_true.If<HBranch>(GetParameter(0), stub->GetTypes()); | 1087 if_true.If<HBranch>(GetParameter(0), stub->GetTypes()); |
1071 if_true.Then(); | 1088 if_true.Then(); |
1072 if_true.Return(graph()->GetConstant1()); | 1089 if_true.Return(true_value); |
1073 if_true.Else(); | 1090 if_true.Else(); |
1074 if_true.End(); | 1091 if_true.End(); |
1075 return graph()->GetConstant0(); | 1092 return false_value; |
1076 } | 1093 } |
1077 | 1094 |
1078 | 1095 |
1079 Handle<Code> ToBooleanStub::GenerateCode() { | 1096 Handle<Code> ToBooleanStub::GenerateCode() { |
1080 return DoGenerateCode(this); | 1097 return DoGenerateCode(this); |
1081 } | 1098 } |
1082 | 1099 |
1083 | 1100 |
1084 template <> | 1101 template <> |
1085 HValue* CodeStubGraphBuilder<StoreGlobalStub>::BuildCodeInitializedStub() { | 1102 HValue* CodeStubGraphBuilder<StoreGlobalStub>::BuildCodeInitializedStub() { |
(...skipping 686 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1772 return Pop(); | 1789 return Pop(); |
1773 } | 1790 } |
1774 | 1791 |
1775 | 1792 |
1776 Handle<Code> KeyedLoadGenericStub::GenerateCode() { | 1793 Handle<Code> KeyedLoadGenericStub::GenerateCode() { |
1777 return DoGenerateCode(this); | 1794 return DoGenerateCode(this); |
1778 } | 1795 } |
1779 | 1796 |
1780 | 1797 |
1781 } } // namespace v8::internal | 1798 } } // namespace v8::internal |
OLD | NEW |