OT Bytecode Attributes/CallinPrecedence

From Eclipsepedia

Jump to: navigation, search

Contents

Attribute CallinPrecedence

Intent

Represent precedence declarations OTJLD §4.8 in the byte code.

Location

A team class containing one or more precedence declarations, either directly in the team or nested within a role.

Content

A list of callin names (OTJLD §4.1.e). Each callin name is qualified with the relative name of the declaring role type as seen from the current team class. All precedence declarations (indirectly) contained within a team including inherited declarations are merged into a single CallinPrecedence attribute.

Purpose

The OTRE uses this attribute in order to sort the calls to multiple callin wrappers within a given base method chaining wrapper. Note, that for after callins the list is traversed back-to-front (see precedence after in OTJLD §4.8.a).

Format

   CallinPrecedence {
     u2 attribute_name_index;
     u4 attribute_length;
     u2 callins_count;
     u2 callin_name_indices[callins_count];
   }

The items of the CallinPrecedence structure are as follows:

  • attribute_name_index
The constant_pool entry at that index must be a CONSTANT_Utf8_info representing the string "CallinPrecedence".
  • attribute_length
The value of the attribute_length item indicates the length of the attribute, excluding the initial six bytes.
  • callins_count
The number of callin names in the array
  • callin_name_indices[]
Each element in the array is a constant_pool entry of type CONSTANT_Utf8_info representing a callin binding by its qualified name as described above.