src/share/vm/oops/symbol.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/oops/symbol.hpp	Wed Apr 15 12:03:16 2015
--- new/src/share/vm/oops/symbol.hpp	Wed Apr 15 12:03:15 2015

*** 221,230 **** --- 221,252 ---- // printing on default output stream void print() { print_on(tty); } void print_value() { print_value_on(tty); } + // Allows two distinct Symbol objects to be considered equal as long as + // they contain the same string. However, no two Symbol objects stored in the same + // SymbolTable would contain the same string. Therefore, if two distinct Symbol + // objects contain the same string, they must belong to different SymbolTables. + inline bool equals(const Symbol* other) const { + if (this && other) { + int len = this->utf8_length(); + if (len != other->utf8_length()) { + return false; + } + if (this->_identity_hash != other->_identity_hash) { + return false; + } + return (strncmp((const char*)(this->base()), (const char*)(other->base()), len) == 0); + } else { + return (this == other); + } + } + inline bool not_equals(const Symbol* other) const { + return !(this->equals(other)); + } + #ifndef PRODUCT // Empty constructor to create a dummy symbol object on stack // only for getting its vtable pointer. Symbol() { }

src/share/vm/oops/symbol.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File