summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/codedump.c2
-rw-r--r--src/gc.c15
-rw-r--r--src/vm.c4
3 files changed, 3 insertions, 18 deletions
diff --git a/src/codedump.c b/src/codedump.c
index 5acc274c3..e70df3205 100644
--- a/src/codedump.c
+++ b/src/codedump.c
@@ -170,7 +170,7 @@ codedump(mrb_state *mrb, const mrb_irep *irep)
print_lv_a(mrb, irep, a);
break;
CASE(OP_LOADI32, BSS);
- printf("OP_LOADI32\tR%d\t%d\t", a, (int)(b<<16)+c);
+ printf("OP_LOADI32\tR%d\t%d\t", a, (int)(((uint32_t)b<<16)+c));
print_lv_a(mrb, irep, a);
break;
CASE(OP_LOADI__1, B);
diff --git a/src/gc.c b/src/gc.c
index 58fdf9434..7192e2fef 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -780,21 +780,6 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end)
{
DEBUG(fprintf(stderr, "obj_free(%p,tt=%d)\n",obj,obj->tt));
switch (obj->tt) {
- /* immediate - no mark */
- case MRB_TT_TRUE:
- case MRB_TT_SYMBOL:
- /* cannot happen */
- return;
-
-#ifndef MRB_NO_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);
break;
diff --git a/src/vm.c b/src/vm.c
index 14c6a0b69..c87fa9dc6 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1069,7 +1069,7 @@ RETRY_TRY_BLOCK:
NEXT;
}
-
+
CASE(OP_LOADL16, BS) {
goto op_loadl;
}
@@ -1135,7 +1135,7 @@ RETRY_TRY_BLOCK:
}
CASE(OP_LOADI32, BSS) {
- SET_INT_VALUE(mrb, regs[a], ((mrb_int)b<<16)+c);
+ SET_INT_VALUE(mrb, regs[a], (mrb_int)(((uint32_t)b<<16)+c));
NEXT;
}