summaryrefslogtreecommitdiffstats
path: root/gc.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-06-19 06:28:53 -0700
committerKaz Kylheku <kaz@kylheku.com>2019-06-19 06:28:53 -0700
commit5b0d68a85dd9e9dca020ac4bfbbcf72cf8347a2b (patch)
tree3da967385adf201335522f26ef66b1629bf70f7e /gc.c
parentcd2620a2a3455a127d938819a673c3bc1c97d612 (diff)
downloadtxr-5b0d68a85dd9e9dca020ac4bfbbcf72cf8347a2b.tar.gz
txr-5b0d68a85dd9e9dca020ac4bfbbcf72cf8347a2b.tar.bz2
txr-5b0d68a85dd9e9dca020ac4bfbbcf72cf8347a2b.zip
structs: gc bug due to derived hook.
* struct.c (make_struct_type): The static slot lookup for for a derived method in the supertype can potentially allocate a cons cell when there is a cache miss, which can trigger gc. So we can't be doing this while a the new type object object is partially initialized, because then the garbage collector will visit uninitialized memory. We move the derived method lookup down farther to where that value is needed to do the derived call, just before we return the new type.
Diffstat (limited to 'gc.c')
0 files changed, 0 insertions, 0 deletions