harpoon.Analysis.Maps
Interface AllocationInformation.AllocationProperties

All Known Implementing Classes:
AllocationInformationMap.AllocationPropertiesImpl, ChainedAllocationProperties, MyAP
Enclosing interface:
AllocationInformation<HCE extends HCodeElement>

public static interface AllocationInformation.AllocationProperties

AllocationProperties contains tests for the various possibly properties of an allocation site. "Atomic" allocations (of objects not containing interior pointers) can be done, as well as stack allocation, thread-local allocation, and pre-thread-start thread-local allocation. If none of these properties are true, the object must be allocated in a global heap.


Method Summary
 HClass actualClass()
           
 Temp allocationHeap()
           
 boolean canBeStackAllocated()
           
 boolean canBeThreadAllocated()
           
 Label getLabelOfPtrToMemoryChunk()
           
 int getUniqueID()
           
 boolean hasInteriorPointers()
           
 boolean makeHeap()
           
 boolean noSync()
           
 boolean setDynamicWBFlag()
           
 

Method Detail

hasInteriorPointers

boolean hasInteriorPointers()
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

boolean canBeStackAllocated()
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

boolean canBeThreadAllocated()
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

boolean makeHeap()
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.

allocationHeap

Temp allocationHeap()
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

HClass actualClass()
Returns:
the HClass representing the "actual" or instantiated class of the object for which memory is being allocated (as opposed to the declared class).

noSync

boolean noSync()

setDynamicWBFlag

boolean setDynamicWBFlag()
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

Label getLabelOfPtrToMemoryChunk()
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

int getUniqueID()
Returns:
an unique integer ID for the allocation site. Useful for instrumentation purposes.