harpoon.Analysis
Class AllocationInformationMap.AllocationPropertiesImpl
java.lang.Object
harpoon.Analysis.AllocationInformationMap.AllocationPropertiesImpl
- All Implemented Interfaces:
- AllocationInformation.AllocationProperties, Serializable
- Enclosing class:
- AllocationInformationMap<HCE extends HCodeElement>
public static final class AllocationInformationMap.AllocationPropertiesImpl
- extends Object
- implements AllocationInformation.AllocationProperties, Serializable
A simple implementation of AllocationProperties
.
- See Also:
- Serialized Form
Constructor Summary |
AllocationInformationMap.AllocationPropertiesImpl(AllocationInformation.AllocationProperties ap,
TempMap tm)
|
AllocationInformationMap.AllocationPropertiesImpl(boolean hasInteriorPointers,
boolean canBeStackAllocated,
boolean canBeThreadAllocated,
boolean makeHeap,
boolean noSynchronization,
Temp allocationHeap,
HClass actualClass,
boolean setDynamicWBFlag)
|
AllocationInformationMap.AllocationPropertiesImpl(boolean hasInteriorPointers,
boolean canBeStackAllocated,
boolean canBeThreadAllocated,
boolean makeHeap,
boolean noSynchronization,
Temp allocationHeap,
HClass actualClass,
boolean setDynamicWBFlag,
Label labelOfPtrToMemoryChunk,
int uniqueID)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
AllocationInformationMap.AllocationPropertiesImpl
public AllocationInformationMap.AllocationPropertiesImpl(boolean hasInteriorPointers,
boolean canBeStackAllocated,
boolean canBeThreadAllocated,
boolean makeHeap,
boolean noSynchronization,
Temp allocationHeap,
HClass actualClass,
boolean setDynamicWBFlag)
AllocationInformationMap.AllocationPropertiesImpl
public AllocationInformationMap.AllocationPropertiesImpl(boolean hasInteriorPointers,
boolean canBeStackAllocated,
boolean canBeThreadAllocated,
boolean makeHeap,
boolean noSynchronization,
Temp allocationHeap,
HClass actualClass,
boolean setDynamicWBFlag,
Label labelOfPtrToMemoryChunk,
int uniqueID)
AllocationInformationMap.AllocationPropertiesImpl
public AllocationInformationMap.AllocationPropertiesImpl(AllocationInformation.AllocationProperties ap,
TempMap tm)
hasInteriorPointers
public boolean hasInteriorPointers()
- Specified by:
hasInteriorPointers
in interface AllocationInformation.AllocationProperties
- Returns:
true
if the object allocated at this
site has interior pointers; that is, it is not a primitive
array, and some field in the allocated object is not primitive.
canBeStackAllocated
public boolean canBeStackAllocated()
- Specified by:
canBeStackAllocated
in interface AllocationInformation.AllocationProperties
- Returns:
true
if the object can be allocated on
the stack; that is, the lifetime of the object does not
exceed the execution of the method containing the allocation.
canBeThreadAllocated
public boolean canBeThreadAllocated()
- Specified by:
canBeThreadAllocated
in interface AllocationInformation.AllocationProperties
- Returns:
true
if the object can be allocated on
a thread-local heap; that is, the lifetime of the object does
not exceed the lifetime of the thread object specified
by the allocationHeap
method.
makeHeap
public boolean makeHeap()
- Specified by:
makeHeap
in interface AllocationInformation.AllocationProperties
- Returns:
true
if a thread-local heap should be
associated with this object --- typically this means that
the allocation site is a thread creation. If this is
true
and canBeThreadAllocated()
is also true
, then the new object will be
itself allocated on the created heap; otherwise the
new object will be globally allocated.
noSync
public boolean noSync()
- Specified by:
noSync
in interface AllocationInformation.AllocationProperties
allocationHeap
public Temp allocationHeap()
- Specified by:
allocationHeap
in interface AllocationInformation.AllocationProperties
- Returns:
- a
Temp
which at the allocation site
contains a reference to either the thread object of a
thread-local allocation, or to another object whose lifetime
is correlated with that of the (not-yet-created) thread object.
Returns null
if the allocation should use the
heap associated with the "current" thread.
If this returns non-null
, then
makeHeap()
should return false
and
canBeThreadAllocated()
should return true
.
actualClass
public HClass actualClass()
- Specified by:
actualClass
in interface AllocationInformation.AllocationProperties
- Returns:
- the
HClass
representing the
"actual" or instantiated class of the object for which
memory is being allocated (as opposed to the declared
class).
setDynamicWBFlag
public boolean setDynamicWBFlag()
- Specified by:
setDynamicWBFlag
in interface AllocationInformation.AllocationProperties
- Returns:
true
if the dynamic write barrier
flag needs to be set when the object is allocated--this
typically means that one or more write barriers associated
with stores into the object created at this allocation site
have been optimistically removed.
getLabelOfPtrToMemoryChunk
public Label getLabelOfPtrToMemoryChunk()
- Specified by:
getLabelOfPtrToMemoryChunk
in interface AllocationInformation.AllocationProperties
- Returns:
- a
Label
for a pointer that points (at
runtime) to a preallocated memory chunk to be used for
this allocation site. Returns null
if we
cannot preallocate this allocation site.
getUniqueID
public int getUniqueID()
- Specified by:
getUniqueID
in interface AllocationInformation.AllocationProperties
- Returns:
- an unique integer ID for the allocation site.
Useful for instrumentation purposes.