Showing the changes to java/appl/j2d/java.m (1 of 18352 files). Show all
Unified · Split
| @@ -0,0 +1,343 @@ | ||
| 1 | +# Java constant pool tags | |
| 2 | + | |
| 3 | +CON_Utf8: con 1; | |
| 4 | +# CON_Unicode: con 2; # obsolete | |
| 5 | +CON_Integer: con 3; | |
| 6 | +CON_Float: con 4; | |
| 7 | +CON_Long: con 5; | |
| 8 | +CON_Double: con 6; | |
| 9 | +CON_Class: con 7; | |
| 10 | +CON_String: con 8; | |
| 11 | +CON_Fieldref: con 9; | |
| 12 | +CON_Methodref: con 10; | |
| 13 | +CON_InterfaceMref: con 11; | |
| 14 | +CON_NameAndType: con 12; | |
| 15 | +# since 49.0 | |
| 16 | +CON_MethodHandle: con 15; | |
| 17 | +CON_MethodType: con 16; | |
| 18 | +CON_InvokeDynamic: con 18; | |
| 19 | + | |
| 20 | +# Java access flags | |
| 21 | + | |
| 22 | +ACC_PUBLIC: con 16r0001; | |
| 23 | +ACC_PRIVATE: con 16r0002; | |
| 24 | +ACC_PROTECTED: con 16r0004; | |
| 25 | +ACC_STATIC: con 16r0008; | |
| 26 | +ACC_FINAL: con 16r0010; | |
| 27 | +ACC_SUPER: con 16r0020; | |
| 28 | +ACC_SYNCHRONIZED: con 16r0020; # sic | |
| 29 | +ACC_VOLATILE: con 16r0040; | |
| 30 | +ACC_TRANSIENT: con 16r0080; | |
| 31 | +ACC_NATIVE: con 16r0100; | |
| 32 | +ACC_INTERFACE: con 16r0200; | |
| 33 | +ACC_ABSTRACT: con 16r0400; | |
| 34 | + | |
| 35 | +_MUSTCOMPILE: con MUSTCOMPILE<<16; | |
| 36 | +_DONTCOMPILE: con DONTCOMPILE<<16; | |
| 37 | + | |
| 38 | +# basic block flags | |
| 39 | + | |
| 40 | +BB_LDR, # set for all leaders | |
| 41 | +BB_ENTRY, # method entry point | |
| 42 | +BB_FINALLY, # finally block entry point | |
| 43 | +BB_HANDLER, # EH entry point | |
| 44 | +BB_REACHABLE: con byte(1 << iota); # reachable basic block */ | |
| 45 | + | |
| 46 | +# basic block states | |
| 47 | + | |
| 48 | +BB_PRESIM, # not simulated yet | |
| 49 | +BB_ACTIVE, # simulating or being unified | |
| 50 | +BB_POSTSIM, # simulated | |
| 51 | +BB_POSTUNIFY: con byte(1 << iota); # unified | |
| 52 | + | |
| 53 | +# Dis operand classification | |
| 54 | + | |
| 55 | +Anone, | |
| 56 | +Aimm, | |
| 57 | +Amp, | |
| 58 | +Ampind, | |
| 59 | +Afp, | |
| 60 | +Afpind, | |
| 61 | +Aend: con byte iota; | |
| 62 | + | |
| 63 | +# Dis n(fp) types | |
| 64 | + | |
| 65 | +DIS_X, # not yet typed | |
| 66 | +DIS_W, # 'B', 'Z', 'C', 'S', 'I' | |
| 67 | +DIS_L, # 'F', 'J', 'D' | |
| 68 | +DIS_P: con byte iota; # 'L', '[' | |
| 69 | + | |
| 70 | +# inferno/vm/Array | |
| 71 | + | |
| 72 | +ARY_DATA: con IBY2WD; # Array data (Dis array) | |
| 73 | +ARY_NDIM: con 2*IBY2WD; # number of dimensions | |
| 74 | +ARY_ADT: con 3*IBY2WD; # 'ref Class' of element type | |
| 75 | +ARY_ETYPE: con 4*IBY2WD; # primitive element type code | |
| 76 | + | |
| 77 | +# java/lang/String | |
| 78 | + | |
| 79 | +STR_DISSTR: con IBY2WD; # offset to Dis string in a String | |
| 80 | + | |
| 81 | +# miscellaneous | |
| 82 | + | |
| 83 | +#REFSYSEX: con 24; # 24(fp) is a 'ref Sys->Exception' | |
| 84 | +EXOBJ: con 28; # 28(fp) is exception object | |
| 85 | +THISOFF: con 32; # 32(fp) is "this" pointer | |
| 86 | +REGSIZE: con 32; # 32(fp) is first usable frame cell | |
| 87 | +Hashsize: con 31; | |
| 88 | +ALLOCINCR: con 16; | |
| 89 | + | |
| 90 | +Const_ci: adt { | |
| 91 | + name_index: int; | |
| 92 | +}; | |
| 93 | + | |
| 94 | +Const_fmiref: adt { | |
| 95 | + class_index: int; | |
| 96 | + name_type_index: int; | |
| 97 | +}; | |
| 98 | + | |
| 99 | +Const_nat: adt { | |
| 100 | + name_index: int; | |
| 101 | + sig_index: int; | |
| 102 | +}; | |
| 103 | + | |
| 104 | +Const_utf8: adt { | |
| 105 | + ln: int; | |
| 106 | + utf8: string; | |
| 107 | +}; | |
| 108 | + | |
| 109 | +# since 49.0 | |
| 110 | + | |
| 111 | +Const_methodhandle: adt { | |
| 112 | + ref_kind: int; | |
| 113 | + ref_index: int; | |
| 114 | +}; | |
| 115 | + | |
| 116 | +Const_methodtype: adt { | |
| 117 | + descriptor_index: int; | |
| 118 | +}; | |
| 119 | + | |
| 120 | +Const_invokedyn: adt { | |
| 121 | + bs_method_attr_index: int; | |
| 122 | + name_type_index: int; | |
| 123 | +}; | |
| 124 | + | |
| 125 | +Const: adt { | |
| 126 | + pick { | |
| 127 | + # CONSTANT_[Float|Double]_info | |
| 128 | + Ptdouble => | |
| 129 | + tdouble: real; | |
| 130 | + # CONSTANT_Long_info | |
| 131 | + Ptvlong => | |
| 132 | + tvlong: big; | |
| 133 | + # CONSTANT_Integer_info | |
| 134 | + Ptint => | |
| 135 | + tint: int; | |
| 136 | + # CONSTANT_String_info | |
| 137 | + Pstring_index => | |
| 138 | + string_index: int; | |
| 139 | + # CONSTANT_Class_info | |
| 140 | + Pci => | |
| 141 | + ci: ref Const_ci; | |
| 142 | + # CONSTANT_[Fieldref|Methodref|InterfaceMethodref]_info | |
| 143 | + Pfmiref => | |
| 144 | + fmiref: ref Const_fmiref; | |
| 145 | + # CONSTANT_NameAndType | |
| 146 | + Pnat => | |
| 147 | + nat: ref Const_nat; | |
| 148 | + # CONSTANT_Utf8_info | |
| 149 | + Putf8 => | |
| 150 | + utf8: ref Const_utf8; | |
| 151 | + | |
| 152 | + # since 49.0 | |
| 153 | + | |
| 154 | + # CONSTANT_MethodHandle_info | |
| 155 | + Pmethodhandle => | |
| 156 | + mh: ref Const_methodhandle; | |
| 157 | + # CONSTANT_MethodType_info | |
| 158 | + Pmethodtype => | |
| 159 | + mt: ref Const_methodtype; | |
| 160 | + # CONSTANT_InvokeDynamic_info | |
| 161 | + Pinvokedyn => | |
| 162 | + invokedyn: ref Const_invokedyn; | |
| 163 | + } | |
| 164 | +}; | |
| 165 | + | |
| 166 | +Attr: adt { # attribute_info | |
| 167 | + name: int; | |
| 168 | + ln: int; | |
| 169 | + info: array of byte; | |
| 170 | +}; | |
| 171 | + | |
| 172 | +Field: adt { # field_info | |
| 173 | + access_flags: int; | |
| 174 | + name_index: int; | |
| 175 | + sig_index: int; | |
| 176 | + attr_count: int; | |
| 177 | + attr_info: array of ref Attr; # ConstantValue attributes | |
| 178 | +}; | |
| 179 | + | |
| 180 | +Method: adt { # method_info | |
| 181 | + access_flags: int; | |
| 182 | + name_index: int; | |
| 183 | + sig_index: int; | |
| 184 | + attr_count: int; | |
| 185 | + attr_info: array of ref Attr; # Code, Exceptions attributes | |
| 186 | +}; | |
| 187 | + | |
| 188 | +Class: adt { # ClassFile | |
| 189 | +# magic int; # 0xcafebabe | |
| 190 | + min: int; | |
| 191 | + maj: int; | |
| 192 | + cp_count: int; | |
| 193 | + cps: array of ref Const; | |
| 194 | + cts: array of byte; | |
| 195 | + access_flags: int; | |
| 196 | + this_class: int; | |
| 197 | + super_class: int; | |
| 198 | + interfaces_count: int; | |
| 199 | + interfaces: array of int; | |
| 200 | + fields_count: int; | |
| 201 | + fields: array of ref Field; | |
| 202 | + methods_count: int; | |
| 203 | + methods: array of ref Method; | |
| 204 | + source_file: int; | |
| 205 | +}; | |
| 206 | + | |
| 207 | +Addr: adt { # Dis operand | |
| 208 | + mode: byte; # Anone, Aimm, Amp, etc. | |
| 209 | + ival: int; # immediate, $ival | |
| 210 | + offset: int; # single indirect, offset(fp) | |
| 211 | + # double indirect, offset(ival(fp)) | |
| 212 | +}; | |
| 213 | + | |
| 214 | +Jinst_x1c: adt { # iinc | |
| 215 | + ix: int; | |
| 216 | + icon: int; | |
| 217 | +}; | |
| 218 | + | |
| 219 | +Jinst_x2c0: adt { # invokeinterface | |
| 220 | + ix: int; | |
| 221 | + narg: int; | |
| 222 | + zero: int; | |
| 223 | +}; | |
| 224 | + | |
| 225 | +Jinst_x2d: adt { # multianewarray | |
| 226 | + ix: int; | |
| 227 | + dim: int; | |
| 228 | +}; | |
| 229 | + | |
| 230 | +Jinst_t1: adt { # tableswitch | |
| 231 | + dflt: int; | |
| 232 | + lb: int; | |
| 233 | + hb: int; | |
| 234 | + tbl: array of int; | |
| 235 | +}; | |
| 236 | + | |
| 237 | +Jinst_t2: adt { # lookupswitch | |
| 238 | + dflt: int; | |
| 239 | + np: int; | |
| 240 | + tbl: array of int; | |
| 241 | +}; | |
| 242 | + | |
| 243 | +Jinst_w: adt { # wide | |
| 244 | + op: byte; | |
| 245 | + ix: int; | |
| 246 | + icon: int; | |
| 247 | +}; | |
| 248 | + | |
| 249 | +Jinst: adt { # Java instruction | |
| 250 | + op: byte; # op code | |
| 251 | + jtype: byte; # Java type of dst ('I', '[', etc.) | |
| 252 | + pc: int; # pc offset | |
| 253 | + pcdis: int; # pc offset counted in dis instructions | |
| 254 | + line: int; # source line number | |
| 255 | + size: int; # size of this instruction | |
| 256 | + dis: cyclic ref Inst; # Dis code for this instruction | |
| 257 | + bb: cyclic ref BB; # the instruction's basic block | |
| 258 | + nsrc: int; # 0 or more source operands | |
| 259 | + src: array of int; # the source operands | |
| 260 | + dst: ref Addr; # usual destination operand | |
| 261 | + movsrc: ref Addr; # source operand if mov generated for load | |
| 262 | + pick { | |
| 263 | + Pz => | |
| 264 | + dummy: int; # Z | |
| 265 | + Pi => | |
| 266 | + i: int; # AT, X1, X2, B2, B4, V1, V2 | |
| 267 | + Px1c => | |
| 268 | + x1c: ref Jinst_x1c; # iinc | |
| 269 | + Px2c0 => | |
| 270 | + x2c0: ref Jinst_x2c0; # invokeinterface | |
| 271 | + Px2d => | |
| 272 | + x2d: ref Jinst_x2d; # multianewarray | |
| 273 | + Pt1 => | |
| 274 | + t1: ref Jinst_t1; # tableswitch | |
| 275 | + Pt2 => | |
| 276 | + t2: ref Jinst_t2; # lookupswitch | |
| 277 | + Pw => | |
| 278 | + w: ref Jinst_w; # wide | |
| 279 | + } | |
| 280 | +}; | |
| 281 | + | |
| 282 | +Handler: adt { # exception_table entry | |
| 283 | + start_pc: int; | |
| 284 | + end_pc: int; | |
| 285 | + handler_pc: int; | |
| 286 | + catch_type: int; | |
| 287 | +}; | |
| 288 | + | |
| 289 | +Code: adt { # one Java method | |
| 290 | + max_stack: int; | |
| 291 | + max_locals: int; | |
| 292 | + code_length: int; | |
| 293 | + j: array of ref Jinst; | |
| 294 | + nex: int; | |
| 295 | + ex: array of ref Handler; | |
| 296 | +}; | |
| 297 | + | |
| 298 | +PCode: adt { | |
| 299 | + code: ref Code; | |
| 300 | + name: string; | |
| 301 | + sig: string; | |
| 302 | +}; | |
| 303 | + | |
| 304 | +StkSnap: adt { # snapshot of simulated Java VM stack | |
| 305 | + jtype: byte; | |
| 306 | + npc: int; | |
| 307 | + pc: array of int; | |
| 308 | +}; | |
| 309 | + | |
| 310 | +BB: adt { # basic block | |
| 311 | + js: ref Jinst; # first instruction in basic block | |
| 312 | + je: cyclic ref Jinst; # last instruction in basic block | |
| 313 | + nsucc: int; # number of successors | |
| 314 | + succ: cyclic array of ref BB; # successors | |
| 315 | + flags: byte; # basic block leader flags | |
| 316 | + state: byte; # BB_PRESIM, etc. | |
| 317 | + entrysz: int; # size of saved entry stack | |
| 318 | + entrystk: array of ref StkSnap; # snapshot of entry stack | |
| 319 | + exitsz: int; # size of saved exit stack | |
| 320 | + exitstk: array of ref StkSnap; # snapshot of exit stack | |
| 321 | +}; | |
| 322 | + | |
| 323 | +Inst: adt { # Dis instruction | |
| 324 | + op: byte; # op code | |
| 325 | + s: ref Addr; # source | |
| 326 | + m: ref Addr; # middle | |
| 327 | + d: ref Addr; # destination | |
| 328 | + pc: int; # 0-based instruction offset | |
| 329 | + j: ref Jinst; | |
| 330 | + next: cyclic ref Inst; | |
| 331 | +}; | |
| 332 | + | |
| 333 | +# Bytecode Behaviors for Method Handles (see section 5.4.3.5 of jvm 1.7 specs) | |
| 334 | +REF_getfield: con 1; | |
| 335 | +REF_getstatic: con 2; | |
| 336 | +REF_putfield: con 3; | |
| 337 | +REF_putstatic: con 4; | |
| 338 | +REF_invokevirtual: con 5; | |
| 339 | +REF_invokestatic: con 6; | |
| 340 | +REF_invokespecial: con 7; | |
| 341 | +REF_newinvokespecial: con 8; | |
| 342 | +REF_invokeinterface: con 9; | |
| 343 | + | |