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

Unified Diff: test/mjsunit/strong/implicit-conversions.js

Issue 1773653002: [strong] Remove all remainders of strong mode (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Oversight Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/mjsunit/strong/functions.js ('k') | test/mjsunit/strong/implicit-conversions-constants.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/strong/implicit-conversions.js
diff --git a/test/mjsunit/strong/implicit-conversions.js b/test/mjsunit/strong/implicit-conversions.js
deleted file mode 100644
index cd8acf70857bf31050a07ff5d5fd24615c449d57..0000000000000000000000000000000000000000
--- a/test/mjsunit/strong/implicit-conversions.js
+++ /dev/null
@@ -1,412 +0,0 @@
-// Copyright 2015 the V8 project authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Flags: --strong-mode --allow-natives-syntax
-
-"use strict";
-
-// Boolean indicates whether an operator can be part of a compound assignment.
-let strongNumberBinops = [
- ["-", true],
- ["*", true],
- ["/", true],
- ["%", true],
- ["|", true],
- ["&", true],
- ["^", true],
- ["<<", true],
- [">>", true],
- [">>>", true]
-];
-
-let strongStringOrNumberBinops = [
- ["+", true],
- ["<", false],
- [">", false],
- ["<=", false],
- [">=", false]
-];
-
-let strongBinops = strongNumberBinops.concat(strongStringOrNumberBinops);
-
-let strongUnops = [
- "~",
- "+",
- "-"
-];
-
-let nonStringOrNumberValues = [
- "null",
- "undefined",
- "{}",
- "false",
- "(function(){})",
- "[]",
- "(class Foo {})"
-];
-
-let stringValues = [
- "''",
- "' '",
- "'foo'",
- "'f\\u006F\\u006F'",
- "'0'",
- "'NaN'"
-];
-
-let nonNumberValues = nonStringOrNumberValues.concat(stringValues);
-
-let numberValues = [
- "0",
- "(-0)",
- "1",
- "(-4294967295)",
- "(-4294967296)",
- "9999999999999",
- "(-9999999999999)",
- "NaN",
- "Infinity",
- "(-Infinity)"
-];
-
-//******************************************************************************
-// Relational comparison function declarations
-function add_strong(x, y) {
- "use strong";
- return x + y;
-}
-
-function add_num_strong(x, y) {
- "use strong";
- return x + y;
-}
-
-function sub_strong(x, y) {
- "use strong";
- return x - y;
-}
-
-function mul_strong(x, y) {
- "use strong";
- return x * y;
-}
-
-function div_strong(x, y) {
- "use strong";
- return x / y;
-}
-
-function mod_strong(x, y) {
- "use strong";
- return x % y;
-}
-
-function or_strong(x, y) {
- "use strong";
- return x | y;
-}
-
-function and_strong(x, y) {
- "use strong";
- return x & y;
-}
-
-function xor_strong(x, y) {
- "use strong";
- return x ^ y;
-}
-
-function shl_strong(x, y) {
- "use strong";
- return x << y;
-}
-
-function shr_strong(x, y) {
- "use strong";
- return x >> y;
-}
-
-function sar_strong(x, y) {
- "use strong";
- return x >>> y;
-}
-
-function less_strong(x, y) {
- "use strong";
- return x < y;
-}
-
-function less_num_strong(x, y) {
- "use strong";
- return x < y;
-}
-
-function greater_strong(x, y) {
- "use strong";
- return x > y;
-}
-
-function greater_num_strong(x, y) {
- "use strong";
- return x > y;
-}
-
-function less_equal_strong(x, y) {
- "use strong";
- return x <= y;
-}
-
-function less_equal_num_strong(x, y) {
- "use strong";
- return x <= y;
-}
-
-function greater_equal_strong(x, y) {
- "use strong";
- return x >= y;
-}
-
-function greater_equal_num_strong(x, y) {
- "use strong";
- return x >= y;
-}
-
-function typed_add_strong(x, y) {
- "use strong";
- return (+x) + (+y);
-}
-
-function typed_sub_strong(x, y) {
- "use strong";
- return (+x) - (+y);
-}
-
-function typed_mul_strong(x, y) {
- "use strong";
- return (+x) * (+y);
-}
-
-function typed_div_strong(x, y) {
- "use strong";
- return (+x) / (+y);
-}
-
-function typed_mod_strong(x, y) {
- "use strong";
- return (+x) % (+y);
-}
-
-function typed_or_strong(x, y) {
- "use strong";
- return (+x) | (+y);
-}
-
-function typed_and_strong(x, y) {
- "use strong";
- return (+x) & (+y);
-}
-
-function typed_xor_strong(x, y) {
- "use strong";
- return (+x) ^ (+y);
-}
-
-function typed_shl_strong(x, y) {
- "use strong";
- return (+x) << (+y);
-}
-
-function typed_shr_strong(x, y) {
- "use strong";
- return (+x) >> (+y);
-}
-
-function typed_sar_strong(x, y) {
- "use strong";
- return (+x) >>> (+y);
-}
-
-function typed_less_strong(x, y) {
- "use strong";
- return (+x) < (+y);
-}
-
-function typed_greater_strong(x, y) {
- "use strong";
- return (+x) > (+y);
-}
-
-function typed_less_equal_strong(x, y) {
- "use strong";
- return (+x) <= (+y);
-}
-
-function typed_greater_equal_strong(x, y) {
- "use strong";
- return (+x) >= (+y);
-}
-
-//******************************************************************************
-// (in)equality function declarations
-function str_equal_strong(x, y) {
- "use strong";
- return x === y;
-}
-
-function str_ineq_strong(x, y) {
- "use strong";
- return x !== y;
-}
-
-let strongNumberFuncs = [add_num_strong, sub_strong, mul_strong, div_strong,
- mod_strong, or_strong, and_strong, xor_strong,
- shl_strong, shr_strong, sar_strong, less_num_strong,
- greater_num_strong, less_equal_num_strong,
- greater_equal_num_strong, typed_add_strong,
- typed_sub_strong, typed_mul_strong, typed_div_strong,
- typed_mod_strong, typed_or_strong, typed_and_strong,
- typed_xor_strong, typed_shl_strong, typed_shr_strong,
- typed_sar_strong, typed_less_strong,
- typed_greater_strong, typed_less_equal_strong,
- typed_greater_equal_strong];
-
-let strongStringOrNumberFuncs = [add_strong, less_strong, greater_strong,
- less_equal_strong, greater_equal_strong];
-
-let strongFuncs = strongNumberFuncs.concat(strongStringOrNumberFuncs);
-
-function assertStrongNonThrowBehaviour(expr) {
- assertEquals(eval(expr), eval("'use strong';" + expr));
- assertDoesNotThrow("'use strong'; " + expr + ";");
- assertDoesNotThrow("'use strong'; let v = " + expr + ";");
-}
-
-function assertStrongThrowBehaviour(expr) {
- assertDoesNotThrow("'use strict'; " + expr + ";");
- assertDoesNotThrow("'use strict'; let v = " + expr + ";");
- assertThrows("'use strong'; " + expr + ";", TypeError);
- assertThrows("'use strong'; let v = " + expr + ";", TypeError);
-}
-
-function checkArgumentCombinations(op, leftList, rightList, willThrow) {
- for (let v1 of leftList) {
- let assignExpr = "foo " + op[0] + "= " + v1 + ";";
- for (let v2 of rightList) {
- let compoundAssignment = "'use strong'; let foo = " + v2 + "; " +
- assignExpr;
- if (willThrow) {
- if (op[1]) {
- assertThrows(compoundAssignment, TypeError);
- }
- assertStrongThrowBehaviour("(" + v1 + op[0] + v2 + ")");
- } else {
- if (op[1]) {
- assertDoesNotThrow(compoundAssignment);
- }
- assertStrongNonThrowBehaviour("(" + v1 + op[0] + v2 + ")");
- }
- }
- }
-}
-
-for (let op of strongBinops) {
- checkArgumentCombinations(op, numberValues, numberValues, false);
- checkArgumentCombinations(op, numberValues, nonNumberValues, true);
-}
-
-for (let op of strongNumberBinops) {
- checkArgumentCombinations(op, nonNumberValues,
- numberValues.concat(nonNumberValues), true);
-}
-
-for (let op of strongStringOrNumberBinops) {
- checkArgumentCombinations(op, nonNumberValues,
- numberValues.concat(nonStringOrNumberValues), true);
- checkArgumentCombinations(op, nonStringOrNumberValues, stringValues, true);
- checkArgumentCombinations(op, stringValues, stringValues, false);
-}
-
-for (let op of strongUnops) {
- for (let value of numberValues) {
- assertStrongNonThrowBehaviour("(" + op + value + ")");
- }
- for (let value of nonNumberValues) {
- assertStrongThrowBehaviour("(" + op + value + ")");
- }
-}
-
-for (let func of strongNumberFuncs) {
- // Check IC None*None->None throws
- for (let v of nonNumberValues) {
- let value = eval(v);
- assertThrows(function(){func(2, value);}, TypeError);
- %OptimizeFunctionOnNextCall(func);
- assertThrows(function(){func(2, value);}, TypeError);
- %DeoptimizeFunction(func);
- }
- func(4, 5);
- func(4, 5);
- // Check IC Smi*Smi->Smi throws
- for (let v of nonNumberValues) {
- let value = eval(v);
- assertThrows(function(){func(2, value);}, TypeError);
- %OptimizeFunctionOnNextCall(func);
- assertThrows(function(){func(2, value);}, TypeError);
- %DeoptimizeFunction(func);
- }
- func(NaN, NaN);
- func(NaN, NaN);
- // Check IC Number*Number->Number throws
- for (let v of nonNumberValues) {
- let value = eval(v);
- assertThrows(function(){func(2, value);}, TypeError);
- %OptimizeFunctionOnNextCall(func);
- assertThrows(function(){func(2, value);}, TypeError);
- %DeoptimizeFunction(func);
- }
-}
-
-for (let func of strongStringOrNumberFuncs) {
- // Check IC None*None->None throws
- for (let v of nonNumberValues) {
- let value = eval(v);
- assertThrows(function(){func(2, value);}, TypeError);
- %OptimizeFunctionOnNextCall(func);
- assertThrows(function(){func(2, value);}, TypeError);
- %DeoptimizeFunction(func);
- }
- func("foo", "bar");
- func("foo", "bar");
- // Check IC String*String->String throws
- for (let v of nonNumberValues) {
- let value = eval(v);
- assertThrows(function(){func(2, value);}, TypeError);
- %OptimizeFunctionOnNextCall(func);
- assertThrows(function(){func(2, value);}, TypeError);
- %DeoptimizeFunction(func);
- }
- func(NaN, NaN);
- func(NaN, NaN);
- // Check IC Generic*Generic->Generic throws
- for (let v of nonNumberValues) {
- let value = eval(v);
- assertThrows(function(){func(2, value);}, TypeError);
- %OptimizeFunctionOnNextCall(func);
- assertThrows(function(){func(2, value);}, TypeError);
- %DeoptimizeFunction(func);
- }
-}
-
-for (let func of [str_equal_strong, str_ineq_strong]) {
- assertDoesNotThrow(function(){func(2, undefined)});
- assertDoesNotThrow(function(){func(2, undefined)});
- %OptimizeFunctionOnNextCall(func);
- assertDoesNotThrow(function(){func(2, undefined)});
- %DeoptimizeFunction(func);
- assertDoesNotThrow(function(){func(true, {})});
- assertDoesNotThrow(function(){func(true, {})});
- %OptimizeFunctionOnNextCall(func);
- assertDoesNotThrow(function(){func(true, {})});
- %DeoptimizeFunction(func);
-}
« no previous file with comments | « test/mjsunit/strong/functions.js ('k') | test/mjsunit/strong/implicit-conversions-constants.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698