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.
Difference between revisions of "OT Bytecode Attributes/CallinFlags"
(→Location:) |
(→Purpose:) |
||
Line 11: | Line 11: | ||
===Purpose:=== | ===Purpose:=== | ||
− | CALLIN_FLAG_OVERRIDING: | + | *Used by OTRE: |
− | The OTRE uses this information to realize the inheritance of method bindings. | + | :CALLIN_FLAG_OVERRIDING |
− | (OTRE internal: This flag prevents the OTRE from generating an empty base-call-surrogate which would wrongly override an inherited (non-empty) version.) | + | :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:=== | ===Format:=== |
Revision as of 01:04, 8 April 2010
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 "CallinRoleBaseBindings".
- 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 | 9-12 | Encoding of original non-reference return type. |