Skip to content

Commit 7379b9e

Browse files
peterzhu2118byroot
authored andcommitted
Optimize rb_mark_generic_ivar for T_DATA and T_STRUCT
T_DATA and T_STRUCT could have ivars but might not use the generic_fields_tbl. This commit skips lookup in the generic_fields_tbl for those cases.
1 parent c794a97 commit 7379b9e

File tree

5 files changed

+61
-2
lines changed

5 files changed

+61
-2
lines changed

depend

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,7 @@ ast.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
300300
ast.$(OBJEXT): $(top_srcdir)/internal/serial.h
301301
ast.$(OBJEXT): $(top_srcdir)/internal/set_table.h
302302
ast.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
303+
ast.$(OBJEXT): $(top_srcdir)/internal/struct.h
303304
ast.$(OBJEXT): $(top_srcdir)/internal/symbol.h
304305
ast.$(OBJEXT): $(top_srcdir)/internal/variable.h
305306
ast.$(OBJEXT): $(top_srcdir)/internal/vm.h
@@ -539,6 +540,7 @@ bignum.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
539540
bignum.$(OBJEXT): $(top_srcdir)/internal/serial.h
540541
bignum.$(OBJEXT): $(top_srcdir)/internal/set_table.h
541542
bignum.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
543+
bignum.$(OBJEXT): $(top_srcdir)/internal/struct.h
542544
bignum.$(OBJEXT): $(top_srcdir)/internal/variable.h
543545
bignum.$(OBJEXT): $(top_srcdir)/internal/vm.h
544546
bignum.$(OBJEXT): $(top_srcdir)/internal/warnings.h
@@ -753,6 +755,7 @@ box.$(OBJEXT): $(top_srcdir)/internal/set_table.h
753755
box.$(OBJEXT): $(top_srcdir)/internal/st.h
754756
box.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
755757
box.$(OBJEXT): $(top_srcdir)/internal/string.h
758+
box.$(OBJEXT): $(top_srcdir)/internal/struct.h
756759
box.$(OBJEXT): $(top_srcdir)/internal/variable.h
757760
box.$(OBJEXT): $(top_srcdir)/internal/vm.h
758761
box.$(OBJEXT): $(top_srcdir)/internal/warnings.h
@@ -991,6 +994,7 @@ builtin.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
991994
builtin.$(OBJEXT): $(top_srcdir)/internal/serial.h
992995
builtin.$(OBJEXT): $(top_srcdir)/internal/set_table.h
993996
builtin.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
997+
builtin.$(OBJEXT): $(top_srcdir)/internal/struct.h
994998
builtin.$(OBJEXT): $(top_srcdir)/internal/variable.h
995999
builtin.$(OBJEXT): $(top_srcdir)/internal/vm.h
9961000
builtin.$(OBJEXT): $(top_srcdir)/internal/warnings.h
@@ -1226,6 +1230,7 @@ class.$(OBJEXT): $(top_srcdir)/internal/serial.h
12261230
class.$(OBJEXT): $(top_srcdir)/internal/set_table.h
12271231
class.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
12281232
class.$(OBJEXT): $(top_srcdir)/internal/string.h
1233+
class.$(OBJEXT): $(top_srcdir)/internal/struct.h
12291234
class.$(OBJEXT): $(top_srcdir)/internal/variable.h
12301235
class.$(OBJEXT): $(top_srcdir)/internal/vm.h
12311236
class.$(OBJEXT): $(top_srcdir)/internal/warnings.h
@@ -1636,6 +1641,7 @@ compile.$(OBJEXT): $(top_srcdir)/internal/serial.h
16361641
compile.$(OBJEXT): $(top_srcdir)/internal/set_table.h
16371642
compile.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
16381643
compile.$(OBJEXT): $(top_srcdir)/internal/string.h
1644+
compile.$(OBJEXT): $(top_srcdir)/internal/struct.h
16391645
compile.$(OBJEXT): $(top_srcdir)/internal/symbol.h
16401646
compile.$(OBJEXT): $(top_srcdir)/internal/thread.h
16411647
compile.$(OBJEXT): $(top_srcdir)/internal/variable.h
@@ -1895,6 +1901,7 @@ complex.$(OBJEXT): $(top_srcdir)/internal/serial.h
18951901
complex.$(OBJEXT): $(top_srcdir)/internal/set_table.h
18961902
complex.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
18971903
complex.$(OBJEXT): $(top_srcdir)/internal/string.h
1904+
complex.$(OBJEXT): $(top_srcdir)/internal/struct.h
18981905
complex.$(OBJEXT): $(top_srcdir)/internal/variable.h
18991906
complex.$(OBJEXT): $(top_srcdir)/internal/vm.h
19001907
complex.$(OBJEXT): $(top_srcdir)/internal/warnings.h
@@ -2312,6 +2319,7 @@ cont.$(OBJEXT): $(top_srcdir)/internal/serial.h
23122319
cont.$(OBJEXT): $(top_srcdir)/internal/set_table.h
23132320
cont.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
23142321
cont.$(OBJEXT): $(top_srcdir)/internal/string.h
2322+
cont.$(OBJEXT): $(top_srcdir)/internal/struct.h
23152323
cont.$(OBJEXT): $(top_srcdir)/internal/thread.h
23162324
cont.$(OBJEXT): $(top_srcdir)/internal/variable.h
23172325
cont.$(OBJEXT): $(top_srcdir)/internal/vm.h
@@ -2552,6 +2560,7 @@ debug.$(OBJEXT): $(top_srcdir)/internal/serial.h
25522560
debug.$(OBJEXT): $(top_srcdir)/internal/set_table.h
25532561
debug.$(OBJEXT): $(top_srcdir)/internal/signal.h
25542562
debug.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
2563+
debug.$(OBJEXT): $(top_srcdir)/internal/struct.h
25552564
debug.$(OBJEXT): $(top_srcdir)/internal/variable.h
25562565
debug.$(OBJEXT): $(top_srcdir)/internal/vm.h
25572566
debug.$(OBJEXT): $(top_srcdir)/internal/warnings.h
@@ -5095,6 +5104,7 @@ error.$(OBJEXT): $(top_srcdir)/internal/serial.h
50955104
error.$(OBJEXT): $(top_srcdir)/internal/set_table.h
50965105
error.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
50975106
error.$(OBJEXT): $(top_srcdir)/internal/string.h
5107+
error.$(OBJEXT): $(top_srcdir)/internal/struct.h
50985108
error.$(OBJEXT): $(top_srcdir)/internal/symbol.h
50995109
error.$(OBJEXT): $(top_srcdir)/internal/thread.h
51005110
error.$(OBJEXT): $(top_srcdir)/internal/variable.h
@@ -5320,6 +5330,7 @@ eval.$(OBJEXT): $(top_srcdir)/internal/serial.h
53205330
eval.$(OBJEXT): $(top_srcdir)/internal/set_table.h
53215331
eval.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
53225332
eval.$(OBJEXT): $(top_srcdir)/internal/string.h
5333+
eval.$(OBJEXT): $(top_srcdir)/internal/struct.h
53235334
eval.$(OBJEXT): $(top_srcdir)/internal/thread.h
53245335
eval.$(OBJEXT): $(top_srcdir)/internal/variable.h
53255336
eval.$(OBJEXT): $(top_srcdir)/internal/vm.h
@@ -6563,6 +6574,7 @@ imemo.$(OBJEXT): $(top_srcdir)/internal/serial.h
65636574
imemo.$(OBJEXT): $(top_srcdir)/internal/set_table.h
65646575
imemo.$(OBJEXT): $(top_srcdir)/internal/st.h
65656576
imemo.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
6577+
imemo.$(OBJEXT): $(top_srcdir)/internal/struct.h
65666578
imemo.$(OBJEXT): $(top_srcdir)/internal/variable.h
65676579
imemo.$(OBJEXT): $(top_srcdir)/internal/vm.h
65686580
imemo.$(OBJEXT): $(top_srcdir)/internal/warnings.h
@@ -6948,6 +6960,7 @@ io.$(OBJEXT): $(top_srcdir)/internal/serial.h
69486960
io.$(OBJEXT): $(top_srcdir)/internal/set_table.h
69496961
io.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
69506962
io.$(OBJEXT): $(top_srcdir)/internal/string.h
6963+
io.$(OBJEXT): $(top_srcdir)/internal/struct.h
69516964
io.$(OBJEXT): $(top_srcdir)/internal/thread.h
69526965
io.$(OBJEXT): $(top_srcdir)/internal/transcode.h
69536966
io.$(OBJEXT): $(top_srcdir)/internal/variable.h
@@ -7396,6 +7409,7 @@ iseq.$(OBJEXT): $(top_srcdir)/internal/serial.h
73967409
iseq.$(OBJEXT): $(top_srcdir)/internal/set_table.h
73977410
iseq.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
73987411
iseq.$(OBJEXT): $(top_srcdir)/internal/string.h
7412+
iseq.$(OBJEXT): $(top_srcdir)/internal/struct.h
73997413
iseq.$(OBJEXT): $(top_srcdir)/internal/symbol.h
74007414
iseq.$(OBJEXT): $(top_srcdir)/internal/thread.h
74017415
iseq.$(OBJEXT): $(top_srcdir)/internal/variable.h
@@ -7645,6 +7659,7 @@ jit.$(OBJEXT): $(top_srcdir)/internal/serial.h
76457659
jit.$(OBJEXT): $(top_srcdir)/internal/set_table.h
76467660
jit.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
76477661
jit.$(OBJEXT): $(top_srcdir)/internal/string.h
7662+
jit.$(OBJEXT): $(top_srcdir)/internal/struct.h
76487663
jit.$(OBJEXT): $(top_srcdir)/internal/variable.h
76497664
jit.$(OBJEXT): $(top_srcdir)/internal/vm.h
76507665
jit.$(OBJEXT): $(top_srcdir)/internal/warnings.h
@@ -7897,6 +7912,7 @@ load.$(OBJEXT): $(top_srcdir)/internal/serial.h
78977912
load.$(OBJEXT): $(top_srcdir)/internal/set_table.h
78987913
load.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
78997914
load.$(OBJEXT): $(top_srcdir)/internal/string.h
7915+
load.$(OBJEXT): $(top_srcdir)/internal/struct.h
79007916
load.$(OBJEXT): $(top_srcdir)/internal/thread.h
79017917
load.$(OBJEXT): $(top_srcdir)/internal/variable.h
79027918
load.$(OBJEXT): $(top_srcdir)/internal/vm.h
@@ -9035,6 +9051,7 @@ memory_view.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
90359051
memory_view.$(OBJEXT): $(top_srcdir)/internal/serial.h
90369052
memory_view.$(OBJEXT): $(top_srcdir)/internal/set_table.h
90379053
memory_view.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
9054+
memory_view.$(OBJEXT): $(top_srcdir)/internal/struct.h
90389055
memory_view.$(OBJEXT): $(top_srcdir)/internal/variable.h
90399056
memory_view.$(OBJEXT): $(top_srcdir)/internal/vm.h
90409057
memory_view.$(OBJEXT): $(top_srcdir)/internal/warnings.h
@@ -9252,6 +9269,7 @@ miniinit.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
92529269
miniinit.$(OBJEXT): $(top_srcdir)/internal/serial.h
92539270
miniinit.$(OBJEXT): $(top_srcdir)/internal/set_table.h
92549271
miniinit.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
9272+
miniinit.$(OBJEXT): $(top_srcdir)/internal/struct.h
92559273
miniinit.$(OBJEXT): $(top_srcdir)/internal/variable.h
92569274
miniinit.$(OBJEXT): $(top_srcdir)/internal/vm.h
92579275
miniinit.$(OBJEXT): $(top_srcdir)/internal/warnings.h
@@ -9508,6 +9526,7 @@ node.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
95089526
node.$(OBJEXT): $(top_srcdir)/internal/serial.h
95099527
node.$(OBJEXT): $(top_srcdir)/internal/set_table.h
95109528
node.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
9529+
node.$(OBJEXT): $(top_srcdir)/internal/struct.h
95119530
node.$(OBJEXT): $(top_srcdir)/internal/variable.h
95129531
node.$(OBJEXT): $(top_srcdir)/internal/vm.h
95139532
node.$(OBJEXT): $(top_srcdir)/internal/warnings.h
@@ -9722,6 +9741,7 @@ node_dump.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
97229741
node_dump.$(OBJEXT): $(top_srcdir)/internal/serial.h
97239742
node_dump.$(OBJEXT): $(top_srcdir)/internal/set_table.h
97249743
node_dump.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
9744+
node_dump.$(OBJEXT): $(top_srcdir)/internal/struct.h
97259745
node_dump.$(OBJEXT): $(top_srcdir)/internal/variable.h
97269746
node_dump.$(OBJEXT): $(top_srcdir)/internal/vm.h
97279747
node_dump.$(OBJEXT): $(top_srcdir)/internal/warnings.h
@@ -9939,6 +9959,7 @@ numeric.$(OBJEXT): $(top_srcdir)/internal/serial.h
99399959
numeric.$(OBJEXT): $(top_srcdir)/internal/set_table.h
99409960
numeric.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
99419961
numeric.$(OBJEXT): $(top_srcdir)/internal/string.h
9962+
numeric.$(OBJEXT): $(top_srcdir)/internal/struct.h
99429963
numeric.$(OBJEXT): $(top_srcdir)/internal/util.h
99439964
numeric.$(OBJEXT): $(top_srcdir)/internal/variable.h
99449965
numeric.$(OBJEXT): $(top_srcdir)/internal/vm.h
@@ -10377,6 +10398,7 @@ pack.$(OBJEXT): $(top_srcdir)/internal/serial.h
1037710398
pack.$(OBJEXT): $(top_srcdir)/internal/set_table.h
1037810399
pack.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
1037910400
pack.$(OBJEXT): $(top_srcdir)/internal/string.h
10401+
pack.$(OBJEXT): $(top_srcdir)/internal/struct.h
1038010402
pack.$(OBJEXT): $(top_srcdir)/internal/symbol.h
1038110403
pack.$(OBJEXT): $(top_srcdir)/internal/variable.h
1038210404
pack.$(OBJEXT): $(top_srcdir)/internal/vm.h
@@ -10601,6 +10623,7 @@ parse.$(OBJEXT): $(top_srcdir)/internal/serial.h
1060110623
parse.$(OBJEXT): $(top_srcdir)/internal/set_table.h
1060210624
parse.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
1060310625
parse.$(OBJEXT): $(top_srcdir)/internal/string.h
10626+
parse.$(OBJEXT): $(top_srcdir)/internal/struct.h
1060410627
parse.$(OBJEXT): $(top_srcdir)/internal/symbol.h
1060510628
parse.$(OBJEXT): $(top_srcdir)/internal/thread.h
1060610629
parse.$(OBJEXT): $(top_srcdir)/internal/variable.h
@@ -12059,6 +12082,7 @@ proc.$(OBJEXT): $(top_srcdir)/internal/serial.h
1205912082
proc.$(OBJEXT): $(top_srcdir)/internal/set_table.h
1206012083
proc.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
1206112084
proc.$(OBJEXT): $(top_srcdir)/internal/string.h
12085+
proc.$(OBJEXT): $(top_srcdir)/internal/struct.h
1206212086
proc.$(OBJEXT): $(top_srcdir)/internal/symbol.h
1206312087
proc.$(OBJEXT): $(top_srcdir)/internal/variable.h
1206412088
proc.$(OBJEXT): $(top_srcdir)/internal/vm.h
@@ -12310,6 +12334,7 @@ process.$(OBJEXT): $(top_srcdir)/internal/serial.h
1231012334
process.$(OBJEXT): $(top_srcdir)/internal/set_table.h
1231112335
process.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
1231212336
process.$(OBJEXT): $(top_srcdir)/internal/string.h
12337+
process.$(OBJEXT): $(top_srcdir)/internal/struct.h
1231312338
process.$(OBJEXT): $(top_srcdir)/internal/thread.h
1231412339
process.$(OBJEXT): $(top_srcdir)/internal/time.h
1231512340
process.$(OBJEXT): $(top_srcdir)/internal/variable.h
@@ -12765,6 +12790,7 @@ random.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
1276512790
random.$(OBJEXT): $(top_srcdir)/internal/serial.h
1276612791
random.$(OBJEXT): $(top_srcdir)/internal/set_table.h
1276712792
random.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
12793+
random.$(OBJEXT): $(top_srcdir)/internal/struct.h
1276812794
random.$(OBJEXT): $(top_srcdir)/internal/variable.h
1276912795
random.$(OBJEXT): $(top_srcdir)/internal/vm.h
1277012796
random.$(OBJEXT): $(top_srcdir)/internal/warnings.h
@@ -13390,6 +13416,7 @@ re.$(OBJEXT): $(top_srcdir)/internal/serial.h
1339013416
re.$(OBJEXT): $(top_srcdir)/internal/set_table.h
1339113417
re.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
1339213418
re.$(OBJEXT): $(top_srcdir)/internal/string.h
13419+
re.$(OBJEXT): $(top_srcdir)/internal/struct.h
1339313420
re.$(OBJEXT): $(top_srcdir)/internal/time.h
1339413421
re.$(OBJEXT): $(top_srcdir)/internal/variable.h
1339513422
re.$(OBJEXT): $(top_srcdir)/internal/vm.h
@@ -14617,6 +14644,7 @@ ruby.$(OBJEXT): $(top_srcdir)/internal/serial.h
1461714644
ruby.$(OBJEXT): $(top_srcdir)/internal/set_table.h
1461814645
ruby.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
1461914646
ruby.$(OBJEXT): $(top_srcdir)/internal/string.h
14647+
ruby.$(OBJEXT): $(top_srcdir)/internal/struct.h
1462014648
ruby.$(OBJEXT): $(top_srcdir)/internal/thread.h
1462114649
ruby.$(OBJEXT): $(top_srcdir)/internal/variable.h
1462214650
ruby.$(OBJEXT): $(top_srcdir)/internal/vm.h
@@ -15259,6 +15287,7 @@ set.$(OBJEXT): $(top_srcdir)/internal/serial.h
1525915287
set.$(OBJEXT): $(top_srcdir)/internal/set_table.h
1526015288
set.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
1526115289
set.$(OBJEXT): $(top_srcdir)/internal/string.h
15290+
set.$(OBJEXT): $(top_srcdir)/internal/struct.h
1526215291
set.$(OBJEXT): $(top_srcdir)/internal/symbol.h
1526315292
set.$(OBJEXT): $(top_srcdir)/internal/variable.h
1526415293
set.$(OBJEXT): $(top_srcdir)/internal/vm.h
@@ -17321,6 +17350,7 @@ thread.$(OBJEXT): $(top_srcdir)/internal/set_table.h
1732117350
thread.$(OBJEXT): $(top_srcdir)/internal/signal.h
1732217351
thread.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
1732317352
thread.$(OBJEXT): $(top_srcdir)/internal/string.h
17353+
thread.$(OBJEXT): $(top_srcdir)/internal/struct.h
1732417354
thread.$(OBJEXT): $(top_srcdir)/internal/thread.h
1732517355
thread.$(OBJEXT): $(top_srcdir)/internal/time.h
1732617356
thread.$(OBJEXT): $(top_srcdir)/internal/variable.h
@@ -17577,6 +17607,7 @@ time.$(OBJEXT): $(top_srcdir)/internal/serial.h
1757717607
time.$(OBJEXT): $(top_srcdir)/internal/set_table.h
1757817608
time.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
1757917609
time.$(OBJEXT): $(top_srcdir)/internal/string.h
17610+
time.$(OBJEXT): $(top_srcdir)/internal/struct.h
1758017611
time.$(OBJEXT): $(top_srcdir)/internal/time.h
1758117612
time.$(OBJEXT): $(top_srcdir)/internal/variable.h
1758217613
time.$(OBJEXT): $(top_srcdir)/internal/vm.h
@@ -18876,6 +18907,7 @@ vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/serial.h
1887618907
vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/set_table.h
1887718908
vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
1887818909
vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/string.h
18910+
vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/struct.h
1887918911
vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/variable.h
1888018912
vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/vm.h
1888118913
vm_backtrace.$(OBJEXT): $(top_srcdir)/internal/warnings.h
@@ -19109,6 +19141,7 @@ vm_dump.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
1910919141
vm_dump.$(OBJEXT): $(top_srcdir)/internal/serial.h
1911019142
vm_dump.$(OBJEXT): $(top_srcdir)/internal/set_table.h
1911119143
vm_dump.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
19144+
vm_dump.$(OBJEXT): $(top_srcdir)/internal/struct.h
1911219145
vm_dump.$(OBJEXT): $(top_srcdir)/internal/variable.h
1911319146
vm_dump.$(OBJEXT): $(top_srcdir)/internal/vm.h
1911419147
vm_dump.$(OBJEXT): $(top_srcdir)/internal/warnings.h
@@ -19556,6 +19589,7 @@ vm_trace.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
1955619589
vm_trace.$(OBJEXT): $(top_srcdir)/internal/serial.h
1955719590
vm_trace.$(OBJEXT): $(top_srcdir)/internal/set_table.h
1955819591
vm_trace.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
19592+
vm_trace.$(OBJEXT): $(top_srcdir)/internal/struct.h
1955919593
vm_trace.$(OBJEXT): $(top_srcdir)/internal/symbol.h
1956019594
vm_trace.$(OBJEXT): $(top_srcdir)/internal/thread.h
1956119595
vm_trace.$(OBJEXT): $(top_srcdir)/internal/variable.h
@@ -20008,6 +20042,7 @@ yjit.$(OBJEXT): $(top_srcdir)/internal/serial.h
2000820042
yjit.$(OBJEXT): $(top_srcdir)/internal/set_table.h
2000920043
yjit.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
2001020044
yjit.$(OBJEXT): $(top_srcdir)/internal/string.h
20045+
yjit.$(OBJEXT): $(top_srcdir)/internal/struct.h
2001120046
yjit.$(OBJEXT): $(top_srcdir)/internal/variable.h
2001220047
yjit.$(OBJEXT): $(top_srcdir)/internal/vm.h
2001320048
yjit.$(OBJEXT): $(top_srcdir)/internal/warnings.h
@@ -20262,6 +20297,7 @@ zjit.$(OBJEXT): $(top_srcdir)/internal/serial.h
2026220297
zjit.$(OBJEXT): $(top_srcdir)/internal/set_table.h
2026320298
zjit.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
2026420299
zjit.$(OBJEXT): $(top_srcdir)/internal/string.h
20300+
zjit.$(OBJEXT): $(top_srcdir)/internal/struct.h
2026520301
zjit.$(OBJEXT): $(top_srcdir)/internal/variable.h
2026620302
zjit.$(OBJEXT): $(top_srcdir)/internal/vm.h
2026720303
zjit.$(OBJEXT): $(top_srcdir)/internal/warnings.h

ext/objspace/depend

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,7 @@ objspace.o: $(top_srcdir)/internal/sanitizers.h
401401
objspace.o: $(top_srcdir)/internal/serial.h
402402
objspace.o: $(top_srcdir)/internal/set_table.h
403403
objspace.o: $(top_srcdir)/internal/static_assert.h
404+
objspace.o: $(top_srcdir)/internal/struct.h
404405
objspace.o: $(top_srcdir)/internal/variable.h
405406
objspace.o: $(top_srcdir)/internal/vm.h
406407
objspace.o: $(top_srcdir)/internal/warnings.h
@@ -617,6 +618,7 @@ objspace_dump.o: $(top_srcdir)/internal/serial.h
617618
objspace_dump.o: $(top_srcdir)/internal/set_table.h
618619
objspace_dump.o: $(top_srcdir)/internal/static_assert.h
619620
objspace_dump.o: $(top_srcdir)/internal/string.h
621+
objspace_dump.o: $(top_srcdir)/internal/struct.h
620622
objspace_dump.o: $(top_srcdir)/internal/variable.h
621623
objspace_dump.o: $(top_srcdir)/internal/vm.h
622624
objspace_dump.o: $(top_srcdir)/internal/warnings.h

ext/ripper/depend

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -605,6 +605,7 @@ ripper.o: $(top_srcdir)/internal/serial.h
605605
ripper.o: $(top_srcdir)/internal/set_table.h
606606
ripper.o: $(top_srcdir)/internal/static_assert.h
607607
ripper.o: $(top_srcdir)/internal/string.h
608+
ripper.o: $(top_srcdir)/internal/struct.h
608609
ripper.o: $(top_srcdir)/internal/symbol.h
609610
ripper.o: $(top_srcdir)/internal/thread.h
610611
ripper.o: $(top_srcdir)/internal/variable.h

gc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3171,7 +3171,7 @@ gc_mark_classext_iclass(rb_classext_t *ext, bool prime, VALUE box_value, void *a
31713171
void
31723172
rb_gc_move_obj_during_marking(VALUE from, VALUE to)
31733173
{
3174-
if (rb_obj_gen_fields_p(to)) {
3174+
if (rb_obj_using_gen_fields_table_p(to)) {
31753175
rb_mark_generic_ivar(from);
31763176
}
31773177
}
@@ -3181,7 +3181,7 @@ rb_gc_mark_children(void *objspace, VALUE obj)
31813181
{
31823182
struct gc_mark_classext_foreach_arg foreach_args;
31833183

3184-
if (rb_obj_gen_fields_p(obj)) {
3184+
if (rb_obj_using_gen_fields_table_p(obj)) {
31853185
rb_mark_generic_ivar(obj);
31863186
}
31873187

shape.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#define RUBY_SHAPE_H
33

44
#include "internal/gc.h"
5+
#include "internal/struct.h"
56

67
typedef uint16_t attr_index_t;
78
typedef uint32_t shape_id_t;
@@ -452,6 +453,25 @@ rb_obj_gen_fields_p(VALUE obj)
452453
return rb_shape_obj_has_fields(obj);
453454
}
454455

456+
static inline bool
457+
rb_obj_using_gen_fields_table_p(VALUE obj)
458+
{
459+
switch (BUILTIN_TYPE(obj)) {
460+
case T_DATA:
461+
if (RTYPEDDATA_P(obj)) return false;
462+
break;
463+
464+
case T_STRUCT:
465+
if (!FL_TEST_RAW(obj, RSTRUCT_GEN_FIELDS)) return false;
466+
break;
467+
468+
default:
469+
break;
470+
}
471+
472+
return rb_obj_gen_fields_p(obj);
473+
}
474+
455475
// For ext/objspace
456476
RUBY_SYMBOL_EXPORT_BEGIN
457477
typedef void each_shape_callback(shape_id_t shape_id, void *data);

0 commit comments

Comments
 (0)