function foo(o) { | |
return o.f; | |
} | |
function bar(o) { | |
return o.g; | |
} | |
function baz(o, p, q) { | |
var result = 0; | |
if (isFinalTier()) { | |
p = o; | |
q = o; | |
result += 10000; | |
} | |
result += foo(p); | |
result += bar(q); | |
return result; | |
} | |
noInline(baz); | |
for (var i = 0; i < 100000; ++i) { | |
var o, p, q; | |
var expected1; | |
var expected2; | |
o = {f:100, g:101}; | |
expected2 = 10000 + 100 + 101; | |
if (i & 1) { | |
p = {e:1, f:2, g:3}; | |
q = {e:4, f:5, g:6}; | |
expected1 = 2 + 6; | |
} else { | |
p = {f:7, g:8}; | |
q = {g:9, f:10}; | |
expected1 = 7 + 9; | |
} | |
var result = baz(o, p, q); | |
if (result != expected1 && result != expected2) | |
throw "Error: bad result: " + result + " (expected " + expected1 + " or " + expected2 + ")"; | |
} | |