@@ -2335,50 +2335,34 @@ impl ComponentInstance {
23352335 ( store, options)
23362336 } ;
23372337
2338- if wait {
2338+ let ( ordinal , handle , result ) = if wait {
23392339 self . get_mut ( params. set ) ?. waiting . remove ( & guest_task) ;
2340-
23412340 let ( event, handle) =
23422341 event_and_handle. ok_or_else ( || anyhow ! ( "no waitables to wait for" ) ) ?;
2343-
23442342 let ( ordinal, result) = event. parts ( ) ;
2345- let ( store, options) = store_and_options ( self ) ;
2346- let ptr = func:: validate_inbounds :: < ( u32 , u32 ) > (
2347- options. memory_mut ( store) ,
2348- & ValRaw :: u32 ( params. payload ) ,
2349- ) ?;
2350- options. memory_mut ( store) [ ptr + 0 ..] [ ..4 ]
2351- . copy_from_slice ( & handle. to_le_bytes ( ) ) ;
2352- options. memory_mut ( store) [ ptr + 4 ..] [ ..4 ]
2353- . copy_from_slice ( & result. to_le_bytes ( ) ) ;
2354-
2355- Ok ( ordinal)
2343+ ( ordinal, handle, result)
23562344 } else {
23572345 if let Some ( ( event, handle) ) = event_and_handle {
23582346 let ( ordinal, result) = event. parts ( ) ;
2359- let ( store, options) = store_and_options ( self ) ;
2360- let ptr = func:: validate_inbounds :: < ( u32 , u32 , u32 ) > (
2361- options. memory_mut ( store) ,
2362- & ValRaw :: u32 ( params. payload ) ,
2363- ) ?;
2364- options. memory_mut ( store) [ ptr + 0 ..] [ ..4 ]
2365- . copy_from_slice ( & ordinal. to_le_bytes ( ) ) ;
2366- options. memory_mut ( store) [ ptr + 4 ..] [ ..4 ]
2367- . copy_from_slice ( & handle. to_le_bytes ( ) ) ;
2368- options. memory_mut ( store) [ ptr + 8 ..] [ ..4 ]
2369- . copy_from_slice ( & result. to_le_bytes ( ) ) ;
2370-
2371- Ok ( 1 )
2347+ ( ordinal, handle, result)
23722348 } else {
23732349 log:: trace!(
23742350 "no events ready to deliver via waitable-set.poll to {}; set {}" ,
23752351 guest_task. rep( ) ,
23762352 params. set. rep( )
23772353 ) ;
2378-
2379- Ok ( 0 )
2354+ let ( ordinal , result ) = Event :: None . parts ( ) ;
2355+ ( ordinal , 0 , result )
23802356 }
2381- }
2357+ } ;
2358+ let ( store, options) = store_and_options ( self ) ;
2359+ let ptr = func:: validate_inbounds :: < ( u32 , u32 ) > (
2360+ options. memory_mut ( store) ,
2361+ & ValRaw :: u32 ( params. payload ) ,
2362+ ) ?;
2363+ options. memory_mut ( store) [ ptr + 0 ..] [ ..4 ] . copy_from_slice ( & handle. to_le_bytes ( ) ) ;
2364+ options. memory_mut ( store) [ ptr + 4 ..] [ ..4 ] . copy_from_slice ( & result. to_le_bytes ( ) ) ;
2365+ Ok ( ordinal)
23822366 }
23832367 WaitableCheck :: Yield => Ok ( 0 ) ,
23842368 } ;
0 commit comments