| |
| function f(x) { |
| return x + 1; |
| } |
| |
| setJitCompilerOption("ion.warmup.trigger", 2); |
| setJitCompilerOption("baseline.warmup.trigger", 0); |
| |
| assertEq(f(1), 2); // warm-up == 1 => eagerly compile with baseline. |
| assertEq(f(0.5), 1.5); // warm-up == 2 => normaly compile with ion. |
| // invalidate for unexpect output. |
| |
| |
| function normal() { |
| setJitCompilerOption("ion.warmup.trigger", 8); |
| setJitCompilerOption("baseline.warmup.trigger", 5); |
| } |
| |
| function eager() { |
| setJitCompilerOption("ion.warmup.trigger", 0); |
| } |
| |
| function h(x) { |
| return x + 1; |
| } |
| |
| function g(x) { |
| normal(); |
| return h(x) + 1; |
| } |
| |
| normal(); |
| for (var i = 0; i < 10; i++) { |
| eager(); |
| assertEq(g(i), i + 2); |
| } |
| |
| |
| // Check for wrong arguments. |
| try { |
| setJitCompilerOption("not.an.option", 51); |
| assertEq(false, true); |
| } catch (x) { } |
| |
| try { |
| var ion = { warmup: { trigger: null } }; |
| setJitCompilerOption(ion.warmup.trigger, 42); |
| assertEq(false, true); |
| } catch (x) { } |
| |
| try { |
| setJitCompilerOption("ion.warmup.trigger", "32"); |
| assertEq(false, true); |
| } catch (x) { } |