43 lines
727 B
JavaScript
43 lines
727 B
JavaScript
function foo(a, b) {
|
|
return a + b;
|
|
}
|
|
|
|
function verify(a, b) {
|
|
if (a !== b)
|
|
throw "Error: the two arguments objects aren't identical.";
|
|
}
|
|
|
|
noInline(verify);
|
|
|
|
function bar() {
|
|
var a = arguments;
|
|
this.verify(arguments, a);
|
|
return foo.apply(null, a);
|
|
}
|
|
|
|
function baz(a, b) {
|
|
return this.bar(a, b);
|
|
}
|
|
|
|
noInline(baz);
|
|
|
|
for (var i = 0; i < 20000; ++i) {
|
|
var o = {
|
|
baz: baz,
|
|
bar: bar,
|
|
verify: function() { }
|
|
};
|
|
var result = o.baz(1, 2);
|
|
if (result != 1 + 2)
|
|
throw "Error: bad result: " + result;
|
|
}
|
|
|
|
var o = {
|
|
baz: baz,
|
|
bar: bar,
|
|
verify: verify
|
|
};
|
|
var result = o.baz(1, 2);
|
|
if (result != 1 + 2)
|
|
throw "Error: bad result at end: " + result;
|