Odd Loop x86 CodeGen Behavior
Edward Lee
edilee at gmail.com
Wed Dec 10 07:46:09 PST 2008
On Wed, Dec 10, 2008 at 12:29 AM, Edward Lee <edilee at gmail.com> wrote:
> I've attached the original output...
To help figure out what the ideal graph/x86 is doing, I've
"hand-disassembled" to the resulting inlined/magic high level, which
should be something similar to..
BasePage FileContainer::getUserPage(BaseContainerHandle a0,
long pageNumber, boolean a2, boolean a3) {
Entry[] table = this.pageCache.cache_.table;
int hash = (int) (this.identity.containerId ^ this.identity.segmentId);
hash = (int) ((long) hash ^ pageNumber);
hash = hash ^ (hash >>> 20) ^ (hash >>> 12);
hash = hash ^ (hash >>> 7) ^ (hash >>> 4);
Entry<PageKey, CachedItem> entry = table[hash & table.length - 1];
while (entry != null) {
if (entry.hash == hash && entry.key.pageNumber == pageNumber)
break;
entry = entry.next;
}
this.pageCache.stat.findHit++;
entry.value.recentlyUsed_ = true;
entry.value.keepCount++;
this.latchPage(a0, entry.value.entry, a3);
return entry.value.entry;
}
Ed
More information about the hotspot-dev
mailing list