From: s.wanabe@...
Date: 2019-05-14T00:08:14+00:00
Subject: [ruby-core:92637] [Ruby trunk Feature#15833] Some refactors for	shared-root array

Issue #15833 has been updated by wanabe (_ wanabe).


Eregon (Benoit Daloze) wrote:
> I think nowadays RArray should be considered internal and C extensions should not access members of struct RArray directly, as that's very likely going to be incorrect or very complex.
> I don't think many C extensions use RArray directly, but it would be good to check.

Thank you to comment.
I didn't think about C extension but the readability of MRI itself.
`struct RArray` definition can't move from `include/ruby/ruby.h`, so it can't be avoided to modify `include/ruby/ruby.h` if I want to rename `struct RArray` member for readability.

But I change my mind that it may not be good to export `RARRAY_SHARED_ROOT_FLAG`.
I will drop `0002-Export-RARRAY_SHARED_ROOT_FLAG.patch`.
And I will also drop `0003-Fix-object-info-of-shared-root-array.patch` because it it based on above 0002.



----------------------------------------
Feature #15833: Some refactors for shared-root array
https://bugs.ruby-lang.org/issues/15833#change-77999

* Author: wanabe (_ wanabe)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
I wrote some patches for shared-root array.
But I can't decide whether to commit them because they include the modification of public header `include/ruby/ruby.h`.

To ruby core team (I'm not assuming anyone in particular):
Can I modify `include/ruby/ruby.h` by the patches?

The following is descriptions of the patches.

`0001-Name-RArray-member-to-count-reference-of-shared-root.patch` names reference count of shared-root array.
So far, `as.heap.aux.capa` is used as reference count but it is different from the reality, reference count.
This is a follow up of r19824.

`0002-Export-RARRAY_SHARED_ROOT_FLAG.patch` exports RARRAY_SHARED_ROOT_FLAG.
I followed other flags as in RARRAY_EMBED_FLAG or RARRAY_TRANSIENT_FLAG.

`0003-Fix-object-info-of-shared-root-array.patch` is not a refactor but feature request patch based on above ones.
`rb_obj_info` outputs shared-root array info as same as normal array currently, but its capa is not a really "capa" as I said.

---Files--------------------------------
0001-Name-RArray-member-to-count-reference-of-shared-root.patch (1.42 KB)
0002-Export-RARRAY_SHARED_ROOT_FLAG.patch (1.54 KB)
0003-Fix-object-info-of-shared-root-array.patch (1.04 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>