@@ -91,10 +91,10 @@ var emnapiAWMT = {
9191 emnapiAWMT . globalAddress = _malloc ( to64 ( 'emnapiAWMT.globalOffset.end' ) as number )
9292 // Ensure the shared state is zero-initialized before use so that
9393 // idle_threads/mutex/cond and related fields start from a known state.
94+ from64 ( 'emnapiAWMT.globalAddress' )
9495 const size = emnapiAWMT . globalOffset . end
9596 const addr = emnapiAWMT . globalAddress
9697 new Uint8Array ( wasmMemory . buffer , addr , size ) . fill ( 0 )
97- from64 ( 'emnapiAWMT.globalAddress' )
9898 emnapiAWMT . queueInit ( emnapiAWMT . globalAddress + emnapiAWMT . globalOffset . q )
9999 emnapiAWMT . queueInit ( emnapiAWMT . globalAddress + emnapiAWMT . globalOffset . exit_message )
100100 }
@@ -126,16 +126,18 @@ var emnapiAWMT = {
126126 if ( index === 0 ) {
127127 return Promise . reject ( new Error ( 'Failed to create async worker' ) )
128128 }
129- if ( index > 0 ) {
130- const view = new DataView ( wasmMemory . buffer )
131- const tidOffset = 20
132- const tid = view . getInt32 ( index + tidOffset , true )
133- const worker = PThread . pthreads [ tid ]
134- return worker . whenLoaded !
135- } else {
136- const worker = emnapiAWMT . pool [ - index - 1 ]
137- return worker . whenLoaded !
129+ let worker : any
130+ if ( index < 0 ) {
131+ worker = emnapiAWMT . pool [ - index - 1 ]
132+ if ( worker ) return worker . whenLoaded
138133 }
134+ from64 ( 'index' )
135+
136+ const view = new DataView ( wasmMemory . buffer )
137+ const tidOffset = 20
138+ const tid = view . getInt32 ( index + tidOffset , true )
139+ worker = PThread . pthreads [ tid ]
140+ return worker . whenLoaded !
139141 } )
140142 emnapiAWMT . workerReady = Promise . all ( promises ) as any
141143 return emnapiAWMT . workerReady as Promise < any >
@@ -351,6 +353,7 @@ export var napi_create_async_work = singleThreadAsyncWork
351353
352354 // eslint-disable-next-line @typescript-eslint/no-unused-vars
353355 const id = emnapiAWST . create ( env , resourceObject , resourceName , execute , complete , data )
356+ from64 ( 'result' )
354357 makeSetValue ( 'result' , 0 , 'id' , '*' )
355358 return envObject . clearLastError ( )
356359 }
@@ -371,6 +374,7 @@ export var napi_create_async_work = singleThreadAsyncWork
371374 const sizeofAW = emnapiAWMT . offset . end
372375 const aw = _malloc ( to64 ( 'sizeofAW' ) )
373376 if ( ! aw ) return envObject . setLastError ( napi_status . napi_generic_failure )
377+ from64 ( 'aw' )
374378 new Uint8Array ( wasmMemory . buffer ) . subarray ( aw , aw + sizeofAW ) . fill ( 0 )
375379 const s = envObject . ensureHandleId ( resourceObject )
376380 const resourceRef = emnapiCtx . createReference ( envObject , s , 1 , ReferenceOwnership . kUserland as any )
@@ -393,14 +397,14 @@ export var napi_delete_async_work = singleThreadAsyncWork
393397 ? function ( env : napi_env , work : number ) : napi_status {
394398 const envObject : Env = $CHECK_ENV_NOT_IN_GC ! ( env )
395399 $CHECK_ARG ! ( envObject , work )
396-
400+ from64 ( 'work' )
397401 emnapiAWST . remove ( work )
398402 return envObject . clearLastError ( )
399403 }
400404 : function ( env : napi_env , work : number ) : napi_status {
401405 const envObject : Env = $CHECK_ENV_NOT_IN_GC ! ( env )
402406 $CHECK_ARG ! ( envObject , work )
403-
407+ from64 ( 'work' )
404408 const resource = emnapiAWMT . getResource ( work )
405409 emnapiCtx . refStore . get ( resource ) ! . dispose ( )
406410
@@ -421,15 +425,15 @@ export var napi_queue_async_work = singleThreadAsyncWork
421425 $CHECK_ENV ! ( env )
422426 const envObject = emnapiCtx . envStore . get ( env ) !
423427 $CHECK_ARG ! ( envObject , work )
424-
428+ from64 ( 'work' )
425429 emnapiAWST . queue ( work )
426430 return envObject . clearLastError ( )
427431 }
428432 : function ( env : napi_env , work : number ) : napi_status {
429433 $CHECK_ENV ! ( env )
430434 const envObject = emnapiCtx . envStore . get ( env ) !
431435 $CHECK_ARG ! ( envObject , work )
432-
436+ from64 ( 'work' )
433437 emnapiAWMT . scheduleWork ( work )
434438 return envObject . clearLastError ( )
435439 }
@@ -440,7 +444,7 @@ export var napi_cancel_async_work = singleThreadAsyncWork
440444 $CHECK_ENV ! ( env )
441445 const envObject = emnapiCtx . envStore . get ( env ) !
442446 $CHECK_ARG ! ( envObject , work )
443-
447+ from64 ( 'work' )
444448 const status = emnapiAWST . cancel ( work )
445449 if ( status === napi_status . napi_ok ) return envObject . clearLastError ( )
446450 return envObject . setLastError ( status )
@@ -449,14 +453,15 @@ export var napi_cancel_async_work = singleThreadAsyncWork
449453 $CHECK_ENV ! ( env )
450454 const envObject = emnapiCtx . envStore . get ( env ) !
451455 $CHECK_ARG ! ( envObject , work )
452-
456+ from64 ( 'work' )
453457 const status = emnapiAWMT . cancelWork ( work )
454458 if ( status === napi_status . napi_ok ) return envObject . clearLastError ( )
455459 return envObject . setLastError ( status )
456460 }
457461
458462/** @__sig pp */
459463export function _emnapi_async_worker ( globalAddress : number ) : number {
464+ from64 ( 'globalAddress' )
460465 emnapiAWMT . globalAddress = globalAddress
461466 const mutex = emnapiAWMT . getMutex ( )
462467 const cond = emnapiAWMT . getCond ( )
0 commit comments