summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorJean Boussier <[email protected]>2025-04-21 16:16:07 +0900
committerJean Boussier <[email protected]>2025-05-08 07:58:05 +0200
commitf48e45d1e9c4412d5f3ee49241d0b9359651ce7c ()
tree88e53f6ef5e926b87f6ab620ca6ff23bf15380f3 /ext
parentd34c15054708c84e9d3305ede0752820b42ac498 (diff)
Move `object_id` in object fields.
And get rid of the `obj_to_id_tbl` It's no longer needed, the `object_id` is now stored inline in the object alongside instance variables. We still need the inverse table in case `_id2ref` is invoked, but we lazily build it by walking the heap if that happens. The `object_id` concern is also no longer a GC implementation concern, but a generic implementation. Co-Authored-By: Matt Valentine-House <[email protected]>
Notes: Merged: https://.com/ruby/ruby/pull/13159
-rw-r--r--ext/objspace/objspace_dump.c16
1 files changed, 8 insertions, 8 deletions
@@ -805,29 +805,29 @@ shape_i(rb_shape_t *shape, void *data)
dump_append(dc, ", \"depth\":");
dump_append_sizet(dc, rb_shape_depth(shape));
- dump_append(dc, ", \"shape_type\":");
switch((enum shape_type)shape->type) {
case SHAPE_ROOT:
- dump_append(dc, "\"ROOT\"");
break;
case SHAPE_IVAR:
- dump_append(dc, "\"IVAR\"");
dump_append(dc, ",\"edge_name\":");
dump_append_id(dc, shape->edge_name);
break;
case SHAPE_FROZEN:
- dump_append(dc, "\"FROZEN\"");
break;
case SHAPE_T_OBJECT:
- dump_append(dc, "\"T_OBJECT\"");
break;
case SHAPE_OBJ_TOO_COMPLEX:
- dump_append(dc, "\"OBJ_TOO_COMPLEX\"");
break;
- default:
- rb_bug("[objspace] unexpected shape type");
}
dump_append(dc, ", \"edges\":");