Skip to content

Commit 1817177

Browse files
committed
Update utility for dumping logs to support the traces
Signed-off-by: Doru Blânzeanu <dblnz@pm.me>
1 parent dc7c10b commit 1817177

File tree

1 file changed

+40
-2
lines changed

1 file changed

+40
-2
lines changed

src/trace_dump/main.rs

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,21 @@ use std::rc::Rc;
2323
use std::sync::Mutex;
2424
use std::time::Duration;
2525

26-
use piet_common::{kurbo, Color, RenderContext, Text, TextLayout, TextLayoutBuilder};
26+
use piet_common::{Color, RenderContext, Text, TextLayout, TextLayoutBuilder, kurbo};
2727

28+
fn read_u8_vec(inf: &mut File) -> Option<Vec<u8>> {
29+
let len = read_u64(inf)?;
30+
let mut vec = Vec::with_capacity(len as usize);
31+
for _ in 0..len {
32+
vec.push(read_u8(inf)?);
33+
}
34+
Some(vec)
35+
}
36+
fn read_u8(inf: &mut File) -> Option<u8> {
37+
let mut bytes: [u8; 1] = [0; 1];
38+
inf.read_exact(&mut bytes).ok()?;
39+
Some(u8::from_ne_bytes(bytes))
40+
}
2841
fn read_u128(inf: &mut File) -> Result<u128, std::io::Error> {
2942
let mut bytes: [u8; 16] = [0; 16];
3043
inf.read_exact(&mut bytes)?;
@@ -92,6 +105,13 @@ fn dump_free(
92105
Some(())
93106
}
94107

108+
fn dump_trace_record(_state: &mut State, _rs: &mut (), now: Duration, msg: Rc<[u8]>) -> Option<()> {
109+
let msg = String::from_utf8_lossy(&msg);
110+
println!("\n[{:9?}] {}", now, msg);
111+
112+
Some(())
113+
}
114+
95115
// todo: this should use something more reasonable than a hash table
96116
// for each node. let's measure the out-degree and see if a small
97117
// array is better, to start.
@@ -542,19 +562,30 @@ fn render_free(
542562
Some(())
543563
}
544564

545-
fn read_file<I, U, A, F, S>(
565+
fn render_trace_record(
566+
_state: &mut State,
567+
_rs: &mut RenderState,
568+
_now: Duration,
569+
_msg: Rc<[u8]>,
570+
) -> Option<()> {
571+
Some(())
572+
}
573+
574+
fn read_file<I, U, A, F, T, S>(
546575
state: &mut State,
547576
mut handle_state: S,
548577
handle_ident: I,
549578
handle_unwind: U,
550579
handle_alloc: A,
551580
handle_free: F,
581+
handle_trace_record: T,
552582
) -> Option<()>
553583
where
554584
I: Fn(&mut State, &mut S, Duration, blake3::Hash) -> Option<()>,
555585
U: Fn(&mut State, &mut S, Duration, Rc<[u64]>) -> Option<()>,
556586
A: Fn(&mut State, &mut S, Duration, u64, u64, Rc<[u64]>) -> Option<()>,
557587
F: Fn(&mut State, &mut S, Duration, u64, u64, Rc<[u64]>) -> Option<()>,
588+
T: Fn(&mut State, &mut S, Duration, Rc<[u8]>) -> Option<()>,
558589
{
559590
loop {
560591
let time = match read_u128(&mut state.inf) {
@@ -600,6 +631,9 @@ where
600631
let trace = amt_trace.1.clone();
601632
state.total -= amt;
602633
handle_free(state, &mut handle_state, now, ptr, amt, trace)?;
634+
} else if frame_id == 4 {
635+
let msg = read_u8_vec(&mut state.inf)?.into();
636+
handle_trace_record(state, &mut handle_state, now, msg)?;
603637
} else {
604638
return None;
605639
}
@@ -699,6 +733,7 @@ fn spawn_render_thread(
699733
render_unwind,
700734
render_alloc,
701735
render_free,
736+
render_trace_record,
702737
)?;
703738
bar_ffmpeg.wait().ok()?;
704739
flame_ffmpeg.wait().ok()?;
@@ -755,6 +790,7 @@ fn dump_trace(mut state: State) {
755790
dump_unwind,
756791
dump_alloc,
757792
dump_free,
793+
dump_trace_record,
758794
);
759795
}
760796

@@ -771,6 +807,7 @@ fn plot_mem(args: Vec<String>, mut state: State) {
771807
|_, _, _, _| Some(()),
772808
|_, _, _, _, _, _| Some(()),
773809
|_, _, _, _, _, _| Some(()),
810+
|_, _, _, _| Some(()),
774811
) {
775812
Some(()) => (),
776813
None => {
@@ -810,6 +847,7 @@ fn plot_mem(args: Vec<String>, mut state: State) {
810847
|_, _, _, _| Some(()),
811848
count_frame,
812849
count_frame,
850+
|_, _, _, _| Some(()),
813851
);
814852
if state.num_durations > 0 {
815853
(*jobs.lock().unwrap()).push((*start_duration.lock().unwrap(), state.max_duration));

0 commit comments

Comments
 (0)