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"
(New page: =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 call...) |
(→Attribute CallinFlags) |
||
Line 29: | Line 29: | ||
*callin_flags | *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: | :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 || <tt>1</tt> || this method is overriding an inherited version | ||
+ | |- | ||
+ | | CALLIN_FLAG_WRAPPER || <tt>2</tt> || this method is the generated team-level callin wrapper | ||
+ | |- | ||
+ | | CALLIN_FLAG_DEFINITELY_MISSING_BASECALL || <tt>8</tt> || For base call flow analysis including super calls | ||
+ | |- | ||
+ | | CALLIN_FLAG_POTENTIALLY_MISSING_BASECALL || <tt>16</tt> || For base call flow analysis including super calls | ||
+ | |- | ||
+ | | CALLIN_FLAG_BASE_SUPER_CALL || <tt>32</tt> || Is the base call targeting the base's super? | ||
+ | |- | ||
+ | | CALLIN_RETURN_MASK || <tt>9-12</tt> || Encoding of original non-reference return type. | ||
+ | |} | ||
+ | |||
[[Category:Object Teams Development]] | [[Category:Object Teams Development]] |
Revision as of 00:38, 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.
Content:
An integer encoding the callin flags.
Purpose:
CALLIN_FLAG_OVERRIDING: if set, this method is overriding an inherited version. 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.)
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. |