summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gc.c12
-rw-r--r--src/state.c11
-rw-r--r--src/vm.c2
3 files changed, 13 insertions, 12 deletions
diff --git a/src/gc.c b/src/gc.c
index e0a923b89..9286f361b 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -1,5 +1,5 @@
/*
-** gc.c - garbage collector for RiteVM
+** gc.c - garbage collector for mruby
**
** See Copyright Notice in mruby.h
*/
@@ -24,7 +24,7 @@
/*
= Tri-color Incremental Garbage Collection
- RiteVM's GC is Tri-color Incremental GC with Mark & Sweep.
+ mruby's GC is Tri-color Incremental GC with Mark & Sweep.
Algorithm details are omitted.
Instead, the part about the implementation described below.
@@ -61,7 +61,7 @@
= Write Barrier
- RiteVM implementer, C extension library writer must write a write
+ mruby implementer, C extension library writer must write a write
barrier when writing a pointer to an object on object's field.
Two different write barrier:
@@ -153,11 +153,11 @@ mrb_realloc(mrb_state *mrb, void *p, size_t len)
{
void *p2;
- p2 = (mrb->allocf)(mrb, p, len);
+ p2 = (mrb->allocf)(mrb, p, len, mrb->ud);
if (!p2 && len > 0 && mrb->heaps) {
mrb_garbage_collect(mrb);
- p2 = (mrb->allocf)(mrb, p, len);
+ p2 = (mrb->allocf)(mrb, p, len, mrb->ud);
}
return p2;
}
@@ -188,7 +188,7 @@ mrb_calloc(mrb_state *mrb, size_t nelem, size_t len)
void*
mrb_free(mrb_state *mrb, void *p)
{
- return (mrb->allocf)(mrb, p, 0);
+ return (mrb->allocf)(mrb, p, 0, mrb->ud);
}
#ifndef MRB_HEAP_PAGE_SIZE
diff --git a/src/state.c b/src/state.c
index 181cd00e0..6d34381ba 100644
--- a/src/state.c
+++ b/src/state.c
@@ -1,5 +1,5 @@
/*
-** state.c - RiteVM open/close functions
+** state.c - mrb_state open/close functions
**
** See Copyright Notice in mruby.h
*/
@@ -14,12 +14,13 @@ void mrb_init_core(mrb_state*);
void mrb_init_ext(mrb_state*);
mrb_state*
-mrb_open_allocf(mrb_allocf f)
+mrb_open_allocf(mrb_allocf f, void *ud)
{
- mrb_state *mrb = (mrb_state *)(f)(NULL, NULL, sizeof(mrb_state));
+ mrb_state *mrb = (mrb_state *)(f)(NULL, NULL, sizeof(mrb_state), ud);
if (mrb == NULL) return NULL;
memset(mrb, 0, sizeof(mrb_state));
+ mrb->ud = ud;
mrb->allocf = f;
mrb->current_white_part = MRB_GC_WHITE_A;
@@ -30,7 +31,7 @@ mrb_open_allocf(mrb_allocf f)
}
static void*
-allocf(mrb_state *mrb, void *p, size_t size)
+allocf(mrb_state *mrb, void *p, size_t size, void *ud)
{
if (size == 0) {
free(p);
@@ -44,7 +45,7 @@ allocf(mrb_state *mrb, void *p, size_t size)
mrb_state*
mrb_open()
{
- mrb_state *mrb = mrb_open_allocf(allocf);
+ mrb_state *mrb = mrb_open_allocf(allocf, NULL);
return mrb;
}
diff --git a/src/vm.c b/src/vm.c
index c000c4049..cff09c96e 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1,5 +1,5 @@
/*
-** vm.c - virtual machine for mruby (RiteVM)
+** vm.c - virtual machine for mruby
**
** See Copyright Notice in mruby.h
*/