From f07f708ee85199f3c11be530c6abbb55053f92b8 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Mon, 7 Sep 2026 16:03:10 +0000 Subject: [PATCH] Back the owned-item tests' lanes with word storage --- .../libraries/core-types/src/record/run.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/node-graph/libraries/core-types/src/record/run.rs b/node-graph/libraries/core-types/src/record/run.rs index 704090f849..de34627934 100644 --- a/node-graph/libraries/core-types/src/record/run.rs +++ b/node-graph/libraries/core-types/src/record/run.rs @@ -788,20 +788,21 @@ mod tests { fn owned_items_replay_re_parked_payloads_after_the_source_dies() { let layout = Layout::default().with_writes(0, element_write_hashed::(), &[FieldWrite::of::(0)]); let stride = layout.lane_stride(); - let mut bytes = vec![0u8; stride * 2]; + // Word storage: the parked element and the `&str` field are 8-aligned. + let mut bytes = vec![0u64; (stride * 2).div_ceil(8)]; let owned = { let arena = crate::arena::Arena::new(1024).unwrap(); for lane in 0..2 { - let base = unsafe { bytes.as_mut_ptr().add(lane * stride) }; + let base = unsafe { bytes.as_mut_ptr().cast::().add(lane * stride) }; unsafe { write_element(base, format!("element {lane}"), &arena) }.unwrap(); let (name, _) = arena.alloc(format!("field {lane}")).unwrap(); unsafe { write_field::<&str>(base, layout.offset_of("name", 0).unwrap(), name.as_str()) }; } - let item = unsafe { GroupItem::from_resident(crate::node::RecordBatch::new(bytes.as_ptr(), 2, &layout)) }; + let item = unsafe { GroupItem::from_resident(crate::node::RecordBatch::new(bytes.as_ptr().cast(), 2, &layout)) }; item.copy_out() }; - bytes.fill(u8::MAX); + bytes.fill(u64::MAX); let arena = crate::arena::Arena::new(1024).unwrap(); let replayed = owned.replay(&arena).unwrap(); @@ -882,10 +883,11 @@ mod tests { #[should_panic(expected = "an owned item replays")] fn an_owned_item_refuses_reads() { let layout = Layout::default().with_writes(0, element_write_hashed::(), &[]); - let mut bytes = vec![0u8; layout.lane_stride()]; + // Word storage: the parked element slot holds an 8-aligned reference. + let mut bytes = vec![0u64; layout.lane_stride().div_ceil(8)]; let arena = crate::arena::Arena::new(1024).unwrap(); - unsafe { write_element(bytes.as_mut_ptr(), String::from("parked"), &arena) }.unwrap(); - let item = unsafe { GroupItem::from_resident(crate::node::RecordBatch::new(bytes.as_ptr(), 1, &layout)) }; + unsafe { write_element(bytes.as_mut_ptr().cast(), String::from("parked"), &arena) }.unwrap(); + let item = unsafe { GroupItem::from_resident(crate::node::RecordBatch::new(bytes.as_ptr().cast(), 1, &layout)) }; item.copy_out().lanes(); } }