Package com.sun.corba.ee.impl.misc
Class CacheTable<K>
java.lang.Object
com.sun.corba.ee.impl.misc.CacheTable<K>
This is a hash table implementation that simultaneously maps key to value
and value to key. It is used for marshalling and unmarshalling value types,
where it is necessary to track the correspondence between object instances
and their offsets in a stream. It is also used for tracking indirections for
Strings that represent codebases and repositoryids.
Since the offset is always non-negative,
only non-negative values should be stored here (and storing -1 will cause
failures). Also note that the same key (Object) may be stored with multiple
values (int offsets) due to the way readResolve works (see also GlassFish issue 1605).
- Since:
- 1.1
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate String
private int
private static final int
private static final int
private CacheTable<K>.Entry<K>[]
private static final int
private boolean
private ORB
private CacheTable<K>.Entry<K>[]
private int
private int
private static final ORBUtilSystemException
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal boolean
containsKey
(K key) final boolean
containsVal
(int val) void
done()
final K
getKey
(int val) Return the key where (key,val) is present in the map.final int
Returns some int val where (key,val) is in this CacheTable.private void
grow()
private int
hash
(int val) private int
private int
hashModTableSize
(int h) private void
final void
Store the (key,val) pair in the hash table, unless (key,val) is already present.private boolean
-
Field Details
-
wrapper
-
noReverseMap
private boolean noReverseMap -
cacheType
-
INITIAL_SIZE
private static final int INITIAL_SIZE- See Also:
-
MAX_SIZE
private static final int MAX_SIZE- See Also:
-
INITIAL_THRESHHOLD
private static final int INITIAL_THRESHHOLD- See Also:
-
size
private int size -
threshhold
private int threshhold -
entryCount
private int entryCount -
map
-
rmap
-
orb
-
-
Constructor Details
-
CacheTable
-
-
Method Details
-
initTables
private void initTables() -
grow
private void grow() -
hashModTableSize
private int hashModTableSize(int h) -
hash
-
hash
private int hash(int val) -
put
Store the (key,val) pair in the hash table, unless (key,val) is already present. Returns true if a new (key,val) pair was added, else false. val must be non-negative, but this is not checked.- Parameters:
key
- Key for tableval
- Non-negative value
-
put_table
-
containsKey
-
getVal
Returns some int val where (key,val) is in this CacheTable.- Parameters:
key
- Key to lookup- Returns:
- Value found
-
containsVal
public final boolean containsVal(int val) -
getKey
Return the key where (key,val) is present in the map.- Parameters:
val
- Value to lookup- Returns:
- Key for the value
-
done
public void done()
-