Milky2018/wasmoon_jit/perf does not have a README file
pub struct CompileSubphaseMetric {
name : String
parent : String
duration_us : Int64
} derive(ToJson)pub(all) enum FunctionCompileStage {
Optimize
NativeLowering
TargetLowering
RegisterAllocation
FramePlanning
Emission
}pub struct FunctionMetrics {
func_idx : Int
func_name : String
opt_level : Int
ir_insts_before : Int
ir_insts_after : Int
function_compile_us : Int64
optimize_us : Int64
lower_us : Int64
target_lower_us : Int64
regalloc_us : Int64
frame_plan_us : Int64
emit_us : Int64
compile_subphases : Array[CompileSubphaseMetric]
code_size : Int
spill_slots : Int
spills : Int
reloads : Int
reg_moves : Int
spill_to_spill : Int
regalloc_loop : RegallocLoopMetric?
ir_passes : Array[IRPassMetric]
regalloc_phases : Array[RegallocPhaseMetric]
} derive(ToJson)pub struct IRPassMetric {
name : String
duration_us : Int64
before_insts : Int
after_insts : Int
changed : Bool
rewrite_attempts : Int?
rewrite_apps : Int?
rewrite_created_insts : Int?
work_done : Int?
value_lookup_probes : Int?
budget_exhausted : Bool?
} derive(ToJson)pub struct ModuleMetricsReport {
schema_version : Int
expected_functions : Int
module_compile_us : Int64
compile_subphases : Array[CompileSubphaseMetric]
functions : Array[FunctionMetrics]
} derive(ToJson)pub struct RegallocLoopMetric {
queue_pops : Int
register_probes : Int
occupied_segments_scanned : Int
conflicts : Int
evictions : Int
bundle_splits : Int
second_chance_attempts : Int
max_queue_length : Int
} derive(ToJson)fn begin_function(func_idx : Int, func_name : String, opt_level : Int, ir_insts_before : Int) -> Unitfn record_compile_subphase_us(phase_name : String, duration_us : Int64, parent? : String) -> Unitfn record_ir_pass(pass_name : String, before_insts : Int, after_insts : Int, changed : Bool, duration_us : Int64, rewrite_attempts? : Int?, rewrite_apps? : Int?, rewrite_created_insts? : Int?, work_done? : Int?, value_lookup_probes? : Int?, budget_exhausted? : Bool?) -> Unitfn record_module_subphase_us(phase_name : String, duration_us : Int64) -> Unitfn record_regalloc_loop(queue_pops : Int, register_probes : Int, occupied_segments_scanned : Int, conflicts : Int, evictions : Int, bundle_splits : Int, second_chance_attempts : Int, max_queue_length : Int) -> Unitfn record_regalloc_phase_us(phase_name : String, duration_us : Int64) -> Unitfn record_regalloc_stats(spill_slots : Int, spills : Int, reloads : Int, reg_moves : Int, spill_to_spill : Int) -> Unit