Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
OT Bytecode Attributes/CallinFlags
Attribute CallinFlags
Intent
The CallinFlags attribute is a fixed-length attribute used in the attributes table of method_info structures.
Location:
A role method or a callin wrapper or a base call surrogate (for return type).
Content:
An integer encoding the callin flags.
Purpose:
- Used by OTRE:
- CALLIN_FLAG_OVERRIDING
- CALLIN_FLAG_WRAPPER
- The OTRE uses this information to realize the inheritance of method bindings.
- (OTRE internal: This flag prevents the OTRE from generating an empty base-call-surrogate which would wrongly override an inherited (non-empty) version.)
- The other flags are only used by the compiler.
- CALLIN_FLAG_BASE_SUPER_CALL: OTRE part is handled via OTSpecialAccess attribute (kind SUPER_METHOD_ACCESS).
Format:
CallinFlags { u2 attribute_name_index; u4 attribute_length; u2 callin_flags; }
The items of the CallinFlags structure are as follows:
- attribute_name_index
- The constant_pool entry at that index must be a CONSTANT_Utf8_info representing the string "CallinFlags".
- attribute_length
- The value of the attribute_length item indicates the length of the attribute, excluding the initial six bytes.
- callin_flags
- The value of the callin_flags item is a mask of flags (used to denote ...). The interpretation of each flag, when set, is as shown in the following:
Flag Name | Value | Interpretation |
---|---|---|
CALLIN_FLAG_OVERRIDING | 1 | this method is overriding an inherited version |
CALLIN_FLAG_WRAPPER | 2 | this method is the generated team-level callin wrapper |
CALLIN_FLAG_DEFINITELY_MISSING_BASECALL | 8 | for base call flow analysis including super calls |
CALLIN_FLAG_POTENTIALLY_MISSING_BASECALL | 16 | for base call flow analysis including super calls |
CALLIN_FLAG_BASE_SUPER_CALL | 32 | is the base call targeting the base's super? |
CALLIN_RETURN_MASK | bits 9-12 | encoding of original non-reference return type, see IOTConstants.CALLIN_RETURN_VOID ff.. |