我在读垃圾第一垃圾回收纸(http://cs.williams.edu/~dbarowy/cs334s18/assets/p37-detlefs.pdf),在第2.2节中提到了写屏障。为了从同一区域中过滤出对象,它有以下代码,当rtmp为0时表示rx和ry包含来自同一区域的指针
rTmp := rX XOR rY
rTmp := rTmp >> LogOfHeapRegionSize
但是如果假设logofheapregionsize是4(bin=100),rx启动地址(bin 0),ry启动地址(bin 111),很明显,它们不在同一个区域,但是应用上面的代码,我们得到
111 XOR 000 = 111
111 >> 4 = 0
他们在同一个地区,为什么?我对代码的理解正确吗?
暂无答案!
目前还没有任何答案,快来回答吧!