美文网首页
isa详解-位域

isa详解-位域

作者: 大鹅ne | 来源:发表于2020-06-22 17:33 被阅读0次

```

union isa_t

{

      Class  cls;

      uintptr_t  bits;

      Struct{

        uintptr_t  nopointer                      :  1;

      uintptr_t  has_assoc                :  1;

      uintptr_t has_cxx_dtor              :  1;

      uintptr_t shiftcls              :  33;

      uintptr_t magic              :  6;

      uintptr_t weakly_referenced          :  1;

      uintptr_t deallocating            :  1;

      uintptr_t has_sidetable_rc              :  1;

      uintptr_t extra_rc              :  1;

      }

}

```

🪐nonpionter

0,代表普通的指针,存储着Class,Meta-class对象的内存地址

1,代表优化过,使用位域存储更多的信息

🪐has_assoc

是否设置过关联对象,如果没有,释放时会更快

🪐has_cxx_dtor

是否有c++的析构函数(.cxx_destruct),如果没有,释放时会更快

🪐shiftcls

存储着Class,Meta-Class对象的内存地址信息

🪐magic

用于在调试时分辨对象是否未完成初始化

🪐weakly_referenced

是否有被弱引用指向过,如果没有,释放时会更快

🪐deallocating

对象是否正在释放

🪐extra_rc

里面存储的值是引用计数器减1

🪐has_sidetable_rc

引用计数器是否过大无法存储在isa中

如果为1,那么引用计数会存储在一个叫SideTable的类的属性中

相关文章

网友评论

      本文标题:isa详解-位域

      本文链接:https://www.haomeiwen.com/subject/jpkffktx.html