Skip to main content
Jump to: navigation, search

Difference between revisions of "OT Bytecode Attributes"

(Team level attributes)
(Full list of attributes)
 
(15 intermediate revisions by 2 users not shown)
Line 25: Line 25:
  
 
==Full list of attributes==
 
==Full list of attributes==
* [[/BaseClassTags|BaseClassTags]]
+
In the following list a mark '''OTRE''' indicates an attribute that is used by the OTRE and '''Compiler'''
* [[/CallinRoleBaseBindings|CallinRoleBaseBindings]]
+
indicates an attribute that the compiler uses when reading a compiled class file of a team or role type.
* [[/PlayedBy|PlayedBy]]
+
{| cellpadding="5" border="1" style="text-align:center;"
* [[/ReferencedTeams|ReferencedTeams]]
+
|-
 +
! Attribute !! OTRE !! Compiler !! remark
 +
|-
 +
| [[/AnchorUsageRanks|AnchorUsageRanks]] ||  || X ||
 +
|-
 +
| <strike>[[/BaseClassTags|BaseClassTags]]</strike> || || || ''obsolete since 1.4.0 / 0.7.0, fully removed in 0.7.1''
 +
|-
 +
| [[/BoundClassesHierarchy|BoundClassesHierarchy]] || X || ||
 +
|-
 +
| [[/CallinFlags|CallinFlags]] || X || X ||
 +
|-
 +
| [[/CallinMethodMappings|CallinMethodMappings]] || X || X ||
 +
|-
 +
|  [[/CallinParamMappings|CallinParamMappings]] || X || ||
 +
|-
 +
|  [[/CallinPrecedence|CallinPrecedence]] || X || X ||
 +
|-
 +
[[/CallinRoleBaseBindings|CallinRoleBaseBindings]] || X || ||
 +
|-
 +
|  [[/CalloutMappings|CalloutMappings]] ||  || X ||
 +
|-
 +
|  [[/CopyInheritanceSrc|CopyInheritanceSrc]] ||  || X ||
 +
|-
 +
|  [[/InheritedRoles|InheritedRoles]] || X || ||
 +
|-
 +
|  [[/Modifiers|Modifiers]] ||  || X ||
 +
|-
 +
|  [[/OTDynCallinBindings|OTDynCallinBindings]] ||(OTDyn) || || ''only used by ASM-based new dynamic OTRE''
 +
|-
 +
|  [[/OTClassFlags|OTClassFlags]] || X || X ||
 +
|-
 +
|  [[/OTCompilerVersion|OTCompilerVersion]] || X || X ||
 +
|-
 +
|  [[/OTSpecialAccess|OTSpecialAccess]] || X || X ||
 +
|-
 +
[[/PlayedBy|PlayedBy]] || X || X ||
 +
|-
 +
[[/ReferencedTeams|ReferencedTeams]] || X || ||
 +
|-
 +
|  [[/RoleFiles|RoleFiles]] ||  || X ||
 +
|-
 +
|  [[/RoleLocalTypes|RoleLocalTypes]] ||  || X ||
 +
|-
 +
|  [[/SourceDebugExtension|SourceDebugExtension]] || || ||Debugger only
 +
|-
 +
|  [[/StaticReplaceBindings|StaticReplaceBindings]] || X || ||
 +
|}
  
 
==Team level attributes==
 
==Team level attributes==
 +
* <strike>[[/BaseClassTags]]</strike>
 +
* [[/BoundClassesHierarchy]]
 +
* [[/CallinPrecedence]]
 
* [[/CallinRoleBaseBindings]]
 
* [[/CallinRoleBaseBindings]]
* [[/ReferencedTeams]]
+
* [[/OTClassFlags]]
* [[/BaseClassTags]]
+
* [[/OTSpecialAccess]]
  
 
==Role level attributes==
 
==Role level attributes==
 +
* [[/CallinMethodMappings]]
 +
* [[/OTClassFlags]]
 +
* [[/PlayedBy]]
 +
 +
==Other types level attributes==
 +
* [[/ReferencedTeams]]
  
 
==Method level attributes==
 
==Method level attributes==
 +
* [[/CallinFlags]]
 +
* [[/CallinParamMappings]]
 +
* [[/Modifiers]]
 +
 +
==Field level attributes==
 +
* [[/AnchorUsageRanks]]
 +
* [[/Modifiers]]
 +
 +
==Multi level attributes==
 +
* [[/OTClassFlags]]
 +
* [[/OTSpecialAccess]]
 +
 +
==Change History==
 +
 +
===Changed in version 0.7.1===
 +
* Base type reference in [[/CallinRoleBaseBindings]] may use the prefix "<code>^</code>" to denote an interface.
 +
* Fully removed obsolete attribute [[/BaseClassTags]]
 +
 +
===Changed in version 0.7.0===
 +
''none''
 +
 +
===Changed in version 1.4.0 (from objectteams.org)===
 +
* [[/CallinMethodMappings]]: obsolete flag <code>QUERY</code> has been removed
 +
 +
===Changed in version 1.3.2 (from objectteams.org)===
 +
* New attribute [[/AnchorUsageRanks]]
 +
 +
===Changed in version 1.3.1 (from objectteams.org)===
 +
''none''
 +
  
  
 
[[Category:Object Teams Development]]
 
[[Category:Object Teams Development]]

Latest revision as of 18:04, 26 August 2010

These pages describe the bytecode attributes which are generated by the OT/J compiler to hold all that information that cannot be directly translated to normal Java bytecode.

Most of this information is needed by the Object Teams Runtime Environment (OTRE) in order to perform its loadtime bytecode transformations.

Some information is used by the compiler when reading pre-compiled teams and roles.

General notes

As in the Java Virtual Machine Specification (§4) the format of attributes is specified by pseudo-structures written in a C-like struct notation.

Attributes are used in the ClassFile (JVM Spec. §4.1), field_info (JVM Spec. §4.5), method_info (JVM Spec. §4.6), and Code_attribute (JVM Spec. §4.7.3) structures of the class file format. All attributes have the following general format:

    attribute_info {
        u2 attribute_name_index;
        u4 attribute_length;
        u1 info[attribute_length];
    }

In the following the value of every item_name_index item must be a valid index into the constant_pool table, and the entry at that index must be a CONSTANT_Utf8_info (JVM Spec. §4.4.7) structure denoting the item_name info.

(This documentation is work in progress)

TODO:

  • mention otlistclass

Full list of attributes

In the following list a mark OTRE indicates an attribute that is used by the OTRE and Compiler indicates an attribute that the compiler uses when reading a compiled class file of a team or role type.

Attribute OTRE Compiler remark
AnchorUsageRanks X
BaseClassTags obsolete since 1.4.0 / 0.7.0, fully removed in 0.7.1
BoundClassesHierarchy X
CallinFlags X X
CallinMethodMappings X X
CallinParamMappings X
CallinPrecedence X X
CallinRoleBaseBindings X
CalloutMappings X
CopyInheritanceSrc X
InheritedRoles X
Modifiers X
OTDynCallinBindings (OTDyn) only used by ASM-based new dynamic OTRE
OTClassFlags X X
OTCompilerVersion X X
OTSpecialAccess X X
PlayedBy X X
ReferencedTeams X
RoleFiles X
RoleLocalTypes X
SourceDebugExtension Debugger only
StaticReplaceBindings X

Team level attributes

Role level attributes

Other types level attributes

Method level attributes

Field level attributes

Multi level attributes

Change History

Changed in version 0.7.1

Changed in version 0.7.0

none

Changed in version 1.4.0 (from objectteams.org)

Changed in version 1.3.2 (from objectteams.org)

Changed in version 1.3.1 (from objectteams.org)

none

Back to the top