summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--eval_intern.h14
-rw-r--r--vm_core.h14
-rw-r--r--vm_sync.c22
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)
}
}
}