[ruby/zlib] Add support for safe offload of nogvl code.
(https://github.com/ruby/zlib/pull/89) https://github.com/ruby/zlib/commit/a535271862
This commit is contained in:
parent
b143fd5bd8
commit
f6e6e66870
@ -1042,6 +1042,11 @@ zstream_unblock_func(void *ptr)
|
|||||||
args->interrupt = 1;
|
args->interrupt = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef RB_NOGVL_OFFLOAD_SAFE
|
||||||
|
// Default to no-op if it's not defined:
|
||||||
|
#define RB_NOGVL_OFFLOAD_SAFE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
zstream_run_once_begin(VALUE _arguments)
|
zstream_run_once_begin(VALUE _arguments)
|
||||||
{
|
{
|
||||||
@ -1053,7 +1058,7 @@ zstream_run_once_begin(VALUE _arguments)
|
|||||||
#ifndef RB_NOGVL_UBF_ASYNC_SAFE
|
#ifndef RB_NOGVL_UBF_ASYNC_SAFE
|
||||||
return (VALUE)rb_thread_call_without_gvl(zstream_run_once, (void *)arguments, zstream_unblock_func, (void *)arguments);
|
return (VALUE)rb_thread_call_without_gvl(zstream_run_once, (void *)arguments, zstream_unblock_func, (void *)arguments);
|
||||||
#else
|
#else
|
||||||
return (VALUE)rb_nogvl(zstream_run_once, (void *)arguments, zstream_unblock_func, (void *)arguments, RB_NOGVL_UBF_ASYNC_SAFE);
|
return (VALUE)rb_nogvl(zstream_run_once, (void *)arguments, zstream_unblock_func, (void *)arguments, RB_NOGVL_UBF_ASYNC_SAFE | RB_NOGVL_OFFLOAD_SAFE);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user