Record Class DispatchTableDetails.DispatchEntry
java.lang.Object
java.lang.Record
org.ek9lang.compiler.ir.data.DispatchTableDetails.DispatchEntry
- Record Components:
concreteTypeFqns- 1 FQN (single-param) or 2 FQNs (two-param) for exact type matchinghandlerParamTypeFqns- Handler's declared parameter type FQNs (for CHECKCAST target)handlerParamIsTraits- True if handler param is a trait (INVOKEINTERFACE), false for class (INVOKEVIRTUAL)handlerMethodName- Handler method name (same as dispatcher method name)handlerDeclaringTypeFqn- FQN of the aggregate that DECLARES the winning handler body. This is the dispatcher's own type when the handler is defined locally, but a SUPERTYPE when the handler is inherited (a concrete class commonly overrides an abstract dispatcher entry point while inheriting its typed handlers). The JVM emitsINVOKEVIRTUAL selfTypeand lets the vtable resolve the inherited handler at runtime, so it ignores this field; a flat-symbol backend (LLVM) has no such resolution and MUST mangle the call against the declaring type, else it references a never-emittedselfType::handlersymbol (finding: inheritedHandlerDispatcher native leg).
- Enclosing class:
DispatchTableDetails
public static record DispatchTableDetails.DispatchEntry(List<String> concreteTypeFqns, List<String> handlerParamTypeFqns, List<Boolean> handlerParamIsTraits, String handlerMethodName, String handlerDeclaringTypeFqn)
extends Record
A single entry in the dispatch table mapping concrete type(s) to a handler method.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionReturns the value of theconcreteTypeFqnsrecord component.final booleanIndicates whether some other object is "equal to" this one.Returns the value of thehandlerDeclaringTypeFqnrecord component.Returns the value of thehandlerMethodNamerecord component.Returns the value of thehandlerParamIsTraitsrecord component.Returns the value of thehandlerParamTypeFqnsrecord component.final inthashCode()Returns a hash code value for this object.final StringtoString()Returns a string representation of this record class.
-
Constructor Details
-
DispatchEntry
public DispatchEntry(List<String> concreteTypeFqns, List<String> handlerParamTypeFqns, List<Boolean> handlerParamIsTraits, String handlerMethodName, String handlerDeclaringTypeFqn) Creates an instance of aDispatchEntryrecord class.- Parameters:
concreteTypeFqns- the value for theconcreteTypeFqnsrecord componenthandlerParamTypeFqns- the value for thehandlerParamTypeFqnsrecord componenthandlerParamIsTraits- the value for thehandlerParamIsTraitsrecord componenthandlerMethodName- the value for thehandlerMethodNamerecord componenthandlerDeclaringTypeFqn- the value for thehandlerDeclaringTypeFqnrecord component
-
-
Method Details
-
toString
-
hashCode
-
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). -
concreteTypeFqns
Returns the value of theconcreteTypeFqnsrecord component.- Returns:
- the value of the
concreteTypeFqnsrecord component
-
handlerParamTypeFqns
Returns the value of thehandlerParamTypeFqnsrecord component.- Returns:
- the value of the
handlerParamTypeFqnsrecord component
-
handlerParamIsTraits
Returns the value of thehandlerParamIsTraitsrecord component.- Returns:
- the value of the
handlerParamIsTraitsrecord component
-
handlerMethodName
Returns the value of thehandlerMethodNamerecord component.- Returns:
- the value of the
handlerMethodNamerecord component
-
handlerDeclaringTypeFqn
Returns the value of thehandlerDeclaringTypeFqnrecord component.- Returns:
- the value of the
handlerDeclaringTypeFqnrecord component
-