< prev index next >

src/share/vm/gc/g1/g1StringDedupTable.hpp

Print this page

        

*** 38,53 **** --- 38,55 ---- // class G1StringDedupEntry : public CHeapObj<mtGC> { private: G1StringDedupEntry* _next; unsigned int _hash; + bool _latin1; typeArrayOop _obj; public: G1StringDedupEntry() : _next(NULL), _hash(0), + _latin1(false), _obj(NULL) { } G1StringDedupEntry* next() { return _next;
*** 67,76 **** --- 69,86 ---- void set_hash(unsigned int hash) { _hash = hash; } + bool latin1() { + return _latin1; + } + + void set_latin1(bool latin1) { + _latin1 = latin1; + } + typeArrayOop obj() { return _obj; } typeArrayOop* obj_addr() {
*** 150,183 **** size_t hash_to_index(unsigned int hash) { return (size_t)hash & (_size - 1); } // Adds a new table entry to the given hash bucket. ! void add(typeArrayOop value, unsigned int hash, G1StringDedupEntry** list); // Removes the given table entry from the table. void remove(G1StringDedupEntry** pentry, uint worker_id); // Transfers a table entry from the current table to the destination table. void transfer(G1StringDedupEntry** pentry, G1StringDedupTable* dest); // Returns an existing character array in the given hash bucket, or NULL // if no matching character array exists. ! typeArrayOop lookup(typeArrayOop value, unsigned int hash, G1StringDedupEntry** list, uintx &count); // Returns an existing character array in the table, or inserts a new // table entry if no matching character array exists. ! typeArrayOop lookup_or_add_inner(typeArrayOop value, unsigned int hash); // Thread safe lookup or add of table entry ! static typeArrayOop lookup_or_add(typeArrayOop value, unsigned int hash) { // Protect the table from concurrent access. Also note that this lock // acts as a fence for _table, which could have been replaced by a new // instance if the table was resized or rehashed. MutexLockerEx ml(StringDedupTable_lock, Mutex::_no_safepoint_check_flag); ! return _table->lookup_or_add_inner(value, hash); } // Returns true if the hashtable is currently using a Java compatible // hash function. static bool use_java_hash() { --- 160,193 ---- size_t hash_to_index(unsigned int hash) { return (size_t)hash & (_size - 1); } // Adds a new table entry to the given hash bucket. ! void add(typeArrayOop value, bool latin1, unsigned int hash, G1StringDedupEntry** list); // Removes the given table entry from the table. void remove(G1StringDedupEntry** pentry, uint worker_id); // Transfers a table entry from the current table to the destination table. void transfer(G1StringDedupEntry** pentry, G1StringDedupTable* dest); // Returns an existing character array in the given hash bucket, or NULL // if no matching character array exists. ! typeArrayOop lookup(typeArrayOop value, bool latin1, unsigned int hash, G1StringDedupEntry** list, uintx &count); // Returns an existing character array in the table, or inserts a new // table entry if no matching character array exists. ! typeArrayOop lookup_or_add_inner(typeArrayOop value, bool latin1, unsigned int hash); // Thread safe lookup or add of table entry ! static typeArrayOop lookup_or_add(typeArrayOop value, bool latin1, unsigned int hash) { // Protect the table from concurrent access. Also note that this lock // acts as a fence for _table, which could have been replaced by a new // instance if the table was resized or rehashed. MutexLockerEx ml(StringDedupTable_lock, Mutex::_no_safepoint_check_flag); ! return _table->lookup_or_add_inner(value, latin1, hash); } // Returns true if the hashtable is currently using a Java compatible // hash function. static bool use_java_hash() {
*** 186,196 **** static bool equals(typeArrayOop value1, typeArrayOop value2); // Computes the hash code for the given character array, using the // currently active hash function and hash seed. ! static unsigned int hash_code(typeArrayOop value); static uintx unlink_or_oops_do(G1StringDedupUnlinkOrOopsDoClosure* cl, size_t partition_begin, size_t partition_end, uint worker_id); --- 196,206 ---- static bool equals(typeArrayOop value1, typeArrayOop value2); // Computes the hash code for the given character array, using the // currently active hash function and hash seed. ! static unsigned int hash_code(typeArrayOop value, bool latin1); static uintx unlink_or_oops_do(G1StringDedupUnlinkOrOopsDoClosure* cl, size_t partition_begin, size_t partition_end, uint worker_id);
< prev index next >