A port of the VM's StubQueue. Note that the VM implicitly knows the type of the objects contained in each StubQueue because it passes in an instance of a StubInterface to the StubQueue's constructor; the goal in the VM was to save space in the generated code. In the SA APIs the pattern has been to use the VirtualConstructor mechanism to instantiate wrapper objects of the appropriate type for objects down in the VM; see, for example, the CodeCache, which identifies NMethods, RuntimeStubs, etc.
In this port we eliminate the StubInterface in favor of passing in the class corresponding to the type of Stub which this StubQueue contains.
| Modifier and Type | Field and Description |
|---|---|
| private static CIntegerField | |
| private static CIntegerField | |
| private static CIntegerField | |
| private static CIntegerField | |
| private static AddressField | |
| private Class |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| private void | |
| public boolean | |
| private long | |
| public Stub | |
| private long | |
| public Stub | |
| public int | |
| public Stub | |
| private long | |
| private long | |
| private Stub | |
| private Address | |
| public Stub | |
| private long | |
| private static synchronized void | |
| public boolean |
| bufferLimitField | back to summary |
|---|---|
| private static CIntegerField bufferLimitField | |
| numberOfStubsField | back to summary |
|---|---|
| private static CIntegerField numberOfStubsField | |
| queueBeginField | back to summary |
|---|---|
| private static CIntegerField queueBeginField | |
| queueEndField | back to summary |
|---|---|
| private static CIntegerField queueEndField | |
| stubBufferField | back to summary |
|---|---|
| private static AddressField stubBufferField | |
| stubType | back to summary |
|---|---|
| private Class<?> stubType | |
| StubQueue | back to summary |
|---|---|
| public StubQueue(Address addr, Class<T> stubType) | |
| checkIndex | back to summary |
|---|---|
| private void checkIndex(long i) | |
| contains | back to summary |
|---|---|
| public boolean contains(Address pc) | |
| getBufferLimit | back to summary |
|---|---|
| private long getBufferLimit() | |
| getFirst | back to summary |
|---|---|
| public Stub getFirst() | |
| getIndexOf | back to summary |
|---|---|
| private long getIndexOf(Stub s) | |
| getNext | back to summary |
|---|---|
| public Stub getNext(Stub s) | |
| getNumberOfStubs | back to summary |
|---|---|
| public int getNumberOfStubs() | |
| getPrev | back to summary |
|---|---|
| public Stub getPrev(Stub s) | |
| getQueueBegin | back to summary |
|---|---|
| private long getQueueBegin() | |
| getQueueEnd | back to summary |
|---|---|
| private long getQueueEnd() | |
| getStubAt | back to summary |
|---|---|
| private Stub getStubAt(long offset) | |
| getStubBuffer | back to summary |
|---|---|
| private Address getStubBuffer() | |
| getStubContaining | back to summary |
|---|---|
| public Stub getStubContaining(Address pc) | |
| getStubSize | back to summary |
|---|---|
| private long getStubSize(Stub s) | |
| initialize | back to summary |
|---|---|
| private static synchronized void initialize(TypeDataBase db) | |
| stubContains | back to summary |
|---|---|
| public boolean stubContains(Stub s, Address pc) | |