mirror of
https://github.com/ruby/ruby.git
synced 2025-08-24 21:44:30 +02:00
vm_trace.c: workqueue as thread-safe version of postponed_job
postponed_job is safe to use in signal handlers, but is not thread-safe for MJIT. Implement a workqueue for MJIT thread-safety. [Bug #15316] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66100 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
d7e4e50bdb
commit
eb38fb670b
5 changed files with 67 additions and 20 deletions
14
mjit.c
14
mjit.c
|
@ -106,20 +106,6 @@ mjit_gc_finish_hook(void)
|
|||
CRITICAL_SECTION_FINISH(4, "mjit_gc_finish_hook");
|
||||
}
|
||||
|
||||
/* Wrap critical section to prevent [Bug #15316] */
|
||||
void
|
||||
mjit_postponed_job_register_start_hook(void)
|
||||
{
|
||||
CRITICAL_SECTION_START(4, "mjit_postponed_job_register_start_hook");
|
||||
}
|
||||
|
||||
/* Unwrap critical section of mjit_postponed_job_register_start_hook() */
|
||||
void
|
||||
mjit_postponed_job_register_finish_hook(void)
|
||||
{
|
||||
CRITICAL_SECTION_FINISH(4, "mjit_postponed_job_register_finish_hook");
|
||||
}
|
||||
|
||||
/* Iseqs can be garbage collected. This function should call when it
|
||||
happens. It removes iseq from the unit. */
|
||||
void
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue