| description( |
| "This tests that op_get_by_pname is compiled correctly." |
| ); |
| |
| function makeFoo() { |
| return function(o) { |
| var result = 0; |
| for (var n in o) |
| result += o[n]; |
| return result; |
| } |
| } |
| var foo1 = makeFoo(); |
| var foo2 = makeFoo(); |
| var foo3 = makeFoo(); |
| var foo4 = makeFoo(); |
| var foo5 = makeFoo(); |
| |
| function makeGetByPnameOnConstant() { |
| return function(o) { |
| var result = 0; |
| for (var n in o) |
| result += 0[n] ? 0[n] : 0; |
| return result; |
| } |
| } |
| var getByPnameOnConstant1 = makeGetByPnameOnConstant(); |
| var getByPnameOnConstant2 = makeGetByPnameOnConstant(); |
| var getByPnameOnConstant3 = makeGetByPnameOnConstant(); |
| var getByPnameOnConstant4 = makeGetByPnameOnConstant(); |
| var getByPnameOnConstant5 = makeGetByPnameOnConstant(); |
| |
| function makeGetByPnameOnVar() { |
| return function(o, v) { |
| var result = 0; |
| for (var n in o) |
| result += v[n] ? v[n] : 0; |
| return result; |
| } |
| } |
| var getByPnameOnVar11 = makeGetByPnameOnVar(); |
| var getByPnameOnVar12 = makeGetByPnameOnVar(); |
| var getByPnameOnVar13 = makeGetByPnameOnVar(); |
| var getByPnameOnVar14 = makeGetByPnameOnVar(); |
| var getByPnameOnVar15 = makeGetByPnameOnVar(); |
| var getByPnameOnVar21 = makeGetByPnameOnVar(); |
| var getByPnameOnVar22 = makeGetByPnameOnVar(); |
| var getByPnameOnVar23 = makeGetByPnameOnVar(); |
| var getByPnameOnVar24 = makeGetByPnameOnVar(); |
| var getByPnameOnVar25 = makeGetByPnameOnVar(); |
| var getByPnameOnVar31 = makeGetByPnameOnVar(); |
| var getByPnameOnVar32 = makeGetByPnameOnVar(); |
| var getByPnameOnVar33 = makeGetByPnameOnVar(); |
| var getByPnameOnVar34 = makeGetByPnameOnVar(); |
| var getByPnameOnVar35 = makeGetByPnameOnVar(); |
| var getByPnameOnVar41 = makeGetByPnameOnVar(); |
| var getByPnameOnVar42 = makeGetByPnameOnVar(); |
| var getByPnameOnVar43 = makeGetByPnameOnVar(); |
| var getByPnameOnVar44 = makeGetByPnameOnVar(); |
| var getByPnameOnVar45 = makeGetByPnameOnVar(); |
| var getByPnameOnVar51 = makeGetByPnameOnVar(); |
| var getByPnameOnVar52 = makeGetByPnameOnVar(); |
| var getByPnameOnVar53 = makeGetByPnameOnVar(); |
| var getByPnameOnVar54 = makeGetByPnameOnVar(); |
| var getByPnameOnVar55 = makeGetByPnameOnVar(); |
| var getByPnameOnVar56 = makeGetByPnameOnVar(); |
| |
| var o = {a:1, b:3, c:7}; |
| var p = {a:1, b:2, c:3, d:4}; |
| var q = {a:1, b:2, c:3, d:4, e:3457}; |
| var r = {a:1, b:2, c:3, d:4, e:91, f:12}; |
| var s = {a:1, b:2, c:3, d:4, e:91, f:12, g:69}; |
| |
| var a = [1, 2, 3]; |
| var o1 = {"1":1, "2":3, "3":7}; |
| |
| var testCases = [ |
| { test: "foo1(o)", result: "11" }, |
| { test: "foo2(p)", result: "10" }, |
| { test: "foo3(q)", result: "3467" }, |
| { test: "foo4(r)", result: "113" }, |
| { test: "foo5(s)", result: "182" }, |
| |
| { test: "getByPnameOnConstant1(a)", result: "0" }, |
| { test: "getByPnameOnVar11(a, 100)", result: "0" }, |
| { test: "getByPnameOnVar12(a, 'abc')", result: "'0abc'" }, |
| { test: "getByPnameOnVar13(a, o)", result: "0" }, |
| { test: "getByPnameOnVar14(a, o1)", result: "4" }, |
| { test: "getByPnameOnVar15(a, a)", result: "6" }, |
| |
| { test: "getByPnameOnConstant2(o1)", result: "0" }, |
| { test: "getByPnameOnVar21(o1, 100)", result: "0" }, |
| { test: "getByPnameOnVar22(o1, 'abc')", result: "'0bc0'" }, |
| { test: "getByPnameOnVar23(o1, o)", result: "0" }, |
| { test: "getByPnameOnVar24(o1, o1)", result: "11" }, |
| { test: "getByPnameOnVar25(o1, a)", result: "5" }, |
| |
| { test: "getByPnameOnConstant3(o)", result: "0" }, |
| { test: "getByPnameOnVar31(o, 100)", result: "0" }, |
| { test: "getByPnameOnVar32(o, 'abc')", result: "0" }, |
| { test: "getByPnameOnVar33(o, o)", result: "11" }, |
| { test: "getByPnameOnVar34(o, o1)", result: "0" }, |
| { test: "getByPnameOnVar35(o, a)", result: "0" }, |
| |
| { test: "getByPnameOnConstant4(0)", result: "0" }, |
| { test: "getByPnameOnVar41(0, 100)", result: "0" }, |
| { test: "getByPnameOnVar42(0, 'abc')", result: "0" }, |
| { test: "getByPnameOnVar43(0, o)", result: "0" }, |
| { test: "getByPnameOnVar44(0, o1)", result: "0" }, |
| { test: "getByPnameOnVar45(0, a)", result: "0" }, |
| |
| { test: "getByPnameOnConstant5('abc')", result: "0" }, |
| { test: "getByPnameOnVar51('abc', 100)", result: "0" }, |
| { test: "getByPnameOnVar52('abc', 'abc')", result: "'0abc'" }, |
| { test: "getByPnameOnVar53('abc', o)", result: "0" }, |
| { test: "getByPnameOnVar54('abc', o1)", result: "4" }, |
| { test: "getByPnameOnVar55('abc', a)", result: "6" }, |
| { test: "getByPnameOnVar56('def', 'abc')", result: "'0abc'" }, |
| ]; |
| |
| // The tiers should be sorted from lowest iterations to highest. |
| var tiers = [ |
| // name, iterations |
| { name: "cold", iterations: 0 }, |
| { name: "llint", iterations: 10 }, |
| { name: "baseline", iterations: 500 }, |
| { name: "dfg", iterations: 1000 }, |
| // { name: "ftl", iterations: 100000 }, |
| ]; |
| var highestIteration = tiers[tiers.length - 1].iterations; |
| |
| function isTierIteration(iteration) { |
| for (var i = 0; i < tiers.length; i++) { |
| var tierIteration = tiers[i].iterations; |
| if (iteration < tierIteration) |
| return false; |
| if (iteration == tierIteration) |
| return true; |
| } |
| return false; |
| } |
| function tierName(iteration) { |
| for (var i = 0; i < tiers.length; i++) { |
| if (iteration == tiers[i].iterations) |
| return tiers[i].name; |
| } |
| } |
| |
| for (var i = 0; i <= highestIteration; ++i) { |
| if (isTierIteration(i)) { |
| debug("Test tier: " + tierName(i)); |
| for (var j = 0; j < testCases.length; j++) |
| shouldBe(testCases[j].test, testCases[j].result); |
| debug(""); |
| } else { |
| for (var j = 0; j < testCases.length; j++) |
| eval(testCases[j].test); |
| } |
| } |
| |