aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorshirosaki <shirosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-24 04:01:37 +0000
committershirosaki <shirosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-24 04:01:37 +0000
commit3fac4abc7b6d562905e59f16042a657dff9c8987 (patch)
tree91c299cbbef5e9718ce0f19ed4ae4b1226e80ad7
parent82cac33ecb45abf68a98e5f30849502e50579242 (diff)
downloadruby-3fac4abc7b6d562905e59f16042a657dff9c8987.tar.gz
wmap_finalize: refactoring to rename variables
* gc.c (wmap_final_func): rename variables to clarify the meaning. In wmap2obj the key is WeakRef and the value is referenced object. In obj2wmap the key is referenced object and the value is an array of WeakRef. * gc.c (wmap_finalize): ditto. [ruby-core:49044] [Bug #7304] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37827 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog10
-rw-r--r--gc.c29
2 files changed, 25 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index e9395ea4c9..5d276157c9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+Sat Nov 24 12:12:41 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * gc.c (wmap_final_func): rename variables to clarify the meaning.
+ In wmap2obj the key is WeakRef and the value is referenced object.
+ In obj2wmap the key is referenced object and the value is an array
+ of WeakRef.
+
+ * gc.c (wmap_finalize): ditto.
+ [ruby-core:49044] [Bug #7304]
+
Sat Nov 24 12:10:26 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
* gc.c (wmap_final_func): remove WeakRef object reference from the
diff --git a/gc.c b/gc.c
index 269442c57b..fadfc0312d 100644
--- a/gc.c
+++ b/gc.c
@@ -3749,39 +3749,40 @@ wmap_allocate(VALUE klass)
static int
wmap_final_func(st_data_t *key, st_data_t *value, st_data_t arg, int existing)
{
- VALUE obj, ary;
+ VALUE wmap, ary;
if (!existing) return ST_STOP;
- obj = (VALUE)arg, ary = (VALUE)*value;
- rb_ary_delete(ary, obj);
+ wmap = (VALUE)arg, ary = (VALUE)*value;
+ rb_ary_delete(ary, wmap);
if (!RARRAY_LEN(ary)) return ST_DELETE;
return ST_CONTINUE;
}
static VALUE
-wmap_finalize(VALUE self, VALUE obj)
+wmap_finalize(VALUE self, VALUE objid)
{
- st_data_t key, data;
- VALUE rids;
+ st_data_t orig, wmap, data;
+ VALUE obj, rids;
long i;
struct weakmap *w;
TypedData_Get_Struct(self, struct weakmap, &weakmap_type, w);
/* Get reference from object id. */
- obj = obj ^ FIXNUM_FLAG; /* unset FIXNUM_FLAG */
+ obj = objid ^ FIXNUM_FLAG; /* unset FIXNUM_FLAG */
/* obj is original referenced object and/or weak reference. */
- key = (st_data_t)obj;
- if (st_delete(w->obj2wmap, &key, &data)) {
+ orig = (st_data_t)obj;
+ if (st_delete(w->obj2wmap, &orig, &data)) {
rids = (VALUE)data;
for (i = 0; i < RARRAY_LEN(rids); ++i) {
- data = (st_data_t)RARRAY_PTR(rids)[i];
- st_delete(w->wmap2obj, &data, NULL);
+ wmap = (st_data_t)RARRAY_PTR(rids)[i];
+ st_delete(w->wmap2obj, &wmap, NULL);
}
}
- key = (st_data_t)obj;
- if (st_delete(w->wmap2obj, &key, &data)) {
- st_update(w->obj2wmap, data, wmap_final_func, (st_data_t)obj);
+ wmap = (st_data_t)obj;
+ if (st_delete(w->wmap2obj, &wmap, &orig)) {
+ wmap = (st_data_t)obj;
+ st_update(w->obj2wmap, orig, wmap_final_func, wmap);
}
return self;
}