Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(212)

Side by Side Diff: test/unittests/compiler/js-builtin-reducer-unittest.cc

Issue 1425883004: [turbofan] Fix missing bailout point before calls. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Update unittests. Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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/compiler/js-builtin-reducer.h" 5 #include "src/compiler/js-builtin-reducer.h"
6 #include "src/compiler/js-graph.h" 6 #include "src/compiler/js-graph.h"
7 #include "src/compiler/node-properties.h" 7 #include "src/compiler/node-properties.h"
8 #include "src/compiler/simplified-operator.h" 8 #include "src/compiler/simplified-operator.h"
9 #include "src/compiler/typer.h" 9 #include "src/compiler/typer.h"
10 #include "src/isolate-inl.h" 10 #include "src/isolate-inl.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 78
79 // ----------------------------------------------------------------------------- 79 // -----------------------------------------------------------------------------
80 // Math.max 80 // Math.max
81 81
82 82
83 TEST_F(JSBuiltinReducerTest, MathMax0) { 83 TEST_F(JSBuiltinReducerTest, MathMax0) {
84 Node* function = MathFunction("max"); 84 Node* function = MathFunction("max");
85 85
86 Node* effect = graph()->start(); 86 Node* effect = graph()->start();
87 Node* control = graph()->start(); 87 Node* control = graph()->start();
88 Node* context = UndefinedConstant();
88 Node* frame_state = graph()->start(); 89 Node* frame_state = graph()->start();
89 TRACED_FOREACH(LanguageMode, language_mode, kLanguageModes) { 90 TRACED_FOREACH(LanguageMode, language_mode, kLanguageModes) {
90 Node* call = graph()->NewNode( 91 Node* call = graph()->NewNode(
91 javascript()->CallFunction(2, NO_CALL_FUNCTION_FLAGS, language_mode), 92 javascript()->CallFunction(2, NO_CALL_FUNCTION_FLAGS, language_mode),
92 function, UndefinedConstant(), frame_state, frame_state, effect, 93 function, UndefinedConstant(), context, frame_state, frame_state,
93 control); 94 effect, control);
94 Reduction r = Reduce(call); 95 Reduction r = Reduce(call);
95 96
96 ASSERT_TRUE(r.Changed()); 97 ASSERT_TRUE(r.Changed());
97 EXPECT_THAT(r.replacement(), IsNumberConstant(-V8_INFINITY)); 98 EXPECT_THAT(r.replacement(), IsNumberConstant(-V8_INFINITY));
98 } 99 }
99 } 100 }
100 101
101 102
102 TEST_F(JSBuiltinReducerTest, MathMax1) { 103 TEST_F(JSBuiltinReducerTest, MathMax1) {
103 Node* function = MathFunction("max"); 104 Node* function = MathFunction("max");
104 105
105 Node* effect = graph()->start(); 106 Node* effect = graph()->start();
106 Node* control = graph()->start(); 107 Node* control = graph()->start();
108 Node* context = UndefinedConstant();
107 Node* frame_state = graph()->start(); 109 Node* frame_state = graph()->start();
108 TRACED_FOREACH(LanguageMode, language_mode, kLanguageModes) { 110 TRACED_FOREACH(LanguageMode, language_mode, kLanguageModes) {
109 TRACED_FOREACH(Type*, t0, kNumberTypes) { 111 TRACED_FOREACH(Type*, t0, kNumberTypes) {
110 Node* p0 = Parameter(t0, 0); 112 Node* p0 = Parameter(t0, 0);
111 Node* call = graph()->NewNode( 113 Node* call = graph()->NewNode(
112 javascript()->CallFunction(3, NO_CALL_FUNCTION_FLAGS, language_mode), 114 javascript()->CallFunction(3, NO_CALL_FUNCTION_FLAGS, language_mode),
113 function, UndefinedConstant(), p0, frame_state, frame_state, effect, 115 function, UndefinedConstant(), p0, context, frame_state, frame_state,
114 control); 116 effect, control);
115 Reduction r = Reduce(call); 117 Reduction r = Reduce(call);
116 118
117 ASSERT_TRUE(r.Changed()); 119 ASSERT_TRUE(r.Changed());
118 EXPECT_THAT(r.replacement(), p0); 120 EXPECT_THAT(r.replacement(), p0);
119 } 121 }
120 } 122 }
121 } 123 }
122 124
123 125
124 TEST_F(JSBuiltinReducerTest, MathMax2) { 126 TEST_F(JSBuiltinReducerTest, MathMax2) {
125 Node* function = MathFunction("max"); 127 Node* function = MathFunction("max");
126 128
127 Node* effect = graph()->start(); 129 Node* effect = graph()->start();
128 Node* control = graph()->start(); 130 Node* control = graph()->start();
131 Node* context = UndefinedConstant();
129 Node* frame_state = graph()->start(); 132 Node* frame_state = graph()->start();
130 TRACED_FOREACH(LanguageMode, language_mode, kLanguageModes) { 133 TRACED_FOREACH(LanguageMode, language_mode, kLanguageModes) {
131 TRACED_FOREACH(Type*, t0, kIntegral32Types) { 134 TRACED_FOREACH(Type*, t0, kIntegral32Types) {
132 TRACED_FOREACH(Type*, t1, kIntegral32Types) { 135 TRACED_FOREACH(Type*, t1, kIntegral32Types) {
133 Node* p0 = Parameter(t0, 0); 136 Node* p0 = Parameter(t0, 0);
134 Node* p1 = Parameter(t1, 1); 137 Node* p1 = Parameter(t1, 1);
135 Node* call = 138 Node* call =
136 graph()->NewNode(javascript()->CallFunction( 139 graph()->NewNode(javascript()->CallFunction(
137 4, NO_CALL_FUNCTION_FLAGS, language_mode), 140 4, NO_CALL_FUNCTION_FLAGS, language_mode),
138 function, UndefinedConstant(), p0, p1, frame_state, 141 function, UndefinedConstant(), p0, p1, context,
139 frame_state, effect, control); 142 frame_state, frame_state, effect, control);
140 Reduction r = Reduce(call); 143 Reduction r = Reduce(call);
141 144
142 ASSERT_TRUE(r.Changed()); 145 ASSERT_TRUE(r.Changed());
143 EXPECT_THAT(r.replacement(), 146 EXPECT_THAT(r.replacement(),
144 IsSelect(kMachNone, IsNumberLessThan(p1, p0), p0, p1)); 147 IsSelect(kMachNone, IsNumberLessThan(p1, p0), p0, p1));
145 } 148 }
146 } 149 }
147 } 150 }
148 } 151 }
149 152
150 153
151 // ----------------------------------------------------------------------------- 154 // -----------------------------------------------------------------------------
152 // Math.imul 155 // Math.imul
153 156
154 157
155 TEST_F(JSBuiltinReducerTest, MathImul) { 158 TEST_F(JSBuiltinReducerTest, MathImul) {
156 Node* function = MathFunction("imul"); 159 Node* function = MathFunction("imul");
157 160
158 Node* effect = graph()->start(); 161 Node* effect = graph()->start();
159 Node* control = graph()->start(); 162 Node* control = graph()->start();
163 Node* context = UndefinedConstant();
160 Node* frame_state = graph()->start(); 164 Node* frame_state = graph()->start();
161 TRACED_FOREACH(LanguageMode, language_mode, kLanguageModes) { 165 TRACED_FOREACH(LanguageMode, language_mode, kLanguageModes) {
162 TRACED_FOREACH(Type*, t0, kIntegral32Types) { 166 TRACED_FOREACH(Type*, t0, kIntegral32Types) {
163 TRACED_FOREACH(Type*, t1, kIntegral32Types) { 167 TRACED_FOREACH(Type*, t1, kIntegral32Types) {
164 Node* p0 = Parameter(t0, 0); 168 Node* p0 = Parameter(t0, 0);
165 Node* p1 = Parameter(t1, 1); 169 Node* p1 = Parameter(t1, 1);
166 Node* call = 170 Node* call =
167 graph()->NewNode(javascript()->CallFunction( 171 graph()->NewNode(javascript()->CallFunction(
168 4, NO_CALL_FUNCTION_FLAGS, language_mode), 172 4, NO_CALL_FUNCTION_FLAGS, language_mode),
169 function, UndefinedConstant(), p0, p1, frame_state, 173 function, UndefinedConstant(), p0, p1, context,
170 frame_state, effect, control); 174 frame_state, frame_state, effect, control);
171 Reduction r = Reduce(call); 175 Reduction r = Reduce(call);
172 176
173 ASSERT_TRUE(r.Changed()); 177 ASSERT_TRUE(r.Changed());
174 EXPECT_THAT(r.replacement(), IsInt32Mul(p0, p1)); 178 EXPECT_THAT(r.replacement(), IsInt32Mul(p0, p1));
175 } 179 }
176 } 180 }
177 } 181 }
178 } 182 }
179 183
180 184
181 // ----------------------------------------------------------------------------- 185 // -----------------------------------------------------------------------------
182 // Math.fround 186 // Math.fround
183 187
184 188
185 TEST_F(JSBuiltinReducerTest, MathFround) { 189 TEST_F(JSBuiltinReducerTest, MathFround) {
186 Node* function = MathFunction("fround"); 190 Node* function = MathFunction("fround");
187 191
188 Node* effect = graph()->start(); 192 Node* effect = graph()->start();
189 Node* control = graph()->start(); 193 Node* control = graph()->start();
194 Node* context = UndefinedConstant();
190 Node* frame_state = graph()->start(); 195 Node* frame_state = graph()->start();
191 TRACED_FOREACH(LanguageMode, language_mode, kLanguageModes) { 196 TRACED_FOREACH(LanguageMode, language_mode, kLanguageModes) {
192 TRACED_FOREACH(Type*, t0, kNumberTypes) { 197 TRACED_FOREACH(Type*, t0, kNumberTypes) {
193 Node* p0 = Parameter(t0, 0); 198 Node* p0 = Parameter(t0, 0);
194 Node* call = graph()->NewNode( 199 Node* call = graph()->NewNode(
195 javascript()->CallFunction(3, NO_CALL_FUNCTION_FLAGS, language_mode), 200 javascript()->CallFunction(3, NO_CALL_FUNCTION_FLAGS, language_mode),
196 function, UndefinedConstant(), p0, frame_state, frame_state, effect, 201 function, UndefinedConstant(), p0, context, frame_state, frame_state,
197 control); 202 effect, control);
198 Reduction r = Reduce(call); 203 Reduction r = Reduce(call);
199 204
200 ASSERT_TRUE(r.Changed()); 205 ASSERT_TRUE(r.Changed());
201 EXPECT_THAT(r.replacement(), IsTruncateFloat64ToFloat32(p0)); 206 EXPECT_THAT(r.replacement(), IsTruncateFloat64ToFloat32(p0));
202 } 207 }
203 } 208 }
204 } 209 }
205 210
206 } // namespace compiler 211 } // namespace compiler
207 } // namespace internal 212 } // namespace internal
208 } // namespace v8 213 } // namespace v8
OLDNEW
« no previous file with comments | « src/full-codegen/x87/full-codegen-x87.cc ('k') | test/unittests/compiler/js-context-relaxation-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698