fix: exercise precise region tracking through its ObjectStore owner
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user