From db0767c93185024341654fa84f2581995d081cb9 Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Fri, 19 Jun 2015 03:10:11 +0900 Subject: [PATCH] don't malloc pic->iseq --- extlib/benz/include/picrin.h | 5 ++--- extlib/benz/include/picrin/irep.h | 4 ++-- extlib/benz/state.c | 12 ------------ 3 files changed, 4 insertions(+), 17 deletions(-) diff --git a/extlib/benz/include/picrin.h b/extlib/benz/include/picrin.h index f250305a..fcafe4c2 100644 --- a/extlib/benz/include/picrin.h +++ b/extlib/benz/include/picrin.h @@ -45,9 +45,9 @@ extern "C" { #include "picrin/value.h" -typedef struct pic_code pic_code; typedef struct pic_state pic_state; +#include "picrin/irep.h" #include "picrin/file.h" typedef struct pic_jmpbuf { @@ -139,6 +139,7 @@ struct pic_state { struct pic_reader *reader; xFILE files[XOPEN_MAX]; + pic_code iseq[2]; /* for pic_apply_trampoline */ bool gc_enable; struct pic_heap *heap; @@ -148,7 +149,6 @@ struct pic_state { pic_value err; - pic_code *iseq; /* for pic_apply_trampoline */ char *native_stack_start; }; @@ -272,7 +272,6 @@ pic_value pic_fdisplay(pic_state *, pic_value, xFILE *); #include "picrin/dict.h" #include "picrin/error.h" #include "picrin/gc.h" -#include "picrin/irep.h" #include "picrin/lib.h" #include "picrin/macro.h" #include "picrin/pair.h" diff --git a/extlib/benz/include/picrin/irep.h b/extlib/benz/include/picrin/irep.h index 319d1b31..a71d14f6 100644 --- a/extlib/benz/include/picrin/irep.h +++ b/extlib/benz/include/picrin/irep.h @@ -49,7 +49,7 @@ enum pic_opcode { OP_STOP }; -struct pic_code { +typedef struct { enum pic_opcode insn; union { int i; @@ -59,7 +59,7 @@ struct pic_code { int idx; } r; } u; -}; +} pic_code; #define PIC_INIT_CODE_I(code, op, ival) do { \ code.insn = op; \ diff --git a/extlib/benz/state.c b/extlib/benz/state.c index fc0877ff..3f6f5ba9 100644 --- a/extlib/benz/state.c +++ b/extlib/benz/state.c @@ -216,13 +216,6 @@ pic_open(int argc, char *argv[], char **envp, pic_allocf allocf) goto EXIT_ARENA; } - /* trampoline iseq */ - pic->iseq = allocf(NULL, 2 * sizeof(pic_code)); - - if (! pic->iseq) { - goto EXIT_ISEQ; - } - /* memory heap */ pic->heap = pic_heap_open(pic); @@ -393,8 +386,6 @@ pic_open(int argc, char *argv[], char **envp, pic_allocf allocf) return pic; - EXIT_ISEQ: - allocf(pic->arena, 0); EXIT_ARENA: allocf(pic->xp, 0); EXIT_XP: @@ -456,9 +447,6 @@ pic_close(pic_state *pic) allocf(pic->cibase, 0); allocf(pic->xpbase, 0); - /* free trampoline iseq */ - allocf(pic->iseq, 0); - /* free global stacks */ xh_destroy(&pic->syms);