harpoon.Analysis
Class ChainedAllocationProperties
java.lang.Object
harpoon.Analysis.ChainedAllocationProperties
- All Implemented Interfaces:
- AllocationInformation.AllocationProperties
public class ChainedAllocationProperties
- extends Object
- implements AllocationInformation.AllocationProperties
ChainedAllocationProperties allows us to change
several properties of an already existing
AllocationProperties. By default, it forwards each
request to the original AllocationProperties that
it's chained with (that object is passed to the
ChainedAllocationProperties constructor). By
overriding some of its methods, we can change only several
allocation properties attached with a specific allocation site.
- Version:
- $Id: ChainedAllocationProperties.java,v 1.2 2003/03/03 23:41:27 salcianu Exp $
- Author:
- Alexandru Salcianu <salcianu@MIT.edu>
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ChainedAllocationProperties
public ChainedAllocationProperties(AllocationInformation.AllocationProperties oap)
- Createsv a new
ChainedAllocationProperties
object
- Parameters:
oap - original AllocationProperties; the
created ChainedAllocationProperties is chained
with oap. By default, all method calls are
forwarded toward oap.
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.
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).
noSync
public boolean noSync()
- Specified by:
noSync in interface AllocationInformation.AllocationProperties
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.