MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / basic_data_context

Function basic_data_context

cranelift/module/src/data_context.rs:195–243  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

193
194 #[test]
195 fn basic_data_context() {
196 let mut data = DataDescription::new();
197 assert_eq!(data.init, Init::Uninitialized);
198 assert!(data.function_decls.is_empty());
199 assert!(data.data_decls.is_empty());
200 assert!(data.function_relocs.is_empty());
201 assert!(data.data_relocs.is_empty());
202
203 data.define_zeroinit(256);
204
205 let _func_a = data.import_function(ModuleRelocTarget::user(0, 0));
206 let func_b = data.import_function(ModuleRelocTarget::user(0, 1));
207 let func_c = data.import_function(ModuleRelocTarget::user(0, 2));
208 let _data_a = data.import_global_value(ModuleRelocTarget::user(0, 3));
209 let data_b = data.import_global_value(ModuleRelocTarget::user(0, 4));
210
211 data.write_function_addr(8, func_b);
212 data.write_function_addr(16, func_c);
213 data.write_data_addr(32, data_b, 27);
214
215 assert_eq!(data.init, Init::Zeros { size: 256 });
216 assert_eq!(data.function_decls.len(), 3);
217 assert_eq!(data.data_decls.len(), 2);
218 assert_eq!(data.function_relocs.len(), 2);
219 assert_eq!(data.data_relocs.len(), 1);
220
221 data.clear();
222
223 assert_eq!(data.init, Init::Uninitialized);
224 assert!(data.function_decls.is_empty());
225 assert!(data.data_decls.is_empty());
226 assert!(data.function_relocs.is_empty());
227 assert!(data.data_relocs.is_empty());
228
229 let contents = vec![33, 34, 35, 36];
230 let contents_clone = contents.clone();
231 data.define(contents.into_boxed_slice());
232
233 assert_eq!(
234 data.init,
235 Init::Bytes {
236 contents: contents_clone.into_boxed_slice()
237 }
238 );
239 assert_eq!(data.function_decls.len(), 0);
240 assert_eq!(data.data_decls.len(), 0);
241 assert_eq!(data.function_relocs.len(), 0);
242 assert_eq!(data.data_relocs.len(), 0);
243 }
244}

Callers

nothing calls this directly

Calls 10

define_zeroinitMethod · 0.80
import_global_valueMethod · 0.80
write_function_addrMethod · 0.80
write_data_addrMethod · 0.80
newFunction · 0.50
import_functionMethod · 0.45
clearMethod · 0.45
cloneMethod · 0.45
defineMethod · 0.45
into_boxed_sliceMethod · 0.45

Tested by

no test coverage detected