|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectjava.util.AbstractMap
org.objectweb.asm.commons.JSRInlinerAdapter.Instantiation
private class JSRInlinerAdapter.Instantiation
A class that represents an instantiation of a subroutine. Each instantiation has an associate "stack" --- which is a listing of those instantiations that were active when this particular instance of this subroutine was invoked. Each instantiation also has a map from the original labels of the program to the labels appropriate for this instantiation, and finally a label to return to.
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from class java.util.AbstractMap |
|---|
java.util.AbstractMap.SimpleEntry<K,V>, java.util.AbstractMap.SimpleImmutableEntry<K,V> |
| Nested classes/interfaces inherited from interface java.util.Map |
|---|
java.util.Map.Entry<K,V> |
| Field Summary | |
|---|---|
(package private) JSRInlinerAdapter.Instantiation |
previous
Previous instantiations; the stack must be statically predictable to be inlinable. |
java.util.Map |
rangeTable
This table maps Labels from the original source to Labels pointing at code specific to this instantiation, for use in remapping try/catch blocks,as well as gotos. |
LabelNode |
returnLabel
All returns for this instantiation will be mapped to this label |
JSRInlinerAdapter.Subroutine |
subroutine
The subroutine this is an instantiation of. |
| Constructor Summary | |
|---|---|
JSRInlinerAdapter.Instantiation(JSRInlinerAdapter.Instantiation prev,
JSRInlinerAdapter.Subroutine sub)
|
|
| Method Summary | |
|---|---|
java.util.Set |
entrySet()
|
JSRInlinerAdapter.Instantiation |
findOwner(int i)
Returns the "owner" of a particular instruction relative to this instantiation: the owner referes to the Instantiation which will emit the version of this instruction that we will execute. |
java.lang.Object |
get(java.lang.Object o)
|
LabelNode |
gotoLabel(LabelNode l)
Looks up the label l in the gotoTable,
thus translating it from a Label in the original code, to a Label in
the inlined code that is appropriate for use by an instruction that
branched to the original label. |
LabelNode |
rangeLabel(LabelNode l)
Looks up the label l in the rangeTable,
thus translating it from a Label in the original code, to a Label in
the inlined code that is appropriate for use by an try/catch or
variable use annotation. |
| Methods inherited from class java.util.AbstractMap |
|---|
clear, clone, containsKey, containsValue, equals, hashCode, isEmpty, keySet, put, putAll, remove, size, toString, values |
| Methods inherited from class java.lang.Object |
|---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
final JSRInlinerAdapter.Instantiation previous
public final JSRInlinerAdapter.Subroutine subroutine
public final java.util.Map rangeTable
findOwner(int)public final LabelNode returnLabel
| Constructor Detail |
|---|
public JSRInlinerAdapter.Instantiation(JSRInlinerAdapter.Instantiation prev,
JSRInlinerAdapter.Subroutine sub)
| Method Detail |
|---|
public JSRInlinerAdapter.Instantiation findOwner(int i)
this or
null. this indicates that this
instantiation will generate the version of this instruction that we
will execute, and null indicates that this
instantiation never executes the given instruction.
Sometimes, however, an instruction can belong to multiple
subroutines; this is called a "dual citizen" instruction (though it
may belong to more than 2 subroutines), and occurs when multiple
subroutines branch to common points of control. In this case, the
owner is the subroutine that appears lowest on the stack, and which
also owns the instruction in question.
i - the index of the instruction in the original code
public LabelNode gotoLabel(LabelNode l)
l in the gotoTable,
thus translating it from a Label in the original code, to a Label in
the inlined code that is appropriate for use by an instruction that
branched to the original label.
l - The label we will be translating
#gotoTablepublic LabelNode rangeLabel(LabelNode l)
l in the rangeTable,
thus translating it from a Label in the original code, to a Label in
the inlined code that is appropriate for use by an try/catch or
variable use annotation.
l - The label we will be translating
rangeTablepublic java.util.Set entrySet()
entrySet in interface java.util.MapentrySet in class java.util.AbstractMappublic java.lang.Object get(java.lang.Object o)
get in interface java.util.Mapget in class java.util.AbstractMap
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||