Source code

Revision control

Copy as Markdown

Other Tools

function f(i) {
// Add use of the boxed Int32 parameter |i| as a Double.
(2 ** i);
// This call into |g| will get inlined and an inline-arguments object will be
// created. |i| was unboxed to Double earlier, but we must not store the
// unboxed Double into the inline-arguments object, because other uses of the
// boxed Int32 |i| may expect Int32 inputs.
return g(i);
}
function g(i) {
// Add use of aliased |i| as an Int32.
if (i) {
// Add use |arguments| to make |i| an aliased variable which gets stored in
// the inline-arguments object.
return arguments;
}
}
// Don't inline |f| into the top-level script.
with ({});
for (let i = 0; i < 4000; i++) {
f(i);
}