From 62f41ddd3bf8a1afa3d7ed94081835f8996ecbc4 Mon Sep 17 00:00:00 2001 From: take_cheeze Date: Mon, 16 Jun 2014 16:03:35 +0900 Subject: Add fixed state atexit stack feature. Adds following macros: * MRB_FIXED_STATE_ATEXIT_STACK (not defined by default) * When defined enables fixed state atexit stack. * MRB_FIXED_STATE_ATEXIT_STACK_SIZE (default value: 5) * This macro will be ignored when `MRB_FIXED_STATE_ATEXIT_STACK` isn't defined. * When `mrb_state_atexit` is called more than this value it will raise runtime error. --- include/mruby.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'include/mruby.h') diff --git a/include/mruby.h b/include/mruby.h index dcc01b2dd..7b9f1b428 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -52,6 +52,10 @@ typedef void* (*mrb_allocf) (struct mrb_state *mrb, void*, size_t, void *ud); #define MRB_GC_ARENA_SIZE 100 #endif +#ifndef MRB_FIXED_STATE_ATEXIT_STACK_SIZE +#define MRB_FIXED_STATE_ATEXIT_STACK_SIZE 5 +#endif + typedef struct { mrb_sym mid; struct RProc *proc; @@ -173,7 +177,11 @@ typedef struct mrb_state { void *ud; /* auxiliary data */ +#ifdef MRB_FIXED_STATE_ATEXIT_STACK + mrb_atexit_func atexit_stack[MRB_FIXED_STATE_ATEXIT_STACK_SIZE]; +#else mrb_atexit_func *atexit_stack; +#endif mrb_int atexit_stack_len; } mrb_state; -- cgit v1.2.3