Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: for the plan.

Jump to: navigation, search

OT Bytecode Attributes/CallinFlags

Attribute CallinFlags


The CallinFlags attribute is a fixed-length attribute used in the attributes table of method_info structures.


A role method or a callin wrapper or a base call surrogate (for return type).


An integer encoding the callin flags.


  • Used by OTRE:
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).


   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..

Back to the top