Source code

Revision control

Copy as Markdown

Other Tools

// These predicates are for tests that require a particular set of JIT options.
// Check if toggles match. Useful for tests that shouldn't be run if a
// different set of JIT toggles are set, since TBPL runs each jit-test
// multiple times with a variety of flags.
function jitTogglesMatch(opts) {
var currentOpts = getJitCompilerOptions();
for (var k in opts) {
if (k.indexOf(".enable") > 0 && opts[k] != currentOpts[k])
return false;
}
return true;
}
// Run fn under a particular set of JIT options.
function withJitOptions(opts, fn) {
var oldOpts = getJitCompilerOptions();
for (var k in opts)
setJitCompilerOption(k, opts[k]);
try {
fn();
} finally {
for (var k in oldOpts)
setJitCompilerOption(k, oldOpts[k]);
}
}
// N.B. Ion opts *must come before* baseline opts because there's some kind of
// "undo eager compilation" logic. If we don't set the baseline warmup-counter
// *after* the Ion warmup-counter we end up setting the baseline warmup-counter
// to be the default if we hit the "undo eager compilation" logic.
var Opts_BaselineEager =
{
'ion.enable': 1,
'ion.warmup.trigger': 100,
'baseline.enable': 1,
'baseline.warmup.trigger': 0,
'offthread-compilation.enable': 1
};
// Checking for offthread compilation being off is often helpful if the test
// requires a function be Ion compiled. Each individual test will usually
// finish before the Ion compilation thread has a chance to attach the
// compiled code.
var Opts_IonEagerNoOffthreadCompilation =
{
'ion.enable': 1,
'ion.warmup.trigger': 0,
'baseline.enable': 1,
'baseline.warmup.trigger': 0,
'offthread-compilation.enable': 0,
};
var Opts_Ion2NoOffthreadCompilation =
{
'ion.enable': 1,
'ion.warmup.trigger': 3,
'baseline.enable': 1,
'baseline.warmup.trigger': 1,
'offthread-compilation.enable': 0
};
var Opts_NoJits =
{
'ion.enable': 0,
'ion.warmup.trigger': 0,
'baseline.warmup.trigger': 0,
'baseline.enable': 0,
'offthread-compilation.enable': 0
};