Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

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.

Back to the top