deep

a Cross Development Platform for Java

User Tools

Site Tools


dev:crosscompiler:cfr

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
dev:crosscompiler:cfr [2019/01/09 13:44] – [Classes, Interfaces and Arrays] ursgrafdev:crosscompiler:cfr [2022/12/20 11:20] (current) ursgraf
Line 23: Line 23:
  
 ==== Bytecode Analysis ==== ==== Bytecode Analysis ====
-The Bytecode of all methods are analyzed and the attribute flags of all classes and methods are properly set. For this purpose each object of the object directory has a field //accAndPropFlags//. In the interface //ch.ntb.inf.deep.classItems.ICclassFileConsts// many flags are defined, such as +The Bytecode of all methods are analyzed and the attribute flags of all classes and methods are properly set. For this purpose each object of the object directory has a field //accAndPropFlags//. In the interface //org.deepjava.classItems.ICclassFileConsts// many flags are defined, such as 
 <code java> <code java>
   byte apfPublic = 0,    byte apfPublic = 0,
Line 44: Line 44:
  
 ===== Classes, Interfaces and Arrays ===== ===== Classes, Interfaces and Arrays =====
-Generally all items are linked in lists (using the field //next//). All root classes are listed in a array //rootClasses// which is a static member of the class //ch.ntb.inf.deep.classItems.Class//. There are more lists (all static members in the same class), like:+Generally all items are linked in lists (using the field //next//). All root classes are listed in a array //rootClasses// which is a static member of the class //org.deepjava.classItems.Class//. There are more lists (all static members in the same class), like:
   * //initClasses//: Regular classes and interfaces which have an initializer (a class constructor, see [[.:class_initialization|Initialization]]). This classes are linked with the field //nextClass//.   * //initClasses//: Regular classes and interfaces which have an initializer (a class constructor, see [[.:class_initialization|Initialization]]). This classes are linked with the field //nextClass//.
   * //nonInitClasses//: Regular classes without initialization. Linked with the field //nextClass//.   * //nonInitClasses//: Regular classes without initialization. Linked with the field //nextClass//.
Line 79: Line 79:
 [{{ .:deep_classfilereader_fields.jpg?400&direct | Example of a class with six fields}}] [{{ .:deep_classfilereader_fields.jpg?400&direct | Example of a class with six fields}}]
 \\ \\
-For efficiency reasons all fields of an object or a class (defined as //static//) with the same size in memory should be placed together, which is done by sorting. For this purpose there are three static arrays in //ch.ntb.inf.deep.classItems.Class//. When parsing the fields their size and type is determined and entered according to their size into the appropriate array. Finally, the arrays are read out in proper order and the objects are entered in the lists as shown in the previous figure. +For efficiency reasons all fields of an object or a class (defined as //static//) with the same size in memory should be placed together, which is done by sorting. For this purpose there are three static arrays in //org.deepjava.classItems.Class//. When parsing the fields their size and type is determined and entered according to their size into the appropriate array. Finally, the arrays are read out in proper order and the objects are entered in the lists as shown in the previous figure. 
  
 ===== Constants ===== ===== Constants =====
dev/crosscompiler/cfr.1547037890.txt.gz · Last modified: 2019/01/09 13:44 by ursgraf