summaryrefslogtreecommitdiffhomepage
path: root/src/gc.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-11-04 11:49:25 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-11-04 11:49:25 +0900
commitde2363a9f0c7d368ee9002f86931d124e644a243 (patch)
tree2112928a80786a109ecac4b3ce200f45ac75e2cb /src/gc.c
parent388d26d77027feaa3e107abf7209e2681868bbe6 (diff)
parent625f9f6fa314872968632c5adbee7fb3823268b8 (diff)
downloadmruby-de2363a9f0c7d368ee9002f86931d124e644a243.tar.gz
mruby-de2363a9f0c7d368ee9002f86931d124e644a243.zip
Merge branch 'mrb_without_float' of https://github.com/pandax381/mruby into pandax381-mrb_without_float
Diffstat (limited to 'src/gc.c')
-rw-r--r--src/gc.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/gc.c b/src/gc.c
index 4b83f454b..794a22e9e 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -114,7 +114,9 @@ typedef struct {
struct RException exc;
struct RBreak brk;
#ifdef MRB_WORD_BOXING
+#ifndef MRB_WITHOUT_FLOAT
struct RFloat floatv;
+#endif
struct RCptr cptr;
#endif
} as;
@@ -412,7 +414,7 @@ gc_protect(mrb_state *mrb, mrb_gc *gc, struct RBasic *p)
#else
if (gc->arena_idx >= gc->arena_capa) {
/* extend arena */
- gc->arena_capa = (int)(gc->arena_capa * 1.5);
+ gc->arena_capa = (int)(gc->arena_capa * 3 / 2);
gc->arena = (struct RBasic**)mrb_realloc(mrb, gc->arena, sizeof(struct RBasic*)*gc->arena_capa);
}
#endif
@@ -735,12 +737,14 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end)
/* cannot happen */
return;
+#ifndef MRB_WITHOUT_FLOAT
case MRB_TT_FLOAT:
#ifdef MRB_WORD_BOXING
break;
#else
return;
#endif
+#endif
case MRB_TT_OBJECT:
mrb_gc_free_iv(mrb, (struct RObject*)obj);
@@ -871,7 +875,9 @@ root_scan_phase(mrb_state *mrb, mrb_gc *gc)
mrb_gc_mark(mrb, (struct RBasic*)mrb->hash_class);
mrb_gc_mark(mrb, (struct RBasic*)mrb->range_class);
+#ifndef MRB_WITHOUT_FLOAT
mrb_gc_mark(mrb, (struct RBasic*)mrb->float_class);
+#endif
mrb_gc_mark(mrb, (struct RBasic*)mrb->fixnum_class);
mrb_gc_mark(mrb, (struct RBasic*)mrb->true_class);
mrb_gc_mark(mrb, (struct RBasic*)mrb->false_class);