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 +