Insn.BaseVisitor, Insn.Visitor| Constructor and Description |
|---|
InvokePolymorphicInsn(Rop opcode,
SourcePosition position,
RegisterSpecList sources,
TypeList catches,
CstMethodRef callSiteMethod)
Constructs an instance.
|
| Modifier and Type | Method and Description |
|---|---|
void |
accept(Insn.Visitor visitor)
Calls the appropriate method on the given visitor, depending on the
class of this instance.
|
CstMethodRef |
getCallSiteMethod()
Gets the method as it appears at the call site of the original
invoke-virtual instruction.
|
CstProtoRef |
getCallSiteProto()
Gets the call site prototype.
|
TypeList |
getCatches()
Gets the list of possibly-caught exceptions.
|
java.lang.String |
getInlineString()
Gets an "inline" string portion for toHuman(), if available.
|
CstMethodRef |
getPolymorphicMethod()
Gets the method to be invoked.
|
Insn |
withAddedCatch(Type type)
Returns an instance that is just like this one, except that it
has a catch list with the given item appended to the end.
|
Insn |
withNewRegisters(RegisterSpec result,
RegisterSpecList sources)
Returns an instance that is just like this one, except
with new result and source registers.
|
Insn |
withRegisterOffset(int delta)
Returns an instance that is just like this one, except that all
register references have been offset by the given delta.
|
canThrow, contentEquals, copy, equals, getLocalAssignment, getOpcode, getPosition, getResult, getSources, hashCode, toHuman, toHumanWithInline, toString, toStringWithInline, withSourceLiteralpublic InvokePolymorphicInsn(Rop opcode, SourcePosition position, RegisterSpecList sources, TypeList catches, CstMethodRef callSiteMethod)
opcode - non-null; the opcodeposition - non-null; source positionsources - non-null; specs for all the sourcescatches - non-null; list of exceptions caughtcallSiteMethod - non-null; the method called by
invoke-virtual that this instance will replace.public TypeList getCatches()
StdTypeList.EMPTY if this instruction has no handlers,
which can be either if this instruction can't possibly
throw or if it merely doesn't handle any of its possible
exceptions. To determine whether this instruction can throw,
use Insn.canThrow().getCatches in class Insnnon-null; the catches listpublic void accept(Insn.Visitor visitor)
public Insn withAddedCatch(Type type)
Insn.canThrow().withAddedCatch in class Insntype - non-null; type to append to the catch listnon-null; an appropriately-constructed instancepublic Insn withRegisterOffset(int delta)
withRegisterOffset in class Insndelta - the amount to offset register references bynon-null; an appropriately-constructed instancepublic Insn withNewRegisters(RegisterSpec result, RegisterSpecList sources)
withNewRegisters in class Insnresult - null-ok; new result registersources - non-null; new sources registersnon-null; an appropriately-constructed instancepublic CstMethodRef getCallSiteMethod()
non-null; the original method referencepublic CstMethodRef getPolymorphicMethod()
java.lang.invoke.MethodHandle.invoke() or
java.lang.invoke.MethodHandle.invokeExact().non-null; method reference to be invokedpublic CstProtoRef getCallSiteProto()
non-null; Prototype reference for call sitepublic java.lang.String getInlineString()
getInlineString in class Insnnull-ok; if non-null, the inline text for toHuman()Copyright © 2020. All Rights Reserved.