blob: 220b4bc6b5da6db9ab7760a68a301e83584b162d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
/* NSC -- new scala compiler
* Copyright 2005 LAMP/EPFL
* @author Martin Odersky
*/
// $Id$
package scala.tools.nsc.symtab.classfile;
object PickleFormat {
/***************************************************
* Symbol table attribute format:
* Symtab = nentries_Nat {Entry}
* Entry = 1 TERMNAME len_Nat NameInfo
* | 2 TYPENAME len_Nat NameInfo
* | 3 NONEsym len_Nat
* | 4 TYPEsym len_Nat SymbolInfo
* | 5 ALIASsym len_Nat SymbolInfo
* | 6 CLASSsym len_Nat SymbolInfo [thistype_Ref]
* | 7 MODULEsym len_Nat SymbolInfo
* | 8 VALsym len_Nat SymbolInfo [alias_Ref]
* | 9 EXTref len_Nat name_Ref [owner_Ref]
* | 10 EXTMODCLASSref len_Nat name_Ref [owner_Ref]
* | 11 NOtpe len_Nat
* | 12 NOPREFIXtpe len_Nat
* | 13 THIStpe len_Nat sym_Ref
* | 14 SINGLEtpe len_Nat type_Ref sym_Ref
* | 15 CONSTANTtpe len_Nat type_Ref constant_Ref
* | 16 TYPEREFtpe len_Nat type_Ref sym_Ref {targ_Ref}
* | 17 TYPEBOUNDStpe len_Nat tpe_Ref tpe_Ref
* | 18 REFINEDtpe len_Nat classsym_Ref {tpe_Ref}
* | 19 CLASSINFOtpe len_Nat classsym_Ref {tpe_Ref}
* | 20 METHODtpe len_Nat tpe_Ref {tpe_Ref}
* | 21 POLYTtpe len_Nat tpe_Ref {sym_Ref}
* | 22 IMPLICITMETHODtpe len_Nat tpe_Ref {tpe_Ref}
* | 24 LITERALunit len_Nat
* | 25 LITERALboolean len_Nat value_Long
* | 26 LITERALbyte len_Nat value_Long
* | 27 LITERALshort len_Nat value_Long
* | 28 LITERALchar len_Nat value_Long
* | 29 LITERALint len_Nat value_Long
* | 30 LITERALlong len_Nat value_Long
* | 31 LITERALfloat len_Nat value_Long
* | 32 LITERALdouble len_Nat value_Long
* | 33 LITERALstring len_Nat name_Ref
* | 34 LITERALnull len_Nat
* | 35 LITERALzero len_Nat
* | 36 ATTRIBUTE sym_Ref type_Ref {constant_Ref} <not yet>
* SymbolInfo = name_Ref owner_Ref flags_Nat info_Ref
* NameInfo = <character sequence of length len_Nat in Utf8 format>
* NumInfo = <len_Nat-byte signed number in big endian format>
* Ref = Nat
*
* len is remaining length after `len'.
*/
val MajorVersion = 2;
val MinorVersion = 0;
final val TERMname = 1;
final val TYPEname = 2;
final val NONEsym = 3;
final val TYPEsym = 4;
final val ALIASsym = 5;
final val CLASSsym = 6;
final val MODULEsym = 7;
final val VALsym = 8;
final val EXTref = 9;
final val EXTMODCLASSref = 10;
final val NOtpe = 11;
final val NOPREFIXtpe = 12;
final val THIStpe = 13;
final val SINGLEtpe = 14;
final val CONSTANTtpe = 15;
final val TYPEREFtpe = 16;
final val TYPEBOUNDStpe = 17;
final val REFINEDtpe = 18;
final val CLASSINFOtpe = 19;
final val METHODtpe = 20;
final val POLYtpe = 21;
final val IMPLICITMETHODtpe = 22;
final val LITERAL = 23; // base line for literals
final val LITERALunit = 24;
final val LITERALboolean = 25;
final val LITERALbyte = 26;
final val LITERALshort = 27;
final val LITERALchar = 28;
final val LITERALint = 29;
final val LITERALlong = 30;
final val LITERALfloat = 31;
final val LITERALdouble = 32;
final val LITERALstring = 33;
final val LITERALnull = 34;
final val LITERALzero = 35;
final val ATTRIBUTE = 40;
final val firstSymTag = NONEsym;
final val lastSymTag = VALsym;
final val firstTypeTag = NOtpe;
final val lastTypeTag = POLYtpe;
}
|