diff options
-rw-r--r-- | eval_intern.h | 14 | ||||
-rw-r--r-- | vm_core.h | 14 | ||||
-rw-r--r-- | vm_sync.c | 22 |
3 files changed, 49 insertions, 1 deletions
@@ -127,14 +127,26 @@ LONG WINAPI rb_w32_stack_overflow_handler(struct _EXCEPTION_POINTERS *); rb_fiber_start(); \ } while (0) #define EC_PUSH_TAG(ec) do { \ rb_execution_context_t * const _ec = (ec); \ struct rb_vm_tag _tag; \ _tag.state = TAG_NONE; \ _tag.tag = Qundef; \ - _tag.prev = _ec->tag; #define EC_POP_TAG() \ _ec->tag = _tag.prev; \ } while (0) @@ -794,6 +794,7 @@ struct rb_vm_tag { rb_jmpbuf_t buf; struct rb_vm_tag *prev; enum ruby_tag_type state; }; STATIC_ASSERT(rb_vm_tag_buf_offset, offsetof(struct rb_vm_tag, buf) > 0); @@ -1797,6 +1798,19 @@ rb_current_vm(void) return ruby_current_vm_ptr; } #else #error "unsupported thread model" #endif @@ -246,3 +246,25 @@ rb_vm_barrier(void) } } } |