Record Class FieldForExitSlot
- Record Components:
target
- the target address-contextreg pair of the branch exiting via this slot
- All Implemented Interfaces:
FieldReq
,InstanceFieldReq
JitCompiledPassage.ExitSlot
.
One of these is allocated per JitPassage.ExtBranch.to()
. At run time, the first time a branch is
encountered from this passage to the given target, the slot calls
getEntry
(target)
and keeps the reference. Each
subsequent encounter uses the kept reference. This reference is what gets returned by
JitCompiledPassage.run(int)
, so now the thread already has in hand the next
JitCompiledPassage.EntryPoint
to execute.
-
Constructor Summary
ConstructorsConstructorDescriptionFieldForExitSlot
(JitPassage.AddrCtx target) Creates an instance of aFieldForExitSlot
record class. -
Method Summary
Modifier and TypeMethodDescriptionfinal boolean
Indicates whether some other object is "equal to" this one.void
generateInitCode
(JitCodeGenerator gen, org.objectweb.asm.ClassVisitor cv, org.objectweb.asm.MethodVisitor iv) Emit the field declaration and its initialization bytecodevoid
generateLoadCode
(JitCodeGenerator gen, org.objectweb.asm.MethodVisitor rv) Emit code to load the field onto the JVM stackfinal int
hashCode()
Returns a hash code value for this object.name()
Derive a suitable name for the fieldtarget()
Returns the value of thetarget
record component.final String
toString()
Returns a string representation of this record class.
-
Constructor Details
-
FieldForExitSlot
Creates an instance of aFieldForExitSlot
record class.- Parameters:
target
- the value for thetarget
record component
-
-
Method Details
-
name
Description copied from interface:FieldReq
Derive a suitable name for the field -
generateInitCode
public void generateInitCode(JitCodeGenerator gen, org.objectweb.asm.ClassVisitor cv, org.objectweb.asm.MethodVisitor iv) Emit the field declaration and its initialization bytecodeThe declaration is emitted into the class definition, and the initialization code is emitted into the class constructor.
Consider the target
(ram:00401234,ctx=80000000)
. The declaration is equivalent to:private final
JitCompiledPassage.ExitSlot
exit_401234_80000000;And the initialization is equivalent to:
exit_401234_80000000 =
createExitSlot
(0x401234, CTX_80000000);Note that this method will ensure the
CTX_...
field is allocated and loads its value as needed.- Specified by:
generateInitCode
in interfaceInstanceFieldReq
- Parameters:
gen
- the code generatorcv
- the visitor for the class definitioniv
- the visitor for the class constructor
-
generateLoadCode
Description copied from interface:FieldReq
Emit code to load the field onto the JVM stack- Specified by:
generateLoadCode
in interfaceFieldReq
- Parameters:
gen
- the code generatorrv
- the visitor often for therun
method, but could be the static initializer or constructor
-
toString
Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components. -
hashCode
public final int hashCode()Returns a hash code value for this object. The value is derived from the hash code of each of the record components. -
equals
Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared withObjects::equals(Object,Object)
. -
target
Returns the value of thetarget
record component.- Returns:
- the value of the
target
record component
-