美文网首页
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