Bug #13014 » ruby-trunk-add-setjmp-volatile-2.diff
| cont.c (working copy) | ||
|---|---|---|
|
if (!(ptr)) rb_raise(rb_eFiberError, "uninitialized fiber"); \
|
||
|
} while (0)
|
||
|
NOINLINE(static VALUE cont_capture(volatile int *stat));
|
||
|
NOINLINE(static VALUE cont_capture(int *volatile stat));
|
||
|
#define THREAD_MUST_BE_RUNNING(th) do { \
|
||
|
if (!(th)->tag) rb_raise(rb_eThreadError, "not running thread"); \
|
||
| ... | ... | |
|
}
|
||
|
static VALUE
|
||
|
cont_capture(volatile int *stat)
|
||
|
#if defined(__clang__) && \
|
||
|
__clang_major__ == 3 && __clang_minor__ == 8 && __clang_patch__ == 0
|
||
|
__attribute__ ((optnone))
|
||
|
#endif
|
||
|
cont_capture(int *volatile stat)
|
||
|
{
|
||
|
rb_context_t *cont;
|
||
|
rb_context_t *volatile cont;
|
||
|
rb_thread_t *th = GET_THREAD();
|
||
|
volatile VALUE contval;
|
||
| eval.c (working copy) | ||
|---|---|---|
|
{
|
||
|
int state;
|
||
|
rb_thread_t *th = GET_THREAD();
|
||
|
rb_control_frame_t *cfp = th->cfp;
|
||
|
rb_control_frame_t *volatile cfp = th->cfp;
|
||
|
volatile VALUE result = Qfalse;
|
||
|
volatile VALUE e_info = th->errinfo;
|
||
|
va_list args;
|
||
| ... | ... | |
|
volatile VALUE result = Qnil;
|
||
|
volatile int status;
|
||
|
rb_thread_t *th = GET_THREAD();
|
||
|
rb_control_frame_t *cfp = th->cfp;
|
||
|
rb_control_frame_t *volatile cfp = th->cfp;
|
||
|
struct rb_vm_protect_tag protect_tag;
|
||
|
rb_jmpbuf_t org_jmpbuf;
|
||
| eval_error.c (working copy) | ||
|---|---|---|
|
}
|
||
|
void
|
||
|
rb_threadptr_error_print(rb_thread_t *th, VALUE errinfo)
|
||
|
rb_threadptr_error_print(rb_thread_t *volatile th, volatile VALUE errinfo)
|
||
|
{
|
||
|
volatile VALUE errat = Qundef;
|
||
|
int raised_flag = th->raised_flag;
|
||
|
volatile int raised_flag = th->raised_flag;
|
||
|
volatile VALUE eclass = Qundef, e = Qundef;
|
||
|
const char *volatile einfo;
|
||
|
volatile long elen;
|
||
| thread.c (working copy) | ||
|---|---|---|
|
void
|
||
|
rb_thread_terminate_all(void)
|
||
|
{
|
||
|
rb_thread_t *th = GET_THREAD(); /* main thread */
|
||
|
rb_vm_t *vm = th->vm;
|
||
|
rb_thread_t *volatile th = GET_THREAD(); /* main thread */
|
||
|
rb_vm_t *volatile vm = th->vm;
|
||
|
volatile int sleeping = 0;
|
||
|
if (vm->main_thread != th) {
|
||
| vm_core.h (working copy) | ||
|---|---|---|
|
void rb_threadptr_pending_interrupt_clear(rb_thread_t *th);
|
||
|
void rb_threadptr_pending_interrupt_enque(rb_thread_t *th, VALUE v);
|
||
|
int rb_threadptr_pending_interrupt_active_p(rb_thread_t *th);
|
||
|
void rb_threadptr_error_print(rb_thread_t *th, VALUE errinfo);
|
||
|
void rb_threadptr_error_print(rb_thread_t *volatile th, volatile VALUE errinfo);
|
||
|
#define RUBY_VM_CHECK_INTS(th) ruby_vm_check_ints(th)
|
||
|
static inline void
|
||
| vm_eval.c (working copy) | ||
|---|---|---|
|
{
|
||
|
int state;
|
||
|
VALUE result = Qundef;
|
||
|
rb_thread_t *th = GET_THREAD();
|
||
|
rb_thread_t *volatile th = GET_THREAD();
|
||
|
struct rb_block block;
|
||
|
const struct rb_block *base_block;
|
||
|
volatile VALUE file;
|
||
| ... | ... | |
|
return rb_catch_obj(vtag, func, data);
|
||
|
}
|
||
|
static VALUE vm_catch_protect(VALUE, rb_block_call_func *, VALUE, int *, rb_thread_t *);
|
||
|
static VALUE vm_catch_protect(VALUE, rb_block_call_func *, VALUE, int *, rb_thread_t *volatile);
|
||
|
VALUE
|
||
|
rb_catch_obj(VALUE t, VALUE (*func)(), VALUE data)
|
||
| ... | ... | |
|
static VALUE
|
||
|
vm_catch_protect(VALUE tag, rb_block_call_func *func, VALUE data,
|
||
|
int *stateptr, rb_thread_t *th)
|
||
|
int *stateptr, rb_thread_t *volatile th)
|
||
|
{
|
||
|
int state;
|
||
|
VALUE val = Qnil; /* OK */
|
||
|
rb_control_frame_t *saved_cfp = th->cfp;
|
||
|
rb_control_frame_t *volatile saved_cfp = th->cfp;
|
||
|
TH_PUSH_TAG(th);
|
||
| vm_trace.c (working copy) | ||
|---|---|---|
|
volatile int raised;
|
||
|
volatile int outer_state;
|
||
|
VALUE result = Qnil;
|
||
|
rb_thread_t *th = GET_THREAD();
|
||
|
rb_thread_t *volatile th = GET_THREAD();
|
||
|
int state;
|
||
|
const int tracing = th->trace_arg ? 1 : 0;
|
||
|
rb_trace_arg_t dummy_trace_arg;
|
||
- « Previous
- 1
- 2
- Next »