@@ -338,40 +338,27 @@ rbffi_SetupCallParams(int argc, VALUE* argv, int paramCount, Type** paramTypes,
338338 }
339339}
340340
341-
342- typedef struct BlockingCall_ {
343- rbffi_frame_t * frame ;
344- void * function ;
345- FunctionType * info ;
346- void * * ffiValues ;
347- void * retval ;
348- void * params ;
349- #if !(defined(HAVE_RB_THREAD_BLOCKING_REGION ) || defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL ))
350- void * stkretval ;
351- #endif
352- } BlockingCall ;
353-
354341static VALUE
355342call_blocking_function (void * data )
356343{
357- BlockingCall * b = (BlockingCall * ) data ;
344+ rbffi_blocking_call_t * b = (rbffi_blocking_call_t * ) data ;
358345 b -> frame -> has_gvl = false;
359- ffi_call (& b -> info -> ffi_cif , FFI_FN (b -> function ), b -> retval , b -> ffiValues );
346+ ffi_call (& b -> cif , FFI_FN (b -> function ), b -> retval , b -> ffiValues );
360347 b -> frame -> has_gvl = true;
361348
362349 return Qnil ;
363350}
364351
365- static VALUE
366- do_blocking_call (void * data )
352+ VALUE
353+ rbffi_do_blocking_call (void * data )
367354{
368355 rbffi_thread_blocking_region (call_blocking_function , data , (void * ) -1 , NULL );
369356
370357 return Qnil ;
371358}
372359
373- static VALUE
374- save_frame_exception (void * data , VALUE exc )
360+ VALUE
361+ rbffi_save_frame_exception (void * data , VALUE exc )
375362{
376363 rbffi_frame_t * frame = (rbffi_frame_t * ) data ;
377364 frame -> exc = exc ;
@@ -390,7 +377,7 @@ rbffi_CallFunction(int argc, VALUE* argv, void* function, FunctionType* fnInfo)
390377 retval = alloca (MAX (fnInfo -> ffi_cif .rtype -> size , FFI_SIZEOF_ARG ));
391378
392379 if (unlikely (fnInfo -> blocking )) {
393- BlockingCall * bc ;
380+ rbffi_blocking_call_t * bc ;
394381
395382 /*
396383 * due to the way thread switching works on older ruby variants, we
@@ -399,16 +386,16 @@ rbffi_CallFunction(int argc, VALUE* argv, void* function, FunctionType* fnInfo)
399386#if defined(HAVE_RB_THREAD_BLOCKING_REGION ) || defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL )
400387 ffiValues = ALLOCA_N (void * , fnInfo -> parameterCount );
401388 params = ALLOCA_N (FFIStorage , fnInfo -> parameterCount );
402- bc = ALLOCA_N (BlockingCall , 1 );
389+ bc = ALLOCA_N (rbffi_blocking_call_t , 1 );
403390 bc -> retval = retval ;
404391#else
405392 ffiValues = ALLOC_N (void * , fnInfo -> parameterCount );
406393 params = ALLOC_N (FFIStorage , fnInfo -> parameterCount );
407- bc = ALLOC_N (BlockingCall , 1 );
394+ bc = ALLOC_N (rbffi_blocking_call_t , 1 );
408395 bc -> retval = xmalloc (MAX (fnInfo -> ffi_cif .rtype -> size , FFI_SIZEOF_ARG ));
409396 bc -> stkretval = retval ;
410397#endif
411- bc -> info = fnInfo ;
398+ bc -> cif = fnInfo -> ffi_cif ;
412399 bc -> function = function ;
413400 bc -> ffiValues = ffiValues ;
414401 bc -> params = params ;
@@ -419,11 +406,11 @@ rbffi_CallFunction(int argc, VALUE* argv, void* function, FunctionType* fnInfo)
419406 fnInfo -> callbackParameters , fnInfo -> callbackCount , fnInfo -> rbEnums );
420407
421408 rbffi_frame_push (& frame );
422- rb_rescue2 (do_blocking_call , (VALUE ) bc , save_frame_exception , (VALUE ) & frame , rb_eException , (VALUE ) 0 );
409+ rb_rescue2 (rbffi_do_blocking_call , (VALUE ) bc , rbffi_save_frame_exception , (VALUE ) & frame , rb_eException , (VALUE ) 0 );
423410 rbffi_frame_pop (& frame );
424411
425412#if !(defined(HAVE_RB_THREAD_BLOCKING_REGION ) || defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL ))
426- memcpy (bc -> stkretval , bc -> retval , MAX (bc -> info -> ffi_cif .rtype -> size , FFI_SIZEOF_ARG ));
413+ memcpy (bc -> stkretval , bc -> retval , MAX (bc -> cif .rtype -> size , FFI_SIZEOF_ARG ));
427414 xfree (bc -> params );
428415 xfree (bc -> ffiValues );
429416 xfree (bc -> retval );
0 commit comments