1
Fork 0

Add test and remove double ref

This commit is contained in:
Celina G. Val 2023-10-23 21:35:30 -07:00
parent 421631a3a1
commit ae86f59cc9
3 changed files with 85 additions and 18 deletions

View file

@ -142,7 +142,7 @@ scoped_thread_local! (static TLV: Cell<*const ()>);
pub(crate) fn init<'tcx>(tables: &TablesWrapper<'tcx>, f: impl FnOnce()) {
assert!(!TLV.is_set());
let ptr: *const () = &tables as *const &_ as _;
let ptr = tables as *const _ as *const ();
TLV.set(&Cell::new(ptr), || {
f();
});
@ -155,8 +155,8 @@ pub(crate) fn with_tables<'tcx, R>(f: impl FnOnce(&mut Tables<'tcx>) -> R) -> R
TLV.with(|tlv| {
let ptr = tlv.get();
assert!(!ptr.is_null());
let wrapper = unsafe { *(ptr as *const &TablesWrapper<'tcx>) };
let mut tables = wrapper.0.borrow_mut();
let wrapper = ptr as *const TablesWrapper<'tcx>;
let mut tables = unsafe { (*wrapper).0.borrow_mut() };
f(&mut *tables)
})
}