@@ -147,12 +147,7 @@ impl SharedMemoryOps for ThreadConditionsHandle {
147147 let count = self
148148 . upgrade ( )
149149 . ok_or ( crate :: AtomicsError :: Unimplemented ) ?
150- . do_notify (
151- wasmer_vm:: NotifyLocation {
152- address : dst. address ,
153- } ,
154- count,
155- ) ;
150+ . do_notify ( dst. address , count) ;
156151 Ok ( count)
157152 }
158153
@@ -161,20 +156,25 @@ impl SharedMemoryOps for ThreadConditionsHandle {
161156 dst : MemoryLocation ,
162157 timeout : Option < std:: time:: Duration > ,
163158 ) -> Result < u32 , crate :: AtomicsError > {
164- self . upgrade ( )
165- . ok_or ( crate :: AtomicsError :: Unimplemented ) ?
166- . do_wait (
167- wasmer_vm:: NotifyLocation {
168- address : dst. address ,
169- } ,
170- timeout,
171- )
172- . map_err ( |e| match e {
173- wasmer_vm:: WaiterError :: Unimplemented => crate :: AtomicsError :: Unimplemented ,
174- wasmer_vm:: WaiterError :: TooManyWaiters => crate :: AtomicsError :: TooManyWaiters ,
175- wasmer_vm:: WaiterError :: AtomicsDisabled => crate :: AtomicsError :: AtomicsDisabled ,
176- _ => crate :: AtomicsError :: Unimplemented ,
177- } )
159+ // Safety: `ExpectedValue::None` has no safety requirements.
160+ unsafe {
161+ self . upgrade ( )
162+ . ok_or ( crate :: AtomicsError :: Unimplemented ) ?
163+ . do_wait (
164+ wasmer_vm:: NotifyLocation {
165+ memory_base : std:: ptr:: null_mut ( ) ,
166+ address : dst. address ,
167+ } ,
168+ wasmer_vm:: ExpectedValue :: None ,
169+ timeout,
170+ )
171+ . map_err ( |e| match e {
172+ wasmer_vm:: WaiterError :: Unimplemented => crate :: AtomicsError :: Unimplemented ,
173+ wasmer_vm:: WaiterError :: TooManyWaiters => crate :: AtomicsError :: TooManyWaiters ,
174+ wasmer_vm:: WaiterError :: AtomicsDisabled => crate :: AtomicsError :: AtomicsDisabled ,
175+ _ => crate :: AtomicsError :: Unimplemented ,
176+ } )
177+ }
178178 }
179179
180180 fn disable_atomics ( & self ) -> Result < ( ) , MemoryError > {
0 commit comments