public abstract class AllocationSnippets extends Object implements Snippets
| Modifier and Type | Class and Description |
|---|---|
static class |
AllocationSnippets.AllocationProfilingData |
static class |
AllocationSnippets.AllocationSnippetCounters |
static class |
AllocationSnippets.FillContent |
| Constructor and Description |
|---|
AllocationSnippets() |
| Modifier and Type | Method and Description |
|---|---|
Object |
allocateArrayImpl(Word hub,
int length,
int arrayBaseOffset,
int log2ElementSize,
AllocationSnippets.FillContent fillContents,
int fillStartOffset,
boolean emitMemoryBarrier,
boolean maybeUnroll,
boolean supportsBulkZeroing,
boolean supportsOptimizedFilling,
AllocationSnippets.AllocationProfilingData profilingData) |
protected Object |
allocateInstanceImpl(Word hub,
org.graalvm.word.UnsignedWord size,
AllocationSnippets.FillContent fillContents,
boolean emitMemoryBarrier,
boolean constantSize,
AllocationSnippets.AllocationProfilingData profilingData) |
protected org.graalvm.word.UnsignedWord |
arrayAllocationSize(int length,
int arrayBaseOffset,
int log2ElementSize) |
static long |
arrayAllocationSize(int length,
int arrayBaseOffset,
int log2ElementSize,
int alignment)
We do an unsigned multiplication so that a negative array length will result in an array size
greater than Integer.MAX_VALUE.
|
abstract int |
arrayLengthOffset() |
protected abstract Object |
callNewArrayStub(Word hub,
int length,
int fillStartOffset) |
protected abstract Object |
callNewInstanceStub(Word hub) |
protected abstract Object |
callNewMultiArrayStub(Word hub,
int rank,
Word dims) |
protected void |
emitMemoryBarrierIf(boolean emitMemoryBarrier) |
void |
emitPrefetchAllocate(Word address,
boolean isArray) |
protected void |
fillMemoryAligned(long value,
Word memory,
org.graalvm.word.UnsignedWord fromOffset,
org.graalvm.word.UnsignedWord endOffset,
boolean isEndOffsetConstant,
org.graalvm.word.UnsignedWord remainingSize,
boolean supportsBulkZeroing,
boolean supportsOptimizedFilling,
AllocationSnippets.AllocationSnippetCounters snippetCounters) |
protected void |
fillMemoryAlignedUnrollable(long value,
Word memory,
org.graalvm.word.UnsignedWord fromOffset,
org.graalvm.word.UnsignedWord endOffset,
boolean supportsOptimizedFilling,
AllocationSnippets.AllocationSnippetCounters snippetCounters) |
Object |
formatArray(Word hub,
org.graalvm.word.UnsignedWord allocationSize,
int length,
Word memory,
AllocationSnippets.FillContent fillContents,
int fillStartOffset,
boolean emitMemoryBarrier,
boolean maybeUnroll,
boolean supportsBulkZeroing,
boolean supportsOptimizedFilling,
AllocationSnippets.AllocationSnippetCounters snippetCounters)
Formats some allocated memory with an object header and zeroes out the rest.
|
Object |
formatObject(Word hub,
org.graalvm.word.UnsignedWord size,
Word memory,
AllocationSnippets.FillContent fillContents,
boolean emitMemoryBarrier,
boolean constantSize,
AllocationSnippets.AllocationSnippetCounters snippetCounters)
Formats some allocated memory with an object header and zeroes out the rest.
|
protected abstract int |
getMinimalBulkZeroingSize() |
protected abstract int |
getPrefetchDistance() |
protected abstract int |
getPrefetchLines(boolean isArray) |
protected abstract int |
getPrefetchStepSize() |
protected abstract int |
getPrefetchStyle() |
abstract Word |
getTLABInfo() |
abstract void |
initializeObjectHeader(Word memory,
Word hub,
boolean isArray) |
protected abstract int |
instanceHeaderSize() |
protected Object |
newMultiArrayImpl(Word hub,
int rank,
int[] dimensions) |
protected abstract int |
objectAlignment() |
protected abstract void |
profileAllocation(AllocationSnippets.AllocationProfilingData profilingData,
org.graalvm.word.UnsignedWord size) |
abstract Word |
readTlabEnd(Word tlabInfo) |
abstract Word |
readTlabTop(Word tlabInfo) |
protected abstract boolean |
shouldAllocateInTLAB(org.graalvm.word.UnsignedWord allocationSize,
boolean isArray) |
abstract boolean |
useTLAB() |
protected abstract Object |
verifyOop(Object obj) |
abstract void |
writeTlabTop(Word tlabInfo,
Word newTop) |
protected Object allocateInstanceImpl(Word hub, org.graalvm.word.UnsignedWord size, AllocationSnippets.FillContent fillContents, boolean emitMemoryBarrier, boolean constantSize, AllocationSnippets.AllocationProfilingData profilingData)
public Object allocateArrayImpl(Word hub, int length, int arrayBaseOffset, int log2ElementSize, AllocationSnippets.FillContent fillContents, int fillStartOffset, boolean emitMemoryBarrier, boolean maybeUnroll, boolean supportsBulkZeroing, boolean supportsOptimizedFilling, AllocationSnippets.AllocationProfilingData profilingData)
protected org.graalvm.word.UnsignedWord arrayAllocationSize(int length,
int arrayBaseOffset,
int log2ElementSize)
public static long arrayAllocationSize(int length,
int arrayBaseOffset,
int log2ElementSize,
int alignment)
protected void fillMemoryAlignedUnrollable(long value,
Word memory,
org.graalvm.word.UnsignedWord fromOffset,
org.graalvm.word.UnsignedWord endOffset,
boolean supportsOptimizedFilling,
AllocationSnippets.AllocationSnippetCounters snippetCounters)
protected void fillMemoryAligned(long value,
Word memory,
org.graalvm.word.UnsignedWord fromOffset,
org.graalvm.word.UnsignedWord endOffset,
boolean isEndOffsetConstant,
org.graalvm.word.UnsignedWord remainingSize,
boolean supportsBulkZeroing,
boolean supportsOptimizedFilling,
AllocationSnippets.AllocationSnippetCounters snippetCounters)
public Object formatObject(Word hub, org.graalvm.word.UnsignedWord size, Word memory, AllocationSnippets.FillContent fillContents, boolean emitMemoryBarrier, boolean constantSize, AllocationSnippets.AllocationSnippetCounters snippetCounters)
public Object formatArray(Word hub, org.graalvm.word.UnsignedWord allocationSize, int length, Word memory, AllocationSnippets.FillContent fillContents, int fillStartOffset, boolean emitMemoryBarrier, boolean maybeUnroll, boolean supportsBulkZeroing, boolean supportsOptimizedFilling, AllocationSnippets.AllocationSnippetCounters snippetCounters)
protected void emitMemoryBarrierIf(boolean emitMemoryBarrier)
public void emitPrefetchAllocate(Word address, boolean isArray)
protected abstract int getPrefetchStyle()
protected abstract int getPrefetchLines(boolean isArray)
protected abstract int getPrefetchStepSize()
protected abstract int getPrefetchDistance()
public abstract boolean useTLAB()
protected abstract boolean shouldAllocateInTLAB(org.graalvm.word.UnsignedWord allocationSize,
boolean isArray)
public abstract Word getTLABInfo()
protected abstract int instanceHeaderSize()
public abstract void initializeObjectHeader(Word memory, Word hub, boolean isArray)
protected abstract Object callNewArrayStub(Word hub, int length, int fillStartOffset)
protected abstract Object callNewMultiArrayStub(Word hub, int rank, Word dims)
protected abstract int getMinimalBulkZeroingSize()
protected abstract void profileAllocation(AllocationSnippets.AllocationProfilingData profilingData, org.graalvm.word.UnsignedWord size)
public abstract int arrayLengthOffset()
protected abstract int objectAlignment()