mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
Move FL_SINGLETON to FL_USER1
This frees FL_USER0 on both T_MODULE and T_CLASS. Note: prior to this, FL_SINGLETON was never set on T_MODULE, so checking for `FL_SINGLETON` without first checking that `FL_TYPE` was `T_CLASS` was valid. That's no longer the case.
This commit is contained in:
parent
b88973165a
commit
b4a69351ec
23 changed files with 76 additions and 56 deletions
|
@ -198,7 +198,7 @@ gen_method_name(VALUE owner, VALUE name)
|
|||
{
|
||||
bool permanent;
|
||||
if (RB_TYPE_P(owner, T_CLASS) || RB_TYPE_P(owner, T_MODULE)) {
|
||||
if (RBASIC(owner)->flags & FL_SINGLETON) {
|
||||
if (RCLASS_SINGLETON_P(owner)) {
|
||||
VALUE v = RCLASS_ATTACHED_OBJECT(owner);
|
||||
if (RB_TYPE_P(v, T_CLASS) || RB_TYPE_P(v, T_MODULE)) {
|
||||
v = rb_mod_name0(v, &permanent);
|
||||
|
@ -1784,7 +1784,7 @@ rb_profile_frame_classpath(VALUE frame)
|
|||
if (RB_TYPE_P(klass, T_ICLASS)) {
|
||||
klass = RBASIC(klass)->klass;
|
||||
}
|
||||
else if (FL_TEST(klass, FL_SINGLETON)) {
|
||||
else if (RCLASS_SINGLETON_P(klass)) {
|
||||
klass = RCLASS_ATTACHED_OBJECT(klass);
|
||||
if (!RB_TYPE_P(klass, T_CLASS) && !RB_TYPE_P(klass, T_MODULE))
|
||||
return rb_sprintf("#<%s:%p>", rb_class2name(rb_obj_class(klass)), (void*)klass);
|
||||
|
@ -1801,7 +1801,7 @@ rb_profile_frame_singleton_method_p(VALUE frame)
|
|||
{
|
||||
VALUE klass = frame2klass(frame);
|
||||
|
||||
return RBOOL(klass && !NIL_P(klass) && FL_TEST(klass, FL_SINGLETON));
|
||||
return RBOOL(klass && !NIL_P(klass) && RCLASS_SINGLETON_P(klass));
|
||||
}
|
||||
|
||||
VALUE
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue