summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshirosaki <shirosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-24 12:26:57 +0000
committershirosaki <shirosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-24 12:26:57 +0000
commit7b298723b08e30d336f6172a6d4f6d9dea3a5a8e (patch)
tree7d32f1888fba16ff2a7662057bf4b08ef3a294cc
parent1cdeab5cdd4b84cc0d97ee1a148beeb11bdd2d44 (diff)
gc.c: 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@37835 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 8d4440a096..e229b0bb4c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+Sat Nov 24 21:08:50 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 21:01:55 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
* array.c (rb_ary_delete_same_obj): new function for WeakRef.
diff --git a/gc.c b/gc.c
index c9d4ccdc99..45ed0034c2 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_same_obj(ary, obj);
+ wmap = (VALUE)arg, ary = (VALUE)*value;
+ rb_ary_delete_same_obj(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;
}