< prev index next >
agent/src/share/classes/sun/jvm/hotspot/oops/Symbol.java
Print this page
*** 78,91 ****
public long getLength() { return length.getValue(this.addr); }
public byte getByteAt(long index) {
return addr.getJByteAt(baseOffset + index);
}
!
private static CIntegerField idHash;
! public int identityHash() { return (int)idHash.getValue(this.addr); }
public boolean equals(byte[] modUTF8Chars) {
int l = (int) getLength();
if (l != modUTF8Chars.length) return false;
while (l-- > 0) {
--- 78,100 ----
public long getLength() { return length.getValue(this.addr); }
public byte getByteAt(long index) {
return addr.getJByteAt(baseOffset + index);
}
! // _identity_hash is a short
private static CIntegerField idHash;
! public int identityHash() {
! long addr_value = getAddress().asLongValue();
! int addr_bits = (int)(addr_value >> (VM.getVM().getLogMinObjAlignmentInBytes() + 3));
! int length = (int)getLength();
! int byte0 = getByteAt(0);
! int byte1 = getByteAt(1);
! int id_hash = (int)(0xffff & idHash.getValue(this.addr));
! return id_hash |
! ((addr_bits ^ (length << 8) ^ ((byte0 << 8) | byte1)) << 16);
! }
public boolean equals(byte[] modUTF8Chars) {
int l = (int) getLength();
if (l != modUTF8Chars.length) return false;
while (l-- > 0) {
< prev index next >