public abstract class INArrayRep<ARRAY_BASE_TYPE,REP_ENUM_TYPE,ELEMENT_TYPE>
extends java.lang.Object
Each representation assumes that all read operations are done under a shared latch and all updates (set, copy and compact) are done under an exclusive latch. As a result, the representations themselves do not make any provisions for synchronization.
The callers of all the potentially representation mutating methods:
must be careful to save the result value and use it for subsequent operations, since it could represent the new mutated object.Constructor and Description |
---|
INArrayRep() |
Modifier and Type | Method and Description |
---|---|
abstract long |
calculateMemorySize()
Returns the current memory size of the underlying representation in
bytes.
|
abstract ARRAY_BASE_TYPE |
compact(IN parent)
Chooses a more compact representation, if that's possible, otherwise
does nothing.
|
abstract ARRAY_BASE_TYPE |
copy(int from,
int to,
int n,
IN parent)
Copies n elements at index denoted by "from" to the index denoted by
"to".
|
abstract ELEMENT_TYPE |
get(int idx)
Returns the element at idx.
|
abstract REP_ENUM_TYPE |
getType() |
void |
noteRepChange(INArrayRep<ARRAY_BASE_TYPE,REP_ENUM_TYPE,ELEMENT_TYPE> newRep,
IN parent)
Performs the bookkeeping associated with a representation change.
|
abstract ARRAY_BASE_TYPE |
set(int idx,
ELEMENT_TYPE e,
IN parent)
Sets the array element at idx to the node.
|
(package private) abstract void |
updateCacheStats(boolean increment,
Evictor evictor)
Update the cache statistics for this representation.
|
(package private) void |
updateCacheStats(boolean increment,
IN parent)
Updates the cache statistics associated with this representation.
|
public abstract REP_ENUM_TYPE getType()
public abstract ARRAY_BASE_TYPE set(int idx, ELEMENT_TYPE e, IN parent)
idx
- the index to be sete
- the array elelement at the idxpublic abstract ELEMENT_TYPE get(int idx)
public abstract ARRAY_BASE_TYPE copy(int from, int to, int n, IN parent)
from
- the source (inclusive) of the copyto
- the target (inclusive) of the copyn
- the number of elements to be copied.public abstract ARRAY_BASE_TYPE compact(IN parent)
WARNING: This method must not change the memory size of the current representation and return 'this', without explicitly adjusting memory usage (via noteRepChange) before returning. Returning a new instance is the trigger for adjusting memory usage in the parent.
public abstract long calculateMemorySize()
abstract void updateCacheStats(boolean increment, Evictor evictor)
increment
- true the stat should be incremented, false if it must
be decrementedevictor
- the evictor that shoulds ths stat counters#updateCacheStats(boolean)
final void updateCacheStats(boolean increment, IN parent)
increment
- true if the stat is to be incremented, false if it is
to be decrementedpublic final void noteRepChange(INArrayRep<ARRAY_BASE_TYPE,REP_ENUM_TYPE,ELEMENT_TYPE> newRep, IN parent)
newRep
- the new representation that is replacing this one.Copyright (c) 2004-2012 Oracle. All rights reserved.