summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorJean Boussier <[email protected]>2025-06-11 14:32:35 +0200
committerJean Boussier <[email protected]>2025-06-11 16:38:38 +0200
commit95201299fd7bf0918dfbd8c127ce2b5b33ffa537 ()
treeb6659cd0932fa3f0cb71c8cf8c2aba382d86cf6b /ext
parent4463ac264dc44979ea74bbca3de58ae72d5eea71 (diff)
Refactor the last references to `rb_shape_t`
The type isn't opaque because Ruby isn't often compiled with LTO, so for optimization purpose it's better to allow as much inlining as possible. However ideally only `shape.c` and `shape.h` should deal with the actual struct, and everything else should just deal with opaque `shape_id_t`.
Notes: Merged: https://.com/ruby/ruby/pull/13586
-rw-r--r--ext/objspace/objspace_dump.c11
1 files changed, 5 insertions, 6 deletions
@@ -792,22 +792,21 @@ shape_id_i(shape_id_t shape_id, void *data)
return;
}
- rb_shape_t *shape = RSHAPE(shape_id);
dump_append(dc, "{\"address\":");
- dump_append_ref(dc, (VALUE)shape);
dump_append(dc, ", \"type\":\"SHAPE\", \"id\":");
dump_append_sizet(dc, shape_id);
- if (shape->type != SHAPE_ROOT) {
dump_append(dc, ", \"parent_id\":");
- dump_append_lu(dc, shape->parent_id);
}
dump_append(dc, ", \"depth\":");
dump_append_sizet(dc, rb_shape_depth(shape_id));
- switch((enum shape_type)shape->type) {
case SHAPE_ROOT:
dump_append(dc, ", \"shape_type\":\"ROOT\"");
break;
@@ -815,7 +814,7 @@ shape_id_i(shape_id_t shape_id, void *data)
dump_append(dc, ", \"shape_type\":\"IVAR\"");
dump_append(dc, ",\"edge_name\":");
- dump_append_id(dc, shape->edge_name);
break;
case SHAPE_OBJ_ID: