mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
Add RARRAY_LITERAL_FLAG for array literals
Array created as literals during iseq compilation don't need a reference count since they can never be modified. The previous implementation would mutate the hidden array's reference count, causing copy-on-write invalidation. This commit adds a RARRAY_LITERAL_FLAG for arrays created through rb_ary_literal_new. Arrays created with this flag do not have reference count stored and just assume they have infinite number of references. Co-authored-by: Jean Boussier <jean.boussier@gmail.com>
This commit is contained in:
parent
b25ee69e38
commit
5871ecf956
Notes:
git
2022-07-21 02:14:17 +09:00
3 changed files with 37 additions and 14 deletions
|
@ -33,6 +33,7 @@ void rb_ary_cancel_sharing(VALUE ary);
|
|||
size_t rb_ary_size_as_embedded(VALUE ary);
|
||||
void rb_ary_make_embedded(VALUE ary);
|
||||
bool rb_ary_embeddable_p(VALUE ary);
|
||||
VALUE rb_ary_literal_new(long capa);
|
||||
|
||||
static inline VALUE rb_ary_entry_internal(VALUE ary, long offset);
|
||||
static inline bool ARY_PTR_USING_P(VALUE ary);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue