aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2012-10-02 09:57:49 +0200
committerMike Pall <mike>2012-10-02 09:57:49 +0200
commitb66ab96a629892ade0e0b68ca50a7e850b7e37ec (patch)
tree4ee6d6e048dc7bbf4b832ccde0c2b086a90d8d47
parentfcddd5a3a0269f30df0c0da6e9ff89d3e70d0e2c (diff)
downloadluajit-b66ab96a629892ade0e0b68ca50a7e850b7e37ec.tar.gz
luajit-b66ab96a629892ade0e0b68ca50a7e850b7e37ec.tar.bz2
luajit-b66ab96a629892ade0e0b68ca50a7e850b7e37ec.zip
Move a GC macro.
-rw-r--r--src/lj_cdata.c2
-rw-r--r--src/lj_gc.c7
-rw-r--r--src/lj_gc.h1
3 files changed, 5 insertions, 5 deletions
diff --git a/src/lj_cdata.c b/src/lj_cdata.c
index 2f10113b..896781bd 100644
--- a/src/lj_cdata.c
+++ b/src/lj_cdata.c
@@ -56,7 +56,7 @@ void LJ_FASTCALL lj_cdata_free(global_State *g, GCcdata *cd)
56 if (LJ_UNLIKELY(cd->marked & LJ_GC_CDATA_FIN)) { 56 if (LJ_UNLIKELY(cd->marked & LJ_GC_CDATA_FIN)) {
57 GCobj *root; 57 GCobj *root;
58 makewhite(g, obj2gco(cd)); 58 makewhite(g, obj2gco(cd));
59 obj2gco(cd)->gch.marked |= LJ_GC_FINALIZED; 59 markfinalized(obj2gco(cd));
60 if ((root = gcref(g->gc.mmudata)) != NULL) { 60 if ((root = gcref(g->gc.mmudata)) != NULL) {
61 setgcrefr(cd->nextgc, root->gch.nextgc); 61 setgcrefr(cd->nextgc, root->gch.nextgc);
62 setgcref(root->gch.nextgc, obj2gco(cd)); 62 setgcref(root->gch.nextgc, obj2gco(cd));
diff --git a/src/lj_gc.c b/src/lj_gc.c
index e6a9d539..24403be3 100644
--- a/src/lj_gc.c
+++ b/src/lj_gc.c
@@ -35,7 +35,6 @@
35#define white2gray(x) ((x)->gch.marked &= (uint8_t)~LJ_GC_WHITES) 35#define white2gray(x) ((x)->gch.marked &= (uint8_t)~LJ_GC_WHITES)
36#define gray2black(x) ((x)->gch.marked |= LJ_GC_BLACK) 36#define gray2black(x) ((x)->gch.marked |= LJ_GC_BLACK)
37#define isfinalized(u) ((u)->marked & LJ_GC_FINALIZED) 37#define isfinalized(u) ((u)->marked & LJ_GC_FINALIZED)
38#define markfinalized(u) ((u)->marked |= LJ_GC_FINALIZED)
39 38
40/* -- Mark phase ---------------------------------------------------------- */ 39/* -- Mark phase ---------------------------------------------------------- */
41 40
@@ -122,7 +121,7 @@ static void gc_mark_mmudata(global_State *g)
122 } 121 }
123} 122}
124 123
125/* Separate userdata which which needs finalization to mmudata list. */ 124/* Separate userdata objects to be finalized to mmudata list. */
126size_t lj_gc_separateudata(global_State *g, int all) 125size_t lj_gc_separateudata(global_State *g, int all)
127{ 126{
128 size_t m = 0; 127 size_t m = 0;
@@ -132,11 +131,11 @@ size_t lj_gc_separateudata(global_State *g, int all)
132 if (!(iswhite(o) || all) || isfinalized(gco2ud(o))) { 131 if (!(iswhite(o) || all) || isfinalized(gco2ud(o))) {
133 p = &o->gch.nextgc; /* Nothing to do. */ 132 p = &o->gch.nextgc; /* Nothing to do. */
134 } else if (!lj_meta_fastg(g, tabref(gco2ud(o)->metatable), MM_gc)) { 133 } else if (!lj_meta_fastg(g, tabref(gco2ud(o)->metatable), MM_gc)) {
135 markfinalized(gco2ud(o)); /* Done, as there's no __gc metamethod. */ 134 markfinalized(o); /* Done, as there's no __gc metamethod. */
136 p = &o->gch.nextgc; 135 p = &o->gch.nextgc;
137 } else { /* Otherwise move userdata to be finalized to mmudata list. */ 136 } else { /* Otherwise move userdata to be finalized to mmudata list. */
138 m += sizeudata(gco2ud(o)); 137 m += sizeudata(gco2ud(o));
139 markfinalized(gco2ud(o)); 138 markfinalized(o);
140 *p = o->gch.nextgc; 139 *p = o->gch.nextgc;
141 if (gcref(g->gc.mmudata)) { /* Link to end of mmudata list. */ 140 if (gcref(g->gc.mmudata)) { /* Link to end of mmudata list. */
142 GCobj *root = gcref(g->gc.mmudata); 141 GCobj *root = gcref(g->gc.mmudata);
diff --git a/src/lj_gc.h b/src/lj_gc.h
index df66259e..324078a0 100644
--- a/src/lj_gc.h
+++ b/src/lj_gc.h
@@ -43,6 +43,7 @@ enum {
43#define flipwhite(x) ((x)->gch.marked ^= LJ_GC_WHITES) 43#define flipwhite(x) ((x)->gch.marked ^= LJ_GC_WHITES)
44#define black2gray(x) ((x)->gch.marked &= (uint8_t)~LJ_GC_BLACK) 44#define black2gray(x) ((x)->gch.marked &= (uint8_t)~LJ_GC_BLACK)
45#define fixstring(s) ((s)->marked |= LJ_GC_FIXED) 45#define fixstring(s) ((s)->marked |= LJ_GC_FIXED)
46#define markfinalized(x) ((x)->gch.marked |= LJ_GC_FINALIZED)
46 47
47/* Collector. */ 48/* Collector. */
48LJ_FUNC size_t lj_gc_separateudata(global_State *g, int all); 49LJ_FUNC size_t lj_gc_separateudata(global_State *g, int all);