js/src/jit-test/tests/basic/constant-folding-1.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/js/src/jit-test/tests/basic/constant-folding-1.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,43 @@
     1.4 +function bytecode(f) {
     1.5 +    if (typeof disassemble !== "function")
     1.6 +        return "unavailable";
     1.7 +    var d = disassemble(f);
     1.8 +    return d.slice(d.indexOf("main:"), d.indexOf("\n\n"));
     1.9 +}
    1.10 +assertEq(bytecode(() => "hello" + "world"),
    1.11 +         bytecode(() => "helloworld"));
    1.12 +assertEq(bytecode(() => 2 + "2" + "2"),
    1.13 +         bytecode(() => "222"));
    1.14 +assertEq(bytecode(() => "x" + "3"),
    1.15 +         bytecode(() => "x3"));
    1.16 +
    1.17 +var s = "hoge";
    1.18 +assertEq(bytecode(() => "fo" + "o" + s + "ba" + "r"),
    1.19 +         bytecode(() => "foo" + s + "bar"));
    1.20 +assertEq(bytecode(() => "fo" + "o" + 1 + s + 1 + "ba" + "r"),
    1.21 +         bytecode(() => "foo1" + s + "1bar"));
    1.22 +assertEq(bytecode(() => 1 + (2 * 2) + "x"),
    1.23 +         bytecode(() => 5 + "x"));
    1.24 +assertEq(s + 1 + 2, "hoge12");
    1.25 +assertEq((() => s + 1 + 2)(), "hoge12");
    1.26 +
    1.27 +// SpiderMonkey knows that 1 + 1 == "11".
    1.28 +assertEq(bytecode(() => "x" + s + 1 + 1),
    1.29 +         bytecode(() => "x" + s + "11"));
    1.30 +
    1.31 +var n = 5;
    1.32 +assertEq(1 + n + 1 + "ba" + "r", "7bar");
    1.33 +assertEq(1 + 2 + {valueOf: () => 3, toString: () => 'x'} + 4 + 5,15);
    1.34 +assertEq(1+2+n,8);
    1.35 +assertEq(bytecode(() => 1 + 2 + n + 1 + 2),
    1.36 +         bytecode(() => 3 + n + 1 + 2));
    1.37 +assertEq(1 + 2 + n + 1 + 2, 11);
    1.38 +assertEq(bytecode(() => 1 + 2 + s + 1 + 2),
    1.39 +         bytecode(() => 3 + s + 1 + 2));
    1.40 +assertEq(1 + 2 + s + 1 + 2, "3hoge12");
    1.41 +
    1.42 +assertEq(bytecode(() => ["a" + "b" + n]),
    1.43 +         bytecode(() => ["ab" + n]));
    1.44 +var a = ["a" + "b" + n];
    1.45 +assertEq(a[0], "ab5");
    1.46 +

mercurial