You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Move more jiterpreter configuration and constants into options
Fix should_generate_trace_here not scanning across multiple basic blocks
Disable specialized JIT call in threaded wasm mode (though I think it might work, it's better to turn it off to be sure for now)
Introduces genmintops.py, a script that automatically generates mintops.ts from mintops.def
Adjust typescript config to make it able to find the generated mintops.ts (and fix ESLint on Linux)
Unroll memsets below a certain size into raw wasm opcodes, because v8 generates expensive function calls for memset and memcpy. Unrolling memcpy is a TODO for later
Rename "always generate" to "disable heuristic" to more accurately describe what it does
Fix jiterpreter_dump_stats hiding errors if startup failed before cwraps were ready
Misc. code cleanup
// Continue counting hits for traces that fail to compile and use it to estimate
100
100
// the relative importance of the opcode that caused them to abort
101
101
DEFINE_BOOL(jiterpreter_estimate_heat, "jiterpreter-estimate-heat", FALSE, "Maintain accurate hit count for all trace entry points")
102
102
// Count the number of times a trace bails out (branch taken, etc) and for what reason
103
103
DEFINE_BOOL(jiterpreter_count_bailouts, "jiterpreter-count-bailouts", FALSE, "Maintain accurate count of all trace bailouts based on cause")
104
+
// Dump the wasm blob for all compiled traces
105
+
DEFINE_BOOL(jiterpreter_dump_traces, "jiterpreter-dump-traces", FALSE, "Dump the wasm blob for all compiled traces to the console")
104
106
// any trace that doesn't have at least this many meaningful (non-nop) opcodes in it will be rejected
105
107
DEFINE_INT(jiterpreter_minimum_trace_length, "jiterpreter-minimum-trace-length", 8, "Reject traces shorter than this number of meaningful opcodes")
108
+
// once a trace entry point is inserted, we only actually JIT code for it once it's been hit this many times
109
+
DEFINE_INT(jiterpreter_minimum_trace_hit_count, "jiterpreter-minimum-trace-hit-count", 10000, "JIT trace entry points once they are hit this many times")
110
+
// After a do_jit_call call site is hit this many times, we will queue it to be jitted
111
+
DEFINE_INT(jiterpreter_jit_call_trampoline_hit_count, "jiterpreter-jit-call-hit-count", 3000, "Queue specialized do_jit_call trampoline for JIT after this many hits")
112
+
// After a do_jit_call call site is hit this many times without being jitted, we will flush the JIT queue
113
+
DEFINE_INT(jiterpreter_jit_call_queue_flush_threshold, "jiterpreter-jit-call-queue-flush-threshold", 10000, "Flush the do_jit_call JIT queue after an unJITted call site has this many hits")
0 commit comments