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

Side by Side Diff: test/mjsunit/strong/implicit-conversions.js

Issue 1123043002: [strong] Fix inlining issue (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 7 months 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
« no previous file with comments | « src/x87/lithium-x87.h ('k') | test/mjsunit/strong/implicit-conversions-inlining.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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 // Flags: --strong-mode --allow-natives-syntax 5 // Flags: --strong-mode --allow-natives-syntax
6 6
7 "use strict"; 7 "use strict";
8 8
9 // TODO(conradw): Implement other strong operators 9 // TODO(conradw): Implement other strong operators
10 let strongNumberBinops = [ 10 let strongNumberBinops = [
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 shl_strong, shr_strong, sar_strong, typed_add_strong, 192 shl_strong, shr_strong, sar_strong, typed_add_strong,
193 typed_sub_strong, typed_mul_strong, typed_div_strong, 193 typed_sub_strong, typed_mul_strong, typed_div_strong,
194 typed_mod_strong, typed_or_strong, typed_and_strong, 194 typed_mod_strong, typed_or_strong, typed_and_strong,
195 typed_xor_strong, typed_shl_strong, typed_shr_strong, 195 typed_xor_strong, typed_shl_strong, typed_shr_strong,
196 typed_sar_strong]; 196 typed_sar_strong];
197 197
198 let strongStringOrNumberFuncs = [add_strong]; 198 let strongStringOrNumberFuncs = [add_strong];
199 199
200 let strongFuncs = strongNumberFuncs.concat(strongStringOrNumberFuncs); 200 let strongFuncs = strongNumberFuncs.concat(strongStringOrNumberFuncs);
201 201
202 function inline_sub_strong(x, y) {
203 "use strong";
204 let v = x - y;
205 return v;
206 }
207
208 function inline_outer(x, y) {
209 return inline_sub_strong(x, y);
210 }
211
212 function inline_sub(x, y) {
213 let v = x - y;
214 return v;
215 }
216
217 function inline_outer_strong(x, y) {
218 "use strong";
219 return inline_sub(x, y);
220 }
221
222 function assertStrongNonThrowBehaviour(expr) { 202 function assertStrongNonThrowBehaviour(expr) {
223 assertEquals(eval(expr), eval("'use strong';" + expr)); 203 assertEquals(eval(expr), eval("'use strong';" + expr));
224 assertDoesNotThrow("'use strong'; " + expr + ";"); 204 assertDoesNotThrow("'use strong'; " + expr + ";");
225 assertDoesNotThrow("'use strong'; let v = " + expr + ";"); 205 assertDoesNotThrow("'use strong'; let v = " + expr + ";");
226 } 206 }
227 207
228 function assertStrongThrowBehaviour(expr) { 208 function assertStrongThrowBehaviour(expr) {
229 assertDoesNotThrow("'use strict'; " + expr + ";"); 209 assertDoesNotThrow("'use strict'; " + expr + ";");
230 assertDoesNotThrow("'use strict'; let v = " + expr + ";"); 210 assertDoesNotThrow("'use strict'; let v = " + expr + ";");
231 assertThrows("'use strong'; " + expr + ";", TypeError); 211 assertThrows("'use strong'; " + expr + ";", TypeError);
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 assertThrows(function(){func(2, "foo");}, TypeError); 291 assertThrows(function(){func(2, "foo");}, TypeError);
312 %DeoptimizeFunction(func); 292 %DeoptimizeFunction(func);
313 func(NaN, NaN); 293 func(NaN, NaN);
314 func(NaN, NaN); 294 func(NaN, NaN);
315 // Check IC Generic*Generic->Generic throws 295 // Check IC Generic*Generic->Generic throws
316 assertThrows(function(){func(2, "foo");}, TypeError); 296 assertThrows(function(){func(2, "foo");}, TypeError);
317 %OptimizeFunctionOnNextCall(func); 297 %OptimizeFunctionOnNextCall(func);
318 assertThrows(function(){func(2, "foo");}, TypeError); 298 assertThrows(function(){func(2, "foo");}, TypeError);
319 %DeoptimizeFunction(func); 299 %DeoptimizeFunction(func);
320 } 300 }
321
322 assertThrows(function(){inline_outer(1, {})}, TypeError);
323 for (var i = 0; i < 100; i++) {
324 inline_outer(1, 2);
325 }
326 assertThrows(function(){inline_outer(1, {})}, TypeError);
327
328 assertDoesNotThrow(function(){inline_outer_strong(1, {})});
329 for (var i = 0; i < 100; i++) {
330 inline_outer_strong(1, 2);
331 }
332 assertDoesNotThrow(function(){inline_outer_strong(1, {})});
OLDNEW
« no previous file with comments | « src/x87/lithium-x87.h ('k') | test/mjsunit/strong/implicit-conversions-inlining.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698