diff options
author | yui-knk <spiketeika@gmail.com> | 2023-03-30 19:26:29 +0900 |
---|---|---|
committer | Yuichiro Kaneko <spiketeika@gmail.com> | 2023-03-31 09:38:34 +0900 |
commit | 3488eda41d42bf910b7c485c178faf5e82f0c27c (patch) | |
tree | b094520c306a36f35522b88f9dd6599c488fcef8 /.github/workflows | |
parent | a8782c454ce3590ecad3ec5da4a54347a7326683 (diff) | |
download | ruby-3488eda41d42bf910b7c485c178faf5e82f0c27c.tar.gz |
Fix gc_verify_internal_consistency error for pattern_matching in ripper
`gc_verify_internal_consistency` reports "found internal inconsistency"
for "test_pattern_matching.rb".
http://ci.rvm.jp/results/trunk-gc-asserts@ruby-sp2-docker/4501173
Ruby's parser manages objects by two different ways.
1. For parser
* markable node holds objects
* call `RB_OBJ_WRITTEN` with `p->ast` as parent
* `mark_ast_value` marks objects
2. For ripper
* unmarkable node, NODE_RIPPER/NODE_CDECL, holds objects
* call `rb_ast_add_mark_object`. This function calls `rb_hash_aset` then
`RB_OBJ_WRITTEN` is called with `mark_hash` as parent
* `mark_hash` marks objects
However in current pattern_matching implementation
* markable node holds objects
* call `rb_ast_add_mark_object`
This commit fix it to be #2.
This was inconsistency however always `mark_hash` is
made young by `rb_ast_add_mark_object` call then objects
are not collected.
Diffstat (limited to '.github/workflows')
0 files changed, 0 insertions, 0 deletions