< prev index next >

src/share/vm/utilities/nativeCallStack.cpp

Print this page
rev 7899 : imported patch nmtfix

*** 53,62 **** --- 53,63 ---- _stack[index] = pc[index]; } for (; index < NMT_TrackingStackDepth; index ++) { _stack[index] = NULL; } + _hash_value = 0; } // number of stack frames captured int NativeCallStack::frames() const { int index;
*** 67,89 **** } return index; } // Hash code. Any better algorithm? ! int NativeCallStack::hash() const { ! long hash_val = _hash_value; if (hash_val == 0) { ! long pc; ! int index; ! for (index = 0; index < NMT_TrackingStackDepth; index ++) { ! pc = (long)_stack[index]; ! if (pc == 0) break; ! hash_val += pc; } NativeCallStack* p = const_cast<NativeCallStack*>(this); ! p->_hash_value = (int)(hash_val & 0xFFFFFFFF); } return _hash_value; } void NativeCallStack::print_on(outputStream* out) const { --- 68,87 ---- } return index; } // Hash code. Any better algorithm? ! unsigned int NativeCallStack::hash() const { ! uintptr_t hash_val = _hash_value; if (hash_val == 0) { ! for (int index = 0; index < NMT_TrackingStackDepth; index++) { ! if (_stack[index] == NULL) break; ! hash_val += (uintptr_t)_stack[index]; } NativeCallStack* p = const_cast<NativeCallStack*>(this); ! p->_hash_value = (unsigned int)(hash_val & 0xFFFFFFFF); } return _hash_value; } void NativeCallStack::print_on(outputStream* out) const {
< prev index next >