fix: exercise precise region tracking through its ObjectStore owner

This commit is contained in:
2026-10-24 01:41:36 +08:00
parent 42c27d083d
commit ee68a0c54c
+11 -11
View File
@@ -1786,13 +1786,13 @@ fn named_reads_ignore_unrelated_globals_but_track_missing_shadow_and_payload_kin
#[test]
fn precise_nested_regions_replay_borrowed_dependencies_without_hiding_full_dict_reads() {
let mut vm = Vm::new().unwrap();
let mut vm = endor_core::ObjectStore::new().unwrap();
let globals = vm.new_dict().unwrap();
vm.dict_set(globals, text("name"), text("value")).unwrap();
let scope = vm.object_store_mut().begin_read_only();
let token = vm.object_store().begin_read_tracking().unwrap();
vm.object_store().dict_get_name(globals, "name").unwrap();
let tracked = vm.object_store().end_read_tracking_precise(token).unwrap();
let scope = vm.begin_read_only();
let token = vm.begin_read_tracking().unwrap();
vm.dict_get_name(globals, "name").unwrap();
let tracked = vm.end_read_tracking_precise(token).unwrap();
assert!(
tracked
.accesses
@@ -1800,25 +1800,25 @@ fn precise_nested_regions_replay_borrowed_dependencies_without_hiding_full_dict_
.any(|access| access.object == globals)
);
for dependency in &tracked.dependencies {
assert!(vm.object_store().read_dependency_valid(dependency));
assert!(vm.read_dependency_valid(dependency));
}
let reads = vm.object_store_mut().end_read_only_precise(scope).unwrap();
let reads = vm.end_read_only_precise(scope).unwrap();
vm.dict_set(globals, text("other"), Value::Nil).unwrap();
assert!(
reads
.dependencies
.iter()
.all(|dependency| vm.object_store().read_dependency_valid(dependency))
.all(|dependency| vm.read_dependency_valid(dependency))
);
let scope = vm.object_store_mut().begin_read_only();
let scope = vm.begin_read_only();
vm.dict_items(globals).unwrap();
let reads = vm.object_store_mut().end_read_only_precise(scope).unwrap();
let reads = vm.end_read_only_precise(scope).unwrap();
vm.dict_set(globals, text("third"), Value::Nil).unwrap();
assert!(
reads
.dependencies
.iter()
.any(|dependency| !vm.object_store().read_dependency_valid(dependency))
.any(|dependency| !vm.read_dependency_valid(dependency))
);
vm.release(globals).unwrap();
assert_eq!(vm.object_count(), 0);