diff options
author | Mike Pall <mike> | 2012-10-02 09:57:49 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2012-10-02 09:57:49 +0200 |
commit | b66ab96a629892ade0e0b68ca50a7e850b7e37ec (patch) | |
tree | 4ee6d6e048dc7bbf4b832ccde0c2b086a90d8d47 | |
parent | fcddd5a3a0269f30df0c0da6e9ff89d3e70d0e2c (diff) | |
download | luajit-b66ab96a629892ade0e0b68ca50a7e850b7e37ec.tar.gz luajit-b66ab96a629892ade0e0b68ca50a7e850b7e37ec.tar.bz2 luajit-b66ab96a629892ade0e0b68ca50a7e850b7e37ec.zip |
Move a GC macro.
-rw-r--r-- | src/lj_cdata.c | 2 | ||||
-rw-r--r-- | src/lj_gc.c | 7 | ||||
-rw-r--r-- | src/lj_gc.h | 1 |
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. */ |
126 | size_t lj_gc_separateudata(global_State *g, int all) | 125 | size_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. */ |
48 | LJ_FUNC size_t lj_gc_separateudata(global_State *g, int all); | 49 | LJ_FUNC size_t lj_gc_separateudata(global_State *g, int all); |