コード例 #1
0
ファイル: gc.c プロジェクト: AdamDotCom/my-rvm
void
rb_memerror()
{
    rb_thread_t th = rb_curr_thread;

    if (!nomem_error ||
	(rb_thread_raised_p(th, RAISED_NOMEMORY) && rb_safe_level() < 4)) {
	fprintf(stderr, "[FATAL] failed to allocate memory\n");
	exit(1);
    }
    if (rb_thread_raised_p(th, RAISED_NOMEMORY)) {
	rb_exc_jump(nomem_error);
    }
    rb_thread_raised_set(th, RAISED_NOMEMORY);
    rb_exc_raise(nomem_error);
}
コード例 #2
0
ファイル: vm_eval.c プロジェクト: 3runo5ouza/rhodes
static inline void
stack_check(void)
{
    rb_thread_t *th = GET_THREAD();

    if (!rb_thread_raised_p(th, RAISED_STACKOVERFLOW) && ruby_stack_check()) {
	rb_thread_raised_set(th, RAISED_STACKOVERFLOW);
	rb_exc_raise(sysstack_error);
    }
}
コード例 #3
0
void
ruby_alloca_chkstk(size_t len, void *sp)
{
    if (ruby_stack_length(NULL) * sizeof(VALUE) >= len) {
	rb_thread_t *th = GET_THREAD();
	if (!rb_thread_raised_p(th, RAISED_STACKOVERFLOW)) {
	    rb_thread_raised_set(th, RAISED_STACKOVERFLOW);
	    rb_exc_raise(sysstack_error);
	}
    }
}