Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bytecodealliance
GitHub Repository: bytecodealliance/wasmtime
Path: blob/main/pulley/fuzz/src/roundtrip.rs
2450 views
1
use pulley_interpreter::{
2
decode::{Decoder, SafeBytecodeStream},
3
op::{MaterializeOpsVisitor, Op},
4
};
5
6
pub fn roundtrip(ops: Vec<Op>) {
7
let _ = env_logger::try_init();
8
9
log::trace!("input: {ops:#?}");
10
11
let mut encoded = vec![];
12
for op in &ops {
13
let before = encoded.len();
14
op.encode(&mut encoded);
15
let size = encoded.len() - before;
16
assert_eq!(size, op.width().into());
17
}
18
log::trace!("encoded: {encoded:?}");
19
20
let mut materializer = MaterializeOpsVisitor::new(SafeBytecodeStream::new(&encoded));
21
let decoded = Decoder::decode_all(&mut materializer).expect("should decode okay");
22
log::trace!("decoded: {decoded:#?}");
23
24
assert_eq!(
25
decoded, ops,
26
"`decode(encode(ops))` should be equal to the original `ops`"
27
);
28
}
29
30