00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include "hash.h"
00030
00031
00032 #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) SYM,
00033 enum java_tree_code {
00034 __DUMMY = LAST_AND_UNUSED_TREE_CODE,
00035 #include "java-tree.def"
00036 LAST_JAVA_TREE_CODE
00037 };
00038 #undef DEFTREECODE
00039
00040 struct JCF;
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119 #define CLASS_HAS_SUPER_FLAG(BINFO) TREE_LANG_FLAG_1(BINFO)
00120 #define CLASS_HAS_SUPER(TYPE) CLASS_HAS_SUPER_FLAG (TYPE_BINFO (TYPE))
00121
00122
00123 #define CLASSTYPE_SUPER(TYPE) (CLASS_HAS_SUPER (TYPE) ? \
00124 BINFO_TYPE (TREE_VEC_ELT (TYPE_BINFO_BASETYPES (TYPE), 0)) : NULL_TREE)
00125
00126
00127
00128 extern int compiling_from_source;
00129
00130
00131 #define main_class \
00132 java_global_trees[JTI_MAIN_CLASS]
00133
00134
00135 #define current_class \
00136 java_global_trees[JTI_CURRENT_CLASS]
00137
00138
00139 #define all_class_list \
00140 java_global_trees[JTI_ALL_CLASS_LIST]
00141
00142
00143 #define all_class_filename java_global_trees [JTI_ALL_CLASS_FILENAME]
00144
00145
00146
00147 #define otable_methods java_global_trees [JTI_OTABLE_METHODS]
00148
00149
00150
00151 #define otable_decl java_global_trees [JTI_OTABLE_DECL]
00152
00153
00154
00155 #define otable_syms_decl java_global_trees [JTI_OTABLE_SYMS_DECL]
00156
00157 extern int flag_emit_class_files;
00158
00159 extern int flag_filelist_file;
00160
00161
00162
00163
00164 extern int flag_jni;
00165
00166
00167
00168 extern int flag_extraneous_semicolon;
00169
00170
00171
00172 extern int flag_force_classes_archive_check;
00173
00174
00175
00176
00177 extern int flag_emit_xref;
00178
00179
00180 extern int do_not_fold;
00181
00182
00183 extern char * resource_name;
00184
00185
00186 extern int flag_wall;
00187 extern int flag_redundant;
00188 extern int flag_not_overriding;
00189 extern int flag_static_local_jdk1_1;
00190
00191
00192
00193 extern int flag_newer;
00194
00195
00196 extern int flag_use_divide_subroutine;
00197
00198
00199 extern int flag_use_boehm_gc;
00200
00201
00202
00203 extern int flag_hash_synchronization;
00204
00205
00206 extern int flag_check_references;
00207
00208
00209
00210 extern int flag_optimize_sci;
00211
00212
00213
00214 extern int flag_indirect_dispatch;
00215
00216
00217 extern int flag_store_check;
00218
00219
00220 extern const char *current_encoding;
00221
00222
00223 extern struct JCF *current_jcf;
00224
00225 typedef struct CPool constant_pool;
00226
00227 #define CONSTANT_ResolvedFlag 16
00228
00229
00230 #define CONSTANT_ResolvedString (CONSTANT_String+CONSTANT_ResolvedFlag)
00231
00232
00233 #define CONSTANT_ResolvedClass (CONSTANT_Class+CONSTANT_ResolvedFlag)
00234
00235 #define CPOOL_UTF(CPOOL, INDEX) ((tree) (CPOOL)->data[INDEX])
00236
00237
00238
00239
00240 #define NAME_AND_TYPE_NAME(CPOOL, IDX) \
00241 CPOOL_UTF(CPOOL, CPOOL_USHORT1(CPOOL, IDX))
00242 #define NAME_AND_TYPE_SIGNATURE(CPOOL, IDX) \
00243 CPOOL_UTF(CPOOL, CPOOL_USHORT2(CPOOL, IDX))
00244
00245
00246
00247
00248 #define COMPONENT_REF_CLASS_INDEX(CPOOL, IDX) CPOOL_USHORT1(CPOOL, IDX)
00249 #define COMPONENT_REF_NAME_AND_TYPE(CPOOL, IDX) CPOOL_USHORT2(CPOOL, IDX)
00250 #define COMPONENT_REF_NAME(CPOOL, IDX) \
00251 NAME_AND_TYPE_NAME (CPOOL, COMPONENT_REF_NAME_AND_TYPE(CPOOL, IDX))
00252 #define COMPONENT_REF_SIGNATURE(CPOOL, IDX) \
00253 NAME_AND_TYPE_SIGNATURE (CPOOL, COMPONENT_REF_NAME_AND_TYPE(CPOOL, IDX))
00254
00255 enum java_tree_index
00256 {
00257 JTI_PROMOTED_BYTE_TYPE_NODE,
00258 JTI_PROMOTED_SHORT_TYPE_NODE,
00259 JTI_PROMOTED_CHAR_TYPE_NODE,
00260 JTI_PROMOTED_BOOLEAN_TYPE_NODE,
00261
00262 JTI_BYTE_TYPE_NODE,
00263 JTI_SHORT_TYPE_NODE,
00264 JTI_INT_TYPE_NODE,
00265 JTI_LONG_TYPE_NODE,
00266
00267 JTI_UNSIGNED_BYTE_TYPE_NODE,
00268 JTI_UNSIGNED_SHORT_TYPE_NODE,
00269 JTI_UNSIGNED_INT_TYPE_NODE,
00270 JTI_UNSIGNED_LONG_TYPE_NODE,
00271
00272 JTI_BOOLEAN_TYPE_NODE,
00273
00274 JTI_OBJECT_TYPE_NODE,
00275 JTI_UNQUALIFIED_OBJECT_ID_NODE,
00276 JTI_OBJECT_PTR_TYPE_NODE,
00277 JTI_STRING_TYPE_NODE,
00278 JTI_STRING_PTR_TYPE_NODE,
00279 JTI_THROWABLE_TYPE_NODE,
00280 JTI_EXCEPTION_TYPE_NODE,
00281 JTI_RUNTIME_EXCEPTION_TYPE_NODE,
00282 JTI_ERROR_EXCEPTION_TYPE_NODE,
00283 JTI_RAWDATA_PTR_TYPE_NODE,
00284 JTI_CLASS_NOT_FOUND_TYPE_NODE,
00285 JTI_NO_CLASS_DEF_FOUND_TYPE_NODE,
00286
00287 JTI_BYTE_ARRAY_TYPE_NODE,
00288 JTI_SHORT_ARRAY_TYPE_NODE,
00289 JTI_INT_ARRAY_TYPE_NODE,
00290 JTI_LONG_ARRAY_TYPE_NODE,
00291 JTI_BOOLEAN_ARRAY_TYPE_NODE,
00292 JTI_CHAR_ARRAY_TYPE_NODE,
00293 JTI_DOUBLE_ARRAY_TYPE_NODE,
00294 JTI_FLOAT_ARRAY_TYPE_NODE,
00295 JTI_ARRAY_ARRAY_TYPE_NODE,
00296 JTI_OBJECT_ARRAY_TYPE_NODE,
00297 JTI_STRING_ARRAY_TYPE_NODE,
00298 JTI_BOOLEAN_ARRAY_VTABLE,
00299 JTI_BYTE_ARRAY_VTABLE,
00300 JTI_CHAR_ARRAY_VTABLE,
00301 JTI_SHORT_ARRAY_VTABLE,
00302 JTI_INT_ARRAY_VTABLE,
00303 JTI_LONG_ARRAY_VTABLE,
00304 JTI_FLOAT_ARRAY_VTABLE,
00305 JTI_DOUBLE_ARRAY_VTABLE,
00306 JTI_TYPE_IDENTIFIER_NODE,
00307 JTI_INIT_IDENTIFIER_NODE,
00308 JTI_CLINIT_IDENTIFIER_NODE,
00309 JTI_FINIT_IDENTIFIER_NODE,
00310 JTI_INSTINIT_IDENTIFIER_NODE,
00311 JTI_VOID_SIGNATURE_NODE,
00312 JTI_LENGTH_IDENTIFIER_NODE,
00313 JTI_FINALIZE_IDENTIFIER_NODE,
00314 JTI_THIS_IDENTIFIER_NODE,
00315 JTI_SUPER_IDENTIFIER_NODE,
00316 JTI_CONTINUE_IDENTIFIER_NODE,
00317 JTI_ACCESS0_IDENTIFIER_NODE,
00318 JTI_CLASSDOLLAR_IDENTIFIER_NODE,
00319 JTI_ONE_ELT_ARRAY_DOMAIN_TYPE,
00320
00321 JTI_RETURN_ADDRESS_TYPE_NODE,
00322
00323 JTI_BOOLEAN_TRUE_NODE,
00324 JTI_BOOLEAN_FALSE_NODE,
00325
00326 JTI_LONG_ZERO_NODE,
00327 JTI_FLOAT_ZERO_NODE,
00328 JTI_DOUBLE_ZERO_NODE,
00329 JTI_INTEGER_TWO_NODE,
00330 JTI_INTEGER_FOUR_NODE,
00331 JTI_EMPTY_STMT_NODE,
00332
00333 JTI_METHODTABLE_TYPE,
00334 JTI_METHODTABLE_PTR_TYPE,
00335
00336 JTI_UTF8CONST_TYPE,
00337 JTI_UTF8CONST_PTR_TYPE,
00338
00339 JTI_CLASS_TYPE_NODE,
00340 JTI_CLASS_PTR_TYPE,
00341 JTI_FIELD_TYPE_NODE,
00342 JTI_CONSTANTS_TYPE_NODE,
00343 JTI_DTABLE_TYPE,
00344 JTI_DTABLE_PTR_TYPE,
00345 JTI_FIELD_PTR_TYPE_NODE,
00346 JTI_FIELD_INFO_UNION_NODE,
00347 JTI_EXCEPTION_TYPE,
00348 JTI_EXCEPTION_PTR_TYPE,
00349 JTI_LINENUMBERENTRY_TYPE,
00350 JTI_LINENUMBERS_TYPE,
00351 JTI_METHOD_TYPE_NODE,
00352 JTI_METHOD_PTR_TYPE_NODE,
00353 JTI_OTABLE_TYPE,
00354 JTI_OTABLE_PTR_TYPE,
00355 JTI_METHOD_SYMBOL_TYPE,
00356 JTI_METHOD_SYMBOLS_ARRAY_TYPE,
00357 JTI_METHOD_SYMBOLS_ARRAY_PTR_TYPE,
00358
00359 JTI_END_PARAMS_NODE,
00360
00361 JTI_THROW_NODE,
00362 JTI_ALLOC_OBJECT_NODE,
00363 JTI_ALLOC_NO_FINALIZER_NODE,
00364 JTI_SOFT_INSTANCEOF_NODE,
00365 JTI_SOFT_CHECKCAST_NODE,
00366 JTI_SOFT_INITCLASS_NODE,
00367 JTI_SOFT_NEWARRAY_NODE,
00368 JTI_SOFT_ANEWARRAY_NODE,
00369 JTI_SOFT_MULTIANEWARRAY_NODE,
00370 JTI_SOFT_BADARRAYINDEX_NODE,
00371 JTI_SOFT_NULLPOINTER_NODE,
00372 JTI_SOFT_CHECKARRAYSTORE_NODE,
00373 JTI_SOFT_MONITORENTER_NODE,
00374 JTI_SOFT_MONITOREXIT_NODE,
00375 JTI_SOFT_LOOKUPINTERFACEMETHOD_NODE,
00376 JTI_SOFT_LOOKUPJNIMETHOD_NODE,
00377 JTI_SOFT_GETJNIENVNEWFRAME_NODE,
00378 JTI_SOFT_JNIPOPSYSTEMFRAME_NODE,
00379 JTI_SOFT_FMOD_NODE,
00380 JTI_SOFT_IDIV_NODE,
00381 JTI_SOFT_IREM_NODE,
00382 JTI_SOFT_LDIV_NODE,
00383 JTI_SOFT_LREM_NODE,
00384
00385 JTI_ACCESS_FLAGS_TYPE_NODE,
00386
00387 JTI_NATIVECODE_PTR_ARRAY_TYPE_NODE,
00388
00389 JTI_WFL_OPERATOR,
00390 JTI_CURRENT_CONSTANT_POOL_DATA_REF,
00391
00392 JTI_MAIN_CLASS,
00393 JTI_CURRENT_CLASS,
00394 JTI_ALL_CLASS_LIST,
00395 JTI_ALL_CLASS_FILENAME,
00396
00397 JTI_OTABLE_METHODS,
00398 JTI_OTABLE_DECL,
00399 JTI_OTABLE_SYMS_DECL,
00400
00401 JTI_PREDEF_FILENAMES,
00402
00403 JTI_MAX
00404 };
00405
00406 extern tree java_global_trees[JTI_MAX];
00407
00408
00409
00410
00411 #define promoted_byte_type_node \
00412 java_global_trees[JTI_PROMOTED_BYTE_TYPE_NODE]
00413 #define promoted_short_type_node \
00414 java_global_trees[JTI_PROMOTED_SHORT_TYPE_NODE]
00415 #define promoted_char_type_node \
00416 java_global_trees[JTI_PROMOTED_CHAR_TYPE_NODE]
00417 #define promoted_boolean_type_node \
00418 java_global_trees[JTI_PROMOTED_BOOLEAN_TYPE_NODE]
00419
00420 #define byte_type_node \
00421 java_global_trees[JTI_BYTE_TYPE_NODE]
00422 #define short_type_node \
00423 java_global_trees[JTI_SHORT_TYPE_NODE]
00424 #define int_type_node \
00425 java_global_trees[JTI_INT_TYPE_NODE]
00426 #define long_type_node \
00427 java_global_trees[JTI_LONG_TYPE_NODE]
00428
00429 #define unsigned_byte_type_node \
00430 java_global_trees[JTI_UNSIGNED_BYTE_TYPE_NODE]
00431 #define unsigned_short_type_node \
00432 java_global_trees[JTI_UNSIGNED_SHORT_TYPE_NODE]
00433 #define unsigned_int_type_node \
00434 java_global_trees[JTI_UNSIGNED_INT_TYPE_NODE]
00435 #define unsigned_long_type_node \
00436 java_global_trees[JTI_UNSIGNED_LONG_TYPE_NODE]
00437
00438 #define boolean_type_node \
00439 java_global_trees[JTI_BOOLEAN_TYPE_NODE]
00440
00441 #define object_type_node \
00442 java_global_trees[JTI_OBJECT_TYPE_NODE]
00443 #define unqualified_object_id_node \
00444 java_global_trees[JTI_UNQUALIFIED_OBJECT_ID_NODE]
00445 #define object_ptr_type_node \
00446 java_global_trees[JTI_OBJECT_PTR_TYPE_NODE]
00447 #define string_type_node \
00448 java_global_trees[JTI_STRING_TYPE_NODE]
00449 #define string_ptr_type_node \
00450 java_global_trees[JTI_STRING_PTR_TYPE_NODE]
00451 #define throwable_type_node \
00452 java_global_trees[JTI_THROWABLE_TYPE_NODE]
00453 #define exception_type_node \
00454 java_global_trees[JTI_EXCEPTION_TYPE_NODE]
00455 #define runtime_exception_type_node \
00456 java_global_trees[JTI_RUNTIME_EXCEPTION_TYPE_NODE]
00457 #define error_exception_type_node \
00458 java_global_trees[JTI_ERROR_EXCEPTION_TYPE_NODE]
00459 #define rawdata_ptr_type_node \
00460 java_global_trees[JTI_RAWDATA_PTR_TYPE_NODE]
00461 #define class_not_found_type_node \
00462 java_global_trees[JTI_CLASS_NOT_FOUND_TYPE_NODE]
00463 #define no_class_def_found_type_node \
00464 java_global_trees[JTI_NO_CLASS_DEF_FOUND_TYPE_NODE]
00465
00466 #define byte_array_type_node \
00467 java_global_trees[JTI_BYTE_ARRAY_TYPE_NODE]
00468 #define short_array_type_node \
00469 java_global_trees[JTI_SHORT_ARRAY_TYPE_NODE]
00470 #define int_array_type_node \
00471 java_global_trees[JTI_INT_ARRAY_TYPE_NODE]
00472 #define long_array_type_node \
00473 java_global_trees[JTI_LONG_ARRAY_TYPE_NODE]
00474 #define boolean_array_type_node \
00475 java_global_trees[JTI_BOOLEAN_ARRAY_TYPE_NODE]
00476 #define char_array_type_node \
00477 java_global_trees[JTI_CHAR_ARRAY_TYPE_NODE]
00478 #define double_array_type_node \
00479 java_global_trees[JTI_DOUBLE_ARRAY_TYPE_NODE]
00480 #define float_array_type_node \
00481 java_global_trees[JTI_FLOAT_ARRAY_TYPE_NODE]
00482 #define array_array_type_node \
00483 java_global_trees[JTI_ARRAY_ARRAY_TYPE_NODE]
00484 #define object_array_type_node \
00485 java_global_trees[JTI_OBJECT_ARRAY_TYPE_NODE]
00486 #define string_array_type_node \
00487 java_global_trees[JTI_STRING_ARRAY_TYPE_NODE]
00488 #define boolean_array_vtable \
00489 java_global_trees[JTI_BOOLEAN_ARRAY_VTABLE]
00490 #define byte_array_vtable \
00491 java_global_trees[JTI_BYTE_ARRAY_VTABLE]
00492 #define char_array_vtable \
00493 java_global_trees[JTI_CHAR_ARRAY_VTABLE]
00494 #define short_array_vtable \
00495 java_global_trees[JTI_SHORT_ARRAY_VTABLE]
00496 #define int_array_vtable \
00497 java_global_trees[JTI_INT_ARRAY_VTABLE]
00498 #define long_array_vtable \
00499 java_global_trees[JTI_LONG_ARRAY_VTABLE]
00500 #define float_array_vtable \
00501 java_global_trees[JTI_FLOAT_ARRAY_VTABLE]
00502 #define double_array_vtable \
00503 java_global_trees[JTI_DOUBLE_ARRAY_VTABLE]
00504 #define TYPE_identifier_node \
00505 java_global_trees[JTI_TYPE_IDENTIFIER_NODE]
00506 #define init_identifier_node \
00507 java_global_trees[JTI_INIT_IDENTIFIER_NODE]
00508 #define clinit_identifier_node \
00509 java_global_trees[JTI_CLINIT_IDENTIFIER_NODE]
00510 #define finit_identifier_node \
00511 java_global_trees[JTI_FINIT_IDENTIFIER_NODE]
00512
00513 #define instinit_identifier_node \
00514 java_global_trees[JTI_INSTINIT_IDENTIFIER_NODE]
00515 #define void_signature_node \
00516 java_global_trees[JTI_VOID_SIGNATURE_NODE]
00517 #define length_identifier_node \
00518 java_global_trees[JTI_LENGTH_IDENTIFIER_NODE]
00519 #define finalize_identifier_node \
00520 java_global_trees[JTI_FINALIZE_IDENTIFIER_NODE]
00521 #define this_identifier_node \
00522 java_global_trees[JTI_THIS_IDENTIFIER_NODE]
00523 #define super_identifier_node \
00524 java_global_trees[JTI_SUPER_IDENTIFIER_NODE]
00525 #define continue_identifier_node \
00526 java_global_trees[JTI_CONTINUE_IDENTIFIER_NODE]
00527 #define access0_identifier_node \
00528 java_global_trees[JTI_ACCESS0_IDENTIFIER_NODE]
00529 #define classdollar_identifier_node \
00530 java_global_trees[JTI_CLASSDOLLAR_IDENTIFIER_NODE]
00531 #define one_elt_array_domain_type \
00532 java_global_trees[JTI_ONE_ELT_ARRAY_DOMAIN_TYPE]
00533
00534 #define return_address_type_node \
00535 java_global_trees[JTI_RETURN_ADDRESS_TYPE_NODE]
00536
00537
00538 #define boolean_true_node \
00539 java_global_trees[JTI_BOOLEAN_TRUE_NODE]
00540 #define boolean_false_node \
00541 java_global_trees[JTI_BOOLEAN_FALSE_NODE]
00542
00543
00544 #define long_zero_node \
00545 java_global_trees[JTI_LONG_ZERO_NODE]
00546 #define float_zero_node \
00547 java_global_trees[JTI_FLOAT_ZERO_NODE]
00548 #define double_zero_node \
00549 java_global_trees[JTI_DOUBLE_ZERO_NODE]
00550 #define integer_two_node \
00551 java_global_trees[JTI_INTEGER_TWO_NODE]
00552 #define integer_four_node \
00553 java_global_trees[JTI_INTEGER_FOUR_NODE]
00554 #define empty_stmt_node \
00555 java_global_trees[JTI_EMPTY_STMT_NODE]
00556
00557
00558 #define methodtable_type \
00559 java_global_trees[JTI_METHODTABLE_TYPE]
00560 #define methodtable_ptr_type \
00561 java_global_trees[JTI_METHODTABLE_PTR_TYPE]
00562
00563 #define utf8const_type \
00564 java_global_trees[JTI_UTF8CONST_TYPE]
00565 #define utf8const_ptr_type \
00566 java_global_trees[JTI_UTF8CONST_PTR_TYPE]
00567
00568 #define class_type_node \
00569 java_global_trees[JTI_CLASS_TYPE_NODE]
00570 #define class_ptr_type \
00571 java_global_trees[JTI_CLASS_PTR_TYPE]
00572 #define field_type_node \
00573 java_global_trees[JTI_FIELD_TYPE_NODE]
00574 #define constants_type_node \
00575 java_global_trees[JTI_CONSTANTS_TYPE_NODE]
00576 #define dtable_type \
00577 java_global_trees[JTI_DTABLE_TYPE]
00578 #define dtable_ptr_type \
00579 java_global_trees[JTI_DTABLE_PTR_TYPE]
00580 #define field_ptr_type_node \
00581 java_global_trees[JTI_FIELD_PTR_TYPE_NODE]
00582 #define field_info_union_node \
00583 java_global_trees[JTI_FIELD_INFO_UNION_NODE]
00584 #define jexception_type \
00585 java_global_trees[JTI_EXCEPTION_TYPE]
00586 #define jexception_ptr_type \
00587 java_global_trees[JTI_EXCEPTION_PTR_TYPE]
00588 #define lineNumberEntry_type \
00589 java_global_trees[JTI_LINENUMBERENTRY_TYPE]
00590 #define lineNumbers_type \
00591 java_global_trees[JTI_LINENUMBERS_TYPE]
00592 #define method_type_node \
00593 java_global_trees[JTI_METHOD_TYPE_NODE]
00594 #define method_ptr_type_node \
00595 java_global_trees[JTI_METHOD_PTR_TYPE_NODE]
00596 #define otable_type \
00597 java_global_trees[JTI_OTABLE_TYPE]
00598 #define otable_ptr_type \
00599 java_global_trees[JTI_OTABLE_PTR_TYPE]
00600 #define method_symbol_type \
00601 java_global_trees[JTI_METHOD_SYMBOL_TYPE]
00602 #define method_symbols_array_type \
00603 java_global_trees[JTI_METHOD_SYMBOLS_ARRAY_TYPE]
00604 #define method_symbols_array_ptr_type \
00605 java_global_trees[JTI_METHOD_SYMBOLS_ARRAY_PTR_TYPE]
00606
00607 #define end_params_node \
00608 java_global_trees[JTI_END_PARAMS_NODE]
00609
00610
00611 #define throw_node \
00612 java_global_trees[JTI_THROW_NODE]
00613 #define alloc_object_node \
00614 java_global_trees[JTI_ALLOC_OBJECT_NODE]
00615 #define alloc_no_finalizer_node \
00616 java_global_trees[JTI_ALLOC_NO_FINALIZER_NODE]
00617 #define soft_instanceof_node \
00618 java_global_trees[JTI_SOFT_INSTANCEOF_NODE]
00619 #define soft_checkcast_node \
00620 java_global_trees[JTI_SOFT_CHECKCAST_NODE]
00621 #define soft_initclass_node \
00622 java_global_trees[JTI_SOFT_INITCLASS_NODE]
00623 #define soft_newarray_node \
00624 java_global_trees[JTI_SOFT_NEWARRAY_NODE]
00625 #define soft_anewarray_node \
00626 java_global_trees[JTI_SOFT_ANEWARRAY_NODE]
00627 #define soft_multianewarray_node \
00628 java_global_trees[JTI_SOFT_MULTIANEWARRAY_NODE]
00629 #define soft_badarrayindex_node \
00630 java_global_trees[JTI_SOFT_BADARRAYINDEX_NODE]
00631 #define soft_nullpointer_node \
00632 java_global_trees[JTI_SOFT_NULLPOINTER_NODE]
00633 #define soft_checkarraystore_node \
00634 java_global_trees[JTI_SOFT_CHECKARRAYSTORE_NODE]
00635 #define soft_monitorenter_node \
00636 java_global_trees[JTI_SOFT_MONITORENTER_NODE]
00637 #define soft_monitorexit_node \
00638 java_global_trees[JTI_SOFT_MONITOREXIT_NODE]
00639 #define soft_lookupinterfacemethod_node \
00640 java_global_trees[JTI_SOFT_LOOKUPINTERFACEMETHOD_NODE]
00641 #define soft_lookupjnimethod_node \
00642 java_global_trees[JTI_SOFT_LOOKUPJNIMETHOD_NODE]
00643 #define soft_getjnienvnewframe_node \
00644 java_global_trees[JTI_SOFT_GETJNIENVNEWFRAME_NODE]
00645 #define soft_jnipopsystemframe_node \
00646 java_global_trees[JTI_SOFT_JNIPOPSYSTEMFRAME_NODE]
00647 #define soft_fmod_node \
00648 java_global_trees[JTI_SOFT_FMOD_NODE]
00649 #define soft_idiv_node \
00650 java_global_trees[JTI_SOFT_IDIV_NODE]
00651 #define soft_irem_node \
00652 java_global_trees[JTI_SOFT_IREM_NODE]
00653 #define soft_ldiv_node \
00654 java_global_trees[JTI_SOFT_LDIV_NODE]
00655 #define soft_lrem_node \
00656 java_global_trees[JTI_SOFT_LREM_NODE]
00657
00658 #define access_flags_type_node \
00659 java_global_trees[JTI_ACCESS_FLAGS_TYPE_NODE]
00660
00661 #define nativecode_ptr_array_type_node \
00662 java_global_trees[JTI_NATIVECODE_PTR_ARRAY_TYPE_NODE]
00663
00664 #define predef_filenames \
00665 java_global_trees[JTI_PREDEF_FILENAMES]
00666
00667 #define nativecode_ptr_type_node ptr_type_node
00668
00669
00670 extern struct CPool *outgoing_cpool;
00671
00672
00673 #define current_constant_pool_data_ref \
00674 java_global_trees[JTI_CURRENT_CONSTANT_POOL_DATA_REF]
00675
00676 #define wfl_operator \
00677 java_global_trees[JTI_WFL_OPERATOR]
00678
00679 extern const char *cyclic_inheritance_report;
00680
00681 struct lang_identifier
00682 {
00683 struct tree_identifier ignore;
00684 tree global_value, local_value;
00685
00686
00687
00688 tree utf8_ref;
00689 };
00690
00691
00692
00693
00694
00695
00696 #define IDENTIFIER_GLOBAL_VALUE(NODE) \
00697 (((struct lang_identifier *)(NODE))->global_value)
00698
00699
00700 #define IDENTIFIER_LOCAL_VALUE(NODE) \
00701 (((struct lang_identifier *)(NODE))->local_value)
00702
00703
00704
00705
00706 #define IDENTIFIER_CLASS_VALUE(NODE) IDENTIFIER_GLOBAL_VALUE(NODE)
00707
00708
00709
00710
00711 #define IDENTIFIER_HANDLECLASS_VALUE(NODE) ???
00712
00713
00714
00715
00716
00717 #define IDENTIFIER_SIGNATURE_TYPE(NODE) IDENTIFIER_GLOBAL_VALUE(NODE)
00718
00719
00720
00721 #define IDENTIFIER_UTF8_REF(NODE) \
00722 (((struct lang_identifier *)(NODE))->utf8_ref)
00723
00724 #define IDENTIFIER_UTF8_DECL(NODE) \
00725 TREE_OPERAND((((struct lang_identifier *)(NODE))->utf8_ref), 0)
00726
00727
00728
00729
00730 #define DECL_CODE_OFFSET(DECL) (DECL_LANG_SPECIFIC(DECL)->code_offset)
00731
00732 #define DECL_CODE_LENGTH(DECL) (DECL_LANG_SPECIFIC(DECL)->code_length)
00733
00734 #define DECL_LINENUMBERS_OFFSET(DECL) \
00735 (DECL_LANG_SPECIFIC(DECL)->linenumbers_offset)
00736
00737
00738 #define DECL_LOCALVARIABLES_OFFSET(DECL) \
00739 (DECL_LANG_SPECIFIC(DECL)->localvariables_offset)
00740
00741 #define DECL_MAX_LOCALS(DECL) (DECL_LANG_SPECIFIC(DECL)->max_locals)
00742 #define DECL_MAX_STACK(DECL) (DECL_LANG_SPECIFIC(DECL)->max_stack)
00743
00744 #define DECL_ARG_SLOT_COUNT(DECL) (DECL_LANG_SPECIFIC(DECL)->arg_slot_count)
00745
00746 #define DECL_FUNCTION_WFL(DECL) (DECL_LANG_SPECIFIC(DECL)->wfl)
00747
00748
00749 #define DECL_FUNCTION_THROWS(DECL) (DECL_LANG_SPECIFIC(DECL)->throws_list)
00750
00751
00752 #define DECL_CONSTRUCTOR_CALLS(DECL) \
00753 (DECL_LANG_SPECIFIC(DECL)->called_constructor)
00754
00755
00756 #define DECL_FUNCTION_ACCESS_DECL(DECL) \
00757 (DECL_LANG_SPECIFIC(DECL)->called_constructor)
00758
00759
00760 #define DECL_FUNCTION_INNER_ACCESS(DECL) \
00761 (DECL_LANG_SPECIFIC(DECL)->inner_access)
00762
00763
00764 #define DECL_FUNCTION_BODY(DECL) (DECL_LANG_SPECIFIC(DECL)->function_decl_body)
00765
00766
00767 #define DECL_SPECIFIC_COUNT(DECL) DECL_ARG_SLOT_COUNT(DECL)
00768
00769
00770
00771
00772 #define DECL_FUNCTION_INIT_TEST_TABLE(DECL) \
00773 (DECL_LANG_SPECIFIC(DECL)->init_test_table)
00774
00775 #define DECL_FUNCTION_INIT_TEST_CLASS(DECL) \
00776 (((struct lang_decl_var*)DECL_LANG_SPECIFIC(DECL))->slot_chain)
00777
00778
00779
00780 #define DECL_FUNCTION_INITIALIZED_CLASS_TABLE(DECL) \
00781 (DECL_LANG_SPECIFIC(DECL)->ict)
00782
00783
00784
00785 #define DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND(DECL) \
00786 (DECL_LANG_SPECIFIC(DECL)->smic)
00787
00788
00789
00790 #define DECL_FUNCTION_NAP(DECL) (DECL_LANG_SPECIFIC(DECL)->nap)
00791
00792 #define DECL_FUNCTION_SYNTHETIC_CTOR(DECL) \
00793 (DECL_LANG_SPECIFIC(DECL)->synthetic_ctor)
00794 #define DECL_FIXED_CONSTRUCTOR_P(DECL) (DECL_LANG_SPECIFIC(DECL)->fixed_ctor)
00795
00796
00797 #define DECL_INIT_CALLS_THIS(DECL) (DECL_LANG_SPECIFIC(DECL)->init_calls_this)
00798
00799
00800 #define FIELD_LOCAL_ALIAS(DECL) DECL_LANG_FLAG_6 (DECL)
00801
00802
00803
00804 #define FIELD_LOCAL_ALIAS_USED(DECL) DECL_LANG_FLAG_7 (DECL)
00805
00806
00807
00808
00809 #define FIELD_THISN(DECL) DECL_LANG_FLAG_7 (DECL)
00810
00811
00812 #define LABEL_TYPE_STATE(NODE) (DECL_INITIAL (NODE))
00813
00814
00815
00816 #define LABEL_RETURN_LABEL(DECL) DECL_ARGUMENTS(DECL)
00817
00818
00819
00820
00821
00822 #define LABEL_RETURN_TYPE_STATE(NODE) LABEL_TYPE_STATE (LABEL_RETURN_LABEL (NODE))
00823
00824
00825
00826 #define RETURN_MAP_ADJUSTED(NODE) TREE_LANG_FLAG_2(NODE)
00827
00828
00829 #define LABEL_RETURN_LABELS(node) \
00830 (LABEL_DECL_CHECK (LABEL_RETURN_LABEL(node))->decl.result)
00831
00832
00833
00834 #define LABEL_PENDING_CHAIN(NODE) (LABEL_DECL_CHECK (NODE)->decl.result)
00835
00836
00837 #define LABEL_PC(NODE) ((NODE)->decl.u2.i)
00838
00839
00840 #define LABEL_CHANGED(NODE) DECL_LANG_FLAG_6(NODE)
00841
00842
00843 #define LABEL_VERIFIED(NODE) (instruction_bits[LABEL_PC(NODE)]&BCODE_VERIFIED)
00844
00845
00846 #define LABEL_IN_SUBR(NODE) DECL_LANG_FLAG_4(NODE)
00847
00848 #define LABEL_IS_SUBR_START(NODE) DECL_LANG_FLAG_5(NODE)
00849
00850
00851 #define LABEL_SUBR_START(NODE) DECL_ABSTRACT_ORIGIN(NODE)
00852
00853
00854
00855
00856 #define LABEL_SUBR_CONTEXT(NODE) DECL_CONTEXT (LABEL_RETURN_LABEL (NODE))
00857
00858
00859 #define DECL_LOCAL_SLOT_NUMBER(NODE) \
00860 (((struct lang_decl_var*)DECL_LANG_SPECIFIC(NODE))->slot_number)
00861
00862 #define DECL_LOCAL_START_PC(NODE) \
00863 (((struct lang_decl_var*)DECL_LANG_SPECIFIC(NODE))->start_pc)
00864
00865 #define DECL_LOCAL_END_PC(NODE) \
00866 (((struct lang_decl_var*)DECL_LANG_SPECIFIC(NODE))->end_pc)
00867
00868
00869 #define DECL_LOCAL_SLOT_CHAIN(NODE) \
00870 (((struct lang_decl_var*)DECL_LANG_SPECIFIC(NODE))->slot_chain)
00871
00872
00873 #define FIELD_INNER_ACCESS(DECL) \
00874 (((struct lang_decl_var*)DECL_LANG_SPECIFIC(DECL))->am)
00875
00876 #define FIELD_INNER_ACCESS_P(DECL) \
00877 DECL_LANG_SPECIFIC (DECL) && FIELD_INNER_ACCESS (DECL)
00878
00879
00880 #define DECL_FIELD_FINAL_IUD(NODE) \
00881 (((struct lang_decl_var*)DECL_LANG_SPECIFIC(NODE))->final_iud)
00882
00883 #define DECL_FIELD_FINAL_WFL(NODE) \
00884 (((struct lang_decl_var*)DECL_LANG_SPECIFIC(NODE))->wfl)
00885
00886 #define LOCAL_FINAL_P(NODE) (DECL_LANG_SPECIFIC (NODE) && DECL_FINAL (NODE))
00887
00888 #define FINAL_VARIABLE_P(NODE) (FIELD_FINAL (NODE) && !FIELD_STATIC (NODE))
00889
00890 #define CLASS_FINAL_VARIABLE_P(NODE) \
00891 (FIELD_FINAL (NODE) && FIELD_STATIC (NODE))
00892
00893
00894 #define LOCAL_CLASS_INITIALIZATION_FLAG(NODE) \
00895 (((struct lang_decl_var*)DECL_LANG_SPECIFIC(NODE))->cif)
00896
00897 #define LOCAL_CLASS_INITIALIZATION_FLAG_P(NODE) \
00898 (DECL_LANG_SPECIFIC (NODE) && LOCAL_CLASS_INITIALIZATION_FLAG(NODE))
00899
00900 #define MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC(T) \
00901 if (DECL_LANG_SPECIFIC (T) == NULL) \
00902 { \
00903 DECL_LANG_SPECIFIC ((T)) \
00904 = ((struct lang_decl *) \
00905 ggc_alloc_cleared (sizeof (struct lang_decl_var))); \
00906 }
00907
00908
00909 #define CONSTANT_VALUE_P(NODE) \
00910 (TREE_CODE (NODE) == STRING_CST \
00911 || (TREE_CODE (NODE) == INTEGER_CST \
00912 && TREE_CODE (TREE_TYPE (NODE)) != POINTER_TYPE) \
00913 || TREE_CODE (NODE) == REAL_CST)
00914
00915
00916
00917
00918
00919 #define DECL_BIT_INDEX(DECL) (DECL_CHECK (DECL)->decl.pointer_alias_set)
00920
00921
00922 struct lang_decl
00923 {
00924
00925 long code_offset;
00926 int code_length;
00927 long linenumbers_offset;
00928 long localvariables_offset;
00929 int arg_slots;
00930 int max_locals, max_stack, arg_slot_count;
00931 tree wfl;
00932 tree throws_list;
00933 tree function_decl_body;
00934 tree called_constructor;
00935
00936 struct hash_table init_test_table;
00937
00938 struct hash_table ict;
00939 tree smic;
00940 tree inner_access;
00941
00942 int nap;
00943 unsigned int native : 1;
00944 unsigned int synthetic_ctor : 1;
00945 unsigned int init_final : 1;
00946 unsigned int fixed_ctor : 1;
00947 unsigned int init_calls_this : 1;
00948 unsigned int strictfp : 1;
00949 };
00950
00951
00952 struct init_test_hash_entry
00953 {
00954 struct hash_entry root;
00955 tree init_test_decl;
00956 };
00957
00958
00959
00960 struct lang_decl_var
00961 {
00962 int slot_number;
00963 int start_pc;
00964 int end_pc;
00965 tree slot_chain;
00966 tree am;
00967 tree wfl;
00968 unsigned int final_iud : 1;
00969 unsigned int cif : 1;
00970 };
00971
00972
00973
00974 #define TYPE_SIGNATURE(T) (TYPE_LANG_SPECIFIC(T)->signature)
00975 #define TYPE_JCF(T) (TYPE_LANG_SPECIFIC(T)->jcf)
00976 #define TYPE_CPOOL(T) (TYPE_LANG_SPECIFIC(T)->cpool)
00977 #define TYPE_CPOOL_DATA_REF(T) (TYPE_LANG_SPECIFIC(T)->cpool_data_ref)
00978 #define MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC(T) \
00979 if (TYPE_LANG_SPECIFIC ((T)) == NULL) \
00980 { \
00981 TYPE_LANG_SPECIFIC ((T)) = \
00982 ((struct lang_type *) \
00983 ggc_alloc_cleared (sizeof (struct lang_type))); \
00984 }
00985
00986 #define TYPE_FINIT_STMT_LIST(T) (TYPE_LANG_SPECIFIC(T)->finit_stmt_list)
00987 #define TYPE_CLINIT_STMT_LIST(T) (TYPE_LANG_SPECIFIC(T)->clinit_stmt_list)
00988 #define TYPE_II_STMT_LIST(T) (TYPE_LANG_SPECIFIC(T)->ii_block)
00989
00990
00991 #define TYPE_DOT_CLASS(T) (TYPE_LANG_SPECIFIC(T)->dot_class)
00992 #define TYPE_PACKAGE_LIST(T) (TYPE_LANG_SPECIFIC(T)->package_list)
00993 #define TYPE_IMPORT_LIST(T) (TYPE_LANG_SPECIFIC(T)->import_list)
00994 #define TYPE_IMPORT_DEMAND_LIST(T) (TYPE_LANG_SPECIFIC(T)->import_demand_list)
00995 #define TYPE_PRIVATE_INNER_CLASS(T) (TYPE_LANG_SPECIFIC(T)->pic)
00996 #define TYPE_PROTECTED_INNER_CLASS(T) (TYPE_LANG_SPECIFIC(T)->poic)
00997 #define TYPE_STRICTFP(T) (TYPE_LANG_SPECIFIC(T)->strictfp)
00998
00999 struct lang_type
01000 {
01001 tree signature;
01002 struct JCF *jcf;
01003 struct CPool *cpool;
01004 tree cpool_data_ref;
01005 tree finit_stmt_list;
01006 tree clinit_stmt_list;
01007 tree ii_block;
01008 tree dot_class;
01009
01010
01011
01012 tree package_list;
01013 tree import_list;
01014 tree import_demand_list;
01015 unsigned pic:1;
01016 unsigned poic:1;
01017 unsigned strictfp:1;
01018 };
01019
01020 #ifdef JAVA_USE_HANDLES
01021
01022
01023
01024 #define BINFO_HANDLE(NODE) TREE_VEC_ELT ((NODE), 6)
01025
01026
01027 #define HANDLE_TO_CLASS_TYPE(HTYPE) BINFO_HANDLE (TYPE_BINFO (HTYPE))
01028
01029
01030 #define CLASS_TO_HANDLE_TYPE(TYPE) BINFO_HANDLE (TYPE_BINFO (TYPE))
01031 #else
01032 #define HANDLE_TO_CLASS_TYPE(HTYPE) (HTYPE)
01033 #define CLASS_TO_HANDLE_TYPE(TYPE) (TYPE)
01034 #endif
01035
01036 #define JCF_u4 unsigned long
01037 #define JCF_u2 unsigned short
01038
01039 extern void java_set_yydebug PARAMS ((int));
01040 extern void add_assume_compiled PARAMS ((const char *, int));
01041 extern tree lookup_class PARAMS ((tree));
01042 extern tree lookup_java_constructor PARAMS ((tree, tree));
01043 extern tree lookup_java_method PARAMS ((tree, tree, tree));
01044 extern tree lookup_argument_method PARAMS ((tree, tree, tree));
01045 extern tree lookup_argument_method2 PARAMS ((tree, tree, tree));
01046 extern int has_method PARAMS ((tree, tree));
01047 extern tree promote_type PARAMS ((tree));
01048 extern tree get_constant PARAMS ((struct JCF*, int));
01049 extern tree get_name_constant PARAMS ((struct JCF*, int));
01050 extern tree get_class_constant PARAMS ((struct JCF*, int));
01051 extern tree parse_signature PARAMS ((struct JCF *jcf, int sig_index));
01052 extern tree add_field PARAMS ((tree, tree, tree, int));
01053 extern tree add_method PARAMS ((tree, int, tree, tree));
01054 extern tree add_method_1 PARAMS ((tree, int, tree, tree));
01055 extern tree make_class PARAMS ((void));
01056 extern tree push_class PARAMS ((tree, tree));
01057 extern tree unmangle_classname PARAMS ((const char *name, int name_length));
01058 extern tree parse_signature_string PARAMS ((const unsigned char *, int));
01059 extern tree get_type_from_signature PARAMS ((tree));
01060 extern void layout_class PARAMS ((tree));
01061 extern tree layout_class_method PARAMS ((tree, tree, tree, tree));
01062 extern void layout_class_methods PARAMS ((tree));
01063 extern tree build_class_ref PARAMS ((tree));
01064 extern tree build_dtable_decl PARAMS ((tree));
01065 extern tree build_internal_class_name PARAMS ((tree));
01066 extern tree build_constants_constructor PARAMS ((void));
01067 extern tree build_ref_from_constant_pool PARAMS ((int));
01068 extern void compile_resource_file PARAMS ((char *, const char *));
01069 extern tree build_utf8_ref PARAMS ((tree));
01070 extern tree ident_subst PARAMS ((const char*, int,
01071 const char*, int, int, const char*));
01072 extern tree identifier_subst PARAMS ((const tree,
01073 const char *, int, int, const char *));
01074 extern void java_init_decl_processing PARAMS ((void));
01075 extern tree build_java_signature PARAMS ((tree));
01076 extern tree build_java_argument_signature PARAMS ((tree));
01077 extern void set_java_signature PARAMS ((tree, tree));
01078 extern tree build_static_field_ref PARAMS ((tree));
01079 extern tree build_address_of PARAMS ((tree));
01080 extern tree find_local_variable PARAMS ((int index, tree type, int pc));
01081 extern tree find_stack_slot PARAMS ((int index, tree type));
01082 extern tree build_prim_array_type PARAMS ((tree, HOST_WIDE_INT));
01083 extern tree build_java_array_type PARAMS ((tree, HOST_WIDE_INT));
01084 extern int is_compiled_class PARAMS ((tree));
01085 extern tree mangled_classname PARAMS ((const char*, tree));
01086 extern tree lookup_label PARAMS ((int));
01087 extern tree pop_type_0 PARAMS ((tree, char**));
01088 extern tree pop_type PARAMS ((tree));
01089 extern tree decode_newarray_type PARAMS ((int));
01090 extern tree lookup_field PARAMS ((tree*, tree));
01091 extern int is_array_type_p PARAMS ((tree));
01092 extern HOST_WIDE_INT java_array_type_length PARAMS ((tree));
01093 extern int read_class PARAMS ((tree));
01094 extern void load_class PARAMS ((tree, int));
01095
01096 extern tree check_for_builtin PARAMS ((tree, tree));
01097 extern void initialize_builtins PARAMS ((void));
01098
01099 extern tree lookup_name PARAMS ((tree));
01100 extern tree build_known_method_ref PARAMS ((tree, tree, tree, tree, tree));
01101 extern tree build_class_init PARAMS ((tree, tree));
01102 extern tree build_invokevirtual PARAMS ((tree, tree));
01103 extern tree build_invokeinterface PARAMS ((tree, tree));
01104 extern tree build_jni_stub PARAMS ((tree));
01105 extern tree invoke_build_dtable PARAMS ((int, tree));
01106 extern tree build_field_ref PARAMS ((tree, tree, tree));
01107 extern void pushdecl_force_head PARAMS ((tree));
01108 extern tree build_java_binop PARAMS ((enum tree_code, tree, tree, tree));
01109 extern tree build_java_soft_divmod PARAMS ((enum tree_code, tree, tree, tree));
01110 extern tree binary_numeric_promotion PARAMS ((tree, tree, tree *, tree *));
01111 extern tree build_java_arrayaccess PARAMS ((tree, tree, tree));
01112 extern tree build_java_arraystore_check PARAMS ((tree, tree));
01113 extern tree build_newarray PARAMS ((int, tree));
01114 extern tree build_anewarray PARAMS ((tree, tree));
01115 extern tree build_new_array PARAMS ((tree, tree));
01116 extern tree build_java_array_length_access PARAMS ((tree));
01117 extern tree build_java_arraynull_check PARAMS ((tree, tree, tree));
01118 extern tree build_java_indirect_ref PARAMS ((tree, tree, int));
01119 extern tree java_check_reference PARAMS ((tree, int));
01120 extern tree build_get_class PARAMS ((tree));
01121 extern tree build_instanceof PARAMS ((tree, tree));
01122 extern tree create_label_decl PARAMS ((tree));
01123 extern void push_labeled_block PARAMS ((tree));
01124 extern tree prepare_eh_table_type PARAMS ((tree));
01125 extern tree build_exception_object_ref PARAMS ((tree));
01126 extern tree generate_name PARAMS ((void));
01127 extern void pop_labeled_block PARAMS ((void));
01128 extern const char *lang_printable_name PARAMS ((tree, int));
01129 extern tree maybe_add_interface PARAMS ((tree, tree));
01130 extern void set_super_info PARAMS ((int, tree, tree, int));
01131 extern void set_class_decl_access_flags PARAMS ((int, tree));
01132 extern int get_access_flags_from_decl PARAMS ((tree));
01133 extern int interface_of_p PARAMS ((tree, tree));
01134 extern int inherits_from_p PARAMS ((tree, tree));
01135 extern int common_enclosing_context_p PARAMS ((tree, tree));
01136 extern int enclosing_context_p PARAMS ((tree, tree));
01137 extern void complete_start_java_method PARAMS ((tree));
01138 extern tree build_result_decl PARAMS ((tree));
01139 extern void emit_handlers PARAMS ((void));
01140 extern void init_outgoing_cpool PARAMS ((void));
01141 extern void make_class_data PARAMS ((tree));
01142 extern void register_class PARAMS ((void));
01143 extern int alloc_name_constant PARAMS ((int, tree));
01144 extern void emit_register_classes PARAMS ((void));
01145 extern void emit_offset_symbol_table PARAMS ((void));
01146 extern void lang_init_source PARAMS ((int));
01147 extern void write_classfile PARAMS ((tree));
01148 extern char *print_int_node PARAMS ((tree));
01149 extern void parse_error_context PARAMS ((tree cl, const char *, ...))
01150 ATTRIBUTE_PRINTF_2;
01151 extern void finish_class PARAMS ((void));
01152 extern void java_layout_seen_class_methods PARAMS ((void));
01153 extern void check_for_initialization PARAMS ((tree, tree));
01154
01155 extern tree pushdecl_top_level PARAMS ((tree));
01156 extern int alloc_class_constant PARAMS ((tree));
01157 extern void init_expr_processing PARAMS ((void));
01158 extern void push_super_field PARAMS ((tree, tree));
01159 extern void init_class_processing PARAMS ((void));
01160 extern int can_widen_reference_to PARAMS ((tree, tree));
01161 extern int class_depth PARAMS ((tree));
01162 extern int verify_jvm_instructions PARAMS ((struct JCF *, const unsigned char *, long));
01163 extern void maybe_pushlevels PARAMS ((int));
01164 extern void maybe_poplevels PARAMS ((int));
01165 extern void force_poplevels PARAMS ((int));
01166 extern int process_jvm_instruction PARAMS ((int, const unsigned char *, long));
01167 extern int maybe_adjust_start_pc PARAMS ((struct JCF *, int, int, int));
01168 extern void set_local_type PARAMS ((int, tree));
01169 extern int merge_type_state PARAMS ((tree));
01170 extern int push_type_0 PARAMS ((tree));
01171 extern void push_type PARAMS ((tree));
01172 extern void load_type_state PARAMS ((tree));
01173 extern void add_interface PARAMS ((tree, tree));
01174 extern tree force_evaluation_order PARAMS ((tree));
01175 extern int verify_constant_pool PARAMS ((struct JCF *));
01176 extern void start_java_method PARAMS ((tree));
01177 extern void end_java_method PARAMS ((void));
01178 extern void give_name_to_locals PARAMS ((struct JCF *));
01179 extern void note_instructions PARAMS ((struct JCF *, tree));
01180 extern void expand_byte_code PARAMS ((struct JCF *, tree));
01181 extern int open_in_zip PARAMS ((struct JCF *, const char *, const char *, int));
01182 extern void set_constant_value PARAMS ((tree, tree));
01183 #ifdef jword
01184 extern int find_constant1 PARAMS ((struct CPool *, int, jword));
01185 extern int find_constant2 PARAMS ((struct CPool *, int, jword, jword));
01186 #endif
01187 extern int find_utf8_constant PARAMS ((struct CPool *, tree));
01188 extern int find_string_constant PARAMS ((struct CPool *, tree));
01189 extern int find_class_constant PARAMS ((struct CPool *, tree));
01190 extern int find_fieldref_index PARAMS ((struct CPool *, tree));
01191 extern int find_methodref_index PARAMS ((struct CPool *, tree));
01192 extern int find_methodref_with_class_index PARAMS ((struct CPool *, tree, tree));
01193 extern void write_constant_pool PARAMS ((struct CPool *, unsigned char *, int));
01194 extern int count_constant_pool_bytes PARAMS ((struct CPool *));
01195 extern int encode_newarray_type PARAMS ((tree));
01196 #ifdef uint64
01197 extern void format_int PARAMS ((char *, jlong, int));
01198 extern void format_uint PARAMS ((char *, uint64, int));
01199 #endif
01200 extern void jcf_trim_old_input PARAMS ((struct JCF *));
01201 #ifdef BUFSIZ
01202 extern void jcf_print_utf8 PARAMS ((FILE *, const unsigned char *, int));
01203 extern void jcf_print_char PARAMS ((FILE *, int));
01204 extern void jcf_print_utf8_replace PARAMS ((FILE *, const unsigned char *,
01205 int, int, int));
01206 # if JCF_USE_STDIO
01207 extern const char* open_class PARAMS ((const char *, struct JCF *,
01208 FILE *, const char *));
01209 # else
01210 extern const char* open_class PARAMS ((const char *, struct JCF *,
01211 int, const char *));
01212 # endif
01213 #endif
01214 extern void java_debug_context PARAMS ((void));
01215 extern void safe_layout_class PARAMS ((tree));
01216
01217 extern tree get_boehm_type_descriptor PARAMS ((tree));
01218 extern bool class_has_finalize_method PARAMS ((tree));
01219 extern unsigned long java_hash_hash_tree_node PARAMS ((hash_table_key));
01220 extern bool java_hash_compare_tree_node PARAMS ((hash_table_key,
01221 hash_table_key));
01222 extern bool attach_initialized_static_class PARAMS ((struct hash_entry *,
01223 PTR));
01224 extern void java_check_methods PARAMS ((tree));
01225 extern void init_jcf_parse PARAMS((void));
01226 extern void init_src_parse PARAMS((void));
01227
01228 extern int cxx_keyword_p PARAMS ((const char *, int));
01229 extern tree java_mangle_decl PARAMS ((struct obstack *, tree));
01230 extern tree java_mangle_class_field PARAMS ((struct obstack *, tree));
01231 extern tree java_mangle_class_field_from_string PARAMS ((struct obstack *, char *));
01232 extern tree java_mangle_vtable PARAMS ((struct obstack *, tree));
01233 extern const char *lang_printable_name_wls PARAMS ((tree, int));
01234 extern void append_gpp_mangled_name PARAMS ((const char *, int));
01235
01236 extern void add_predefined_file PARAMS ((tree));
01237 extern int predefined_filename_p PARAMS ((tree));
01238
01239
01240
01241 #if defined (TREE_CODE) && defined(RTX_CODE) && defined (HAVE_MACHINE_MODES) && defined (ARGS_SIZE_RTX)
01242 struct rtx_def * java_lang_expand_expr PARAMS ((tree, rtx, enum machine_mode,
01243 enum expand_modifier));
01244 #endif
01245
01246 #define DECL_FINAL(DECL) DECL_LANG_FLAG_3 (DECL)
01247
01248
01249
01250 #define METHOD_PUBLIC(DECL) DECL_LANG_FLAG_1 (DECL)
01251 #define METHOD_PRIVATE(DECL) TREE_PRIVATE (DECL)
01252 #define METHOD_PROTECTED(DECL) TREE_PROTECTED (DECL)
01253 #define METHOD_STATIC(DECL) DECL_LANG_FLAG_2 (DECL)
01254 #define METHOD_FINAL(DECL) DECL_FINAL (DECL)
01255 #define METHOD_SYNCHRONIZED(DECL) DECL_LANG_FLAG_4 (DECL)
01256 #define METHOD_NATIVE(DECL) (DECL_LANG_SPECIFIC(DECL)->native)
01257 #define METHOD_ABSTRACT(DECL) DECL_LANG_FLAG_5 (DECL)
01258 #define METHOD_TRANSIENT(DECL) DECL_LANG_FLAG_6 (DECL)
01259 #define METHOD_STRICTFP(DECL) (DECL_LANG_SPECIFIC (DECL)->strictfp)
01260
01261 #define JAVA_FILE_P(NODE) TREE_LANG_FLAG_2 (NODE)
01262 #define CLASS_FILE_P(NODE) TREE_LANG_FLAG_3 (NODE)
01263 #define ZIP_FILE_P(NODE) TREE_LANG_FLAG_4 (NODE)
01264
01265
01266
01267 #define DECL_CONSTRUCTOR_P(DECL) DECL_LANG_FLAG_7(DECL)
01268
01269 #define DECL_INIT_P(DECL) (ID_INIT_P (DECL_NAME (DECL)))
01270 #define DECL_FINIT_P(DECL) (ID_FINIT_P (DECL_NAME (DECL)))
01271 #define DECL_CLINIT_P(DECL) (ID_CLINIT_P (DECL_NAME (DECL)))
01272 #define DECL_INSTINIT_P(DECL) (ID_INSTINIT_P (DECL_NAME (DECL)))
01273
01274
01275
01276 #define ID_INIT_P(ID) ((ID) == init_identifier_node)
01277 #define ID_FINIT_P(ID) ((ID) == finit_identifier_node)
01278 #define ID_CLINIT_P(ID) ((ID) == clinit_identifier_node)
01279 #define ID_CLASSDOLLAR_P(ID) ((ID) == classdollar_identifier_node)
01280 #define ID_INSTINIT_P(ID) ((ID) == instinit_identifier_node)
01281
01282
01283
01284 #define FIELD_PRIVATE(DECL) TREE_PRIVATE (DECL)
01285 #define FIELD_PROTECTED(DECL) TREE_PROTECTED (DECL)
01286 #define FIELD_PUBLIC(DECL) DECL_LANG_FLAG_1 (DECL)
01287 #define FIELD_STATIC(DECL) TREE_STATIC (DECL)
01288 #define FIELD_FINAL(DECL) DECL_FINAL (DECL)
01289 #define FIELD_VOLATILE(DECL) DECL_LANG_FLAG_4 (DECL)
01290 #define FIELD_TRANSIENT(DECL) DECL_LANG_FLAG_5 (DECL)
01291
01292
01293
01294 #define CLASS_PUBLIC(DECL) DECL_LANG_FLAG_1 (DECL)
01295 #define CLASS_FINAL(DECL) DECL_FINAL (DECL)
01296 #define CLASS_INTERFACE(DECL) DECL_LANG_FLAG_4 (DECL)
01297 #define CLASS_ABSTRACT(DECL) DECL_LANG_FLAG_5 (DECL)
01298 #define CLASS_SUPER(DECL) DECL_LANG_FLAG_6 (DECL)
01299 #define CLASS_STATIC(DECL) DECL_LANG_FLAG_7 (DECL)
01300 #define CLASS_PRIVATE(DECL) (TYPE_PRIVATE_INNER_CLASS (TREE_TYPE (DECL)))
01301 #define CLASS_PROTECTED(DECL) (TYPE_PROTECTED_INNER_CLASS (TREE_TYPE (DECL)))
01302 #define CLASS_STRICTFP(DECL) (TYPE_STRICTFP (TREE_TYPE (DECL)))
01303
01304
01305
01306 #define METHOD_DEPRECATED(DECL) DECL_LANG_FLAG_0 (DECL)
01307 #define FIELD_DEPRECATED(DECL) DECL_LANG_FLAG_0 (DECL)
01308 #define CLASS_DEPRECATED(DECL) DECL_LANG_FLAG_0 (DECL)
01309 #define DECL_DEPRECATED(DECL) DECL_LANG_FLAG_0 (DECL)
01310
01311
01312
01313
01314 #define TYPE_NVIRTUALS(TYPE) TYPE_BINFO_VIRTUALS (TYPE)
01315
01316
01317
01318 #define TYPE_VTABLE(TYPE) TYPE_BINFO_VTABLE(TYPE)
01319
01320
01321 #define CLASS_COMPLETE_P(DECL) DECL_LANG_FLAG_2 (DECL)
01322
01323
01324
01325 extern char *instruction_bits;
01326
01327
01328 #define BCODE_INSTRUCTION_START 1
01329
01330
01331 #define BCODE_JUMP_TARGET 2
01332
01333
01334 #define BCODE_EXCEPTION_TARGET 16
01335
01336
01337 #define BCODE_TARGET (BCODE_JUMP_TARGET| BCODE_EXCEPTION_TARGET)
01338
01339
01340 #define BCODE_HAS_LINENUMBER 32
01341
01342
01343
01344 #define BCODE_HAS_MULTI_LINENUMBERS 64
01345
01346
01347 #define BCODE_VERIFIED 8
01348
01349
01350 extern const unsigned char *linenumber_table;
01351
01352 extern int linenumber_count;
01353
01354
01355 #define TYPE_UNKNOWN NULL_TREE
01356
01357
01358 #define TYPE_SECOND void_type_node
01359
01360
01361 #define TYPE_NULL ptr_type_node
01362
01363
01364 #define TYPE_RETURN_ADDR return_address_type_node
01365
01366
01367
01368 #define TYPE_UNUSED error_mark_node
01369
01370
01371 #define TYPE_UNDERFLOW integer_zero_node
01372
01373
01374 #define TYPE_UNEXPECTED NULL_TREE
01375
01376
01377
01378
01379 extern tree *type_map;
01380
01381
01382 #define stack_type_map (type_map+DECL_MAX_LOCALS(current_function_decl))
01383
01384
01385 #define TYPE_IS_WIDE(TYPE) \
01386 ((TYPE) == double_type_node || (TYPE) == long_type_node)
01387
01388
01389 #define CLASS_ACCESS0_GENERATED_P(CLASS) TYPE_LANG_FLAG_0 (CLASS)
01390
01391
01392 #define TYPE_ARRAY_P(TYPE) TYPE_LANG_FLAG_1 (TYPE)
01393
01394
01395 #define IS_ARRAY_LENGTH_ACCESS(NODE) TREE_LANG_FLAG_4 (NODE)
01396
01397
01398 #define TYPE_ARGUMENT_SIGNATURE(TYPE) TYPE_VFIELD(TYPE)
01399
01400
01401
01402 #define TYPE_ARRAY_ELEMENT(ATYPE) TREE_TYPE(ATYPE)
01403
01404
01405
01406 #define CLASS_LOADED_P(TYPE) (TYPE_SIZE (TYPE) != NULL_TREE \
01407 && (CLASS_PARSED_P(TYPE) || TYPE_ARRAY_P(TYPE)))
01408
01409
01410 #define CLASS_PARSED_P(TYPE) TYPE_LANG_FLAG_2 (TYPE)
01411
01412
01413 #define CLASS_FROM_SOURCE_P(TYPE) TYPE_LANG_FLAG_3 (TYPE)
01414
01415
01416 #define CLASS_P(TYPE) TYPE_LANG_FLAG_4 (TYPE)
01417
01418
01419 #define CLASS_FROM_CURRENTLY_COMPILED_P(TYPE) \
01420 TYPE_LANG_FLAG_5 (TYPE)
01421
01422
01423
01424
01425 #define CLASS_BEING_LAIDOUT(TYPE) TYPE_LANG_FLAG_6 (TYPE)
01426
01427
01428 #define CLASS_HAS_FINIT_P(TYPE) TYPE_FINIT_STMT_LIST (TYPE)
01429
01430
01431 #define IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P(ID) TREE_LANG_FLAG_0 (ID)
01432
01433
01434 #define IS_A_CLASSFILE_NAME(ID) TREE_LANG_FLAG_1 (ID)
01435
01436
01437 #define QUALIFIED_P(ID) TREE_LANG_FLAG_2 (ID)
01438
01439
01440 #define IS_AN_IMPORT_ON_DEMAND_P(ID) TREE_LANG_FLAG_3 (ID)
01441
01442
01443 #define IS_A_COMMAND_LINE_FILENAME_P(ID) TREE_LANG_FLAG_4 (ID)
01444
01445
01446 #define HAS_BEEN_ALREADY_PARSED_P(ID) TREE_LANG_FLAG_5 (ID)
01447
01448
01449 #define COMPOUND_ASSIGN_P(EXPR) TREE_LANG_FLAG_1 (EXPR)
01450
01451
01452 #define SWITCH_HAS_DEFAULT(NODE) TREE_LANG_FLAG_3 (NODE)
01453
01454
01455
01456 #define PRIMARY_P(EXPR) TREE_LANG_FLAG_2 (EXPR)
01457
01458
01459
01460 #define MODIFY_EXPR_FROM_INITIALIZATION_P(EXPR) TREE_LANG_FLAG_2 (EXPR)
01461
01462
01463
01464 #define CLASS_METHOD_CHECKED_P(EXPR) TREE_LANG_FLAG_2 (EXPR)
01465
01466
01467
01468 #define HAS_FINALIZER_P(EXPR) TREE_LANG_FLAG_3 (EXPR)
01469
01470
01471 #define RESOLVE_EXPRESSION_NAME_P(WFL) TREE_LANG_FLAG_0 (WFL)
01472
01473
01474 #define FOR_LOOP_P(EXPR) TREE_LANG_FLAG_0 (EXPR)
01475
01476
01477 #define ANONYMOUS_CLASS_P(NODE) TREE_LANG_FLAG_0 (NODE)
01478
01479
01480 #define LOCAL_CLASS_P(NODE) TREE_LANG_FLAG_1 (NODE)
01481
01482
01483
01484 #define ARG_FINAL_P(NODE) TREE_LANG_FLAG_0 (NODE)
01485
01486
01487 #define RESOLVE_PACKAGE_NAME_P(WFL) TREE_LANG_FLAG_3 (WFL)
01488
01489
01490 #define RESOLVE_TYPE_NAME_P(WFL) TREE_LANG_FLAG_4 (WFL)
01491
01492
01493 #define IS_BREAK_STMT_P(WFL) TREE_LANG_FLAG_5 (WFL)
01494
01495
01496 #define IS_CRAFTED_STRING_BUFFER_P(EXPR) TREE_LANG_FLAG_5 (EXPR)
01497
01498
01499
01500 #define IS_INIT_CHECKED(EXPR) TREE_LANG_FLAG_5 (EXPR)
01501
01502
01503 #define CALL_USING_SUPER(EXPR) TREE_LANG_FLAG_4 (EXPR)
01504
01505
01506 #define CAN_COMPLETE_NORMALLY(NODE) TREE_LANG_FLAG_6(NODE)
01507
01508
01509
01510 #define OUTER_FIELD_ACCESS_IDENTIFIER_P(NODE) TREE_LANG_FLAG_6(NODE)
01511
01512
01513
01514 #define INNER_CLASS_DECL_P(NODE) (TYPE_NAME (TREE_TYPE (NODE)) == NODE \
01515 && DECL_CONTEXT (NODE))
01516
01517
01518
01519 #define TOPLEVEL_CLASS_DECL_P(NODE) (!INNER_CLASS_DECL_P (NODE) \
01520 || CLASS_STATIC (NODE))
01521
01522
01523
01524 #define PURE_INNER_CLASS_DECL_P(NODE) \
01525 (INNER_CLASS_DECL_P (NODE) && !CLASS_STATIC (NODE))
01526
01527
01528
01529 #define INNER_CLASS_TYPE_P(NODE) (TREE_CODE (TYPE_NAME (NODE)) == TYPE_DECL \
01530 && DECL_CONTEXT (TYPE_NAME (NODE)))
01531
01532 #define TOPLEVEL_CLASS_TYPE_P(NODE) (!INNER_CLASS_TYPE_P (NODE) \
01533 || CLASS_STATIC (TYPE_NAME (NODE)))
01534
01535
01536
01537 #define PURE_INNER_CLASS_TYPE_P(NODE) \
01538 (INNER_CLASS_TYPE_P (NODE) && !CLASS_STATIC (TYPE_NAME (NODE)))
01539
01540
01541 #define INNER_CLASS_P(NODE) (TREE_CODE (NODE) == TYPE_DECL ? \
01542 INNER_CLASS_DECL_P (NODE) : \
01543 (TREE_CODE (NODE) == RECORD_TYPE ? \
01544 INNER_CLASS_TYPE_P (NODE) : \
01545 (abort (), 0)))
01546
01547
01548
01549 #define DECL_INNER_CLASS_LIST(NODE) DECL_INITIAL (NODE)
01550
01551
01552
01553
01554 #define BUILD_FILENAME_IDENTIFIER_NODE(F, S) \
01555 if (!((F) = maybe_get_identifier ((S)))) \
01556 { \
01557 (F) = get_identifier ((S)); \
01558 tree_cons ((F), NULL_TREE, all_class_filename); \
01559 }
01560
01561
01562
01563
01564
01565
01566
01567
01568
01569 #define PUSH_FIELD(RTYPE, FIELD, NAME, FTYPE) \
01570 { tree tmp_field = build_decl (FIELD_DECL, get_identifier(NAME), FTYPE); \
01571 if (TYPE_FIELDS (RTYPE) == NULL_TREE) TYPE_FIELDS (RTYPE) = tmp_field; \
01572 else TREE_CHAIN(FIELD) = tmp_field; \
01573 DECL_CONTEXT (tmp_field) = RTYPE; \
01574 DECL_ARTIFICIAL (tmp_field) = 1; \
01575 FIELD = tmp_field; }
01576
01577 #define FINISH_RECORD(RTYPE) layout_type (RTYPE)
01578
01579
01580 #define START_RECORD_CONSTRUCTOR(CONS, CTYPE) { \
01581 CONS = build (CONSTRUCTOR, CTYPE, NULL_TREE, NULL_TREE);\
01582 TREE_CHAIN(CONS) = TYPE_FIELDS (CTYPE); }
01583
01584
01585
01586
01587
01588 #define PUSH_SUPER_VALUE(CONS, VALUE) {\
01589 tree field = TREE_CHAIN(CONS);\
01590 if (DECL_NAME (field) != NULL_TREE) abort();\
01591 CONSTRUCTOR_ELTS(CONS) = tree_cons (field, VALUE, CONSTRUCTOR_ELTS(CONS));\
01592 TREE_CHAIN(CONS) = TREE_CHAIN (field); }
01593
01594
01595
01596
01597 #define PUSH_FIELD_VALUE(CONS, NAME, VALUE) {\
01598 tree field = TREE_CHAIN(CONS);\
01599 if (strcmp (IDENTIFIER_POINTER (DECL_NAME (field)), NAME) != 0) abort();\
01600 CONSTRUCTOR_ELTS(CONS) = tree_cons (field, VALUE, CONSTRUCTOR_ELTS(CONS));\
01601 TREE_CHAIN(CONS) = TREE_CHAIN (field); }
01602
01603
01604 #define FINISH_RECORD_CONSTRUCTOR(CONS) \
01605 CONSTRUCTOR_ELTS(CONS) = nreverse (CONSTRUCTOR_ELTS(CONS))
01606
01607
01608 #define CALL_CONSTRUCTOR_P(NODE) \
01609 (TREE_CODE (NODE) == NEW_CLASS_EXPR || CALL_EXPLICIT_CONSTRUCTOR_P (NODE))
01610
01611 #define CALL_EXPLICIT_CONSTRUCTOR_P(NODE) \
01612 (CALL_THIS_CONSTRUCTOR_P (NODE) || CALL_SUPER_CONSTRUCTOR_P (NODE))
01613
01614 #define CALL_THIS_CONSTRUCTOR_P(NODE) \
01615 (TREE_CODE (NODE) == CALL_EXPR \
01616 && EXPR_WFL_NODE (TREE_OPERAND (NODE, 0)) == this_identifier_node)
01617
01618 #define CALL_SUPER_CONSTRUCTOR_P(NODE) \
01619 (TREE_CODE (NODE) == CALL_EXPR \
01620 && EXPR_WFL_NODE (TREE_OPERAND (NODE, 0)) == super_identifier_node)
01621
01622
01623 #define FINALLY_EXPR_LABEL(NODE) TREE_OPERAND ((NODE), 0)
01624 #define FINALLY_EXPR_BLOCK(NODE) TREE_OPERAND ((NODE), 1)
01625
01626 #define BLOCK_EXPR_DECLS(NODE) BLOCK_VARS(NODE)
01627 #define BLOCK_EXPR_BODY(NODE) BLOCK_SUBBLOCKS(NODE)
01628
01629 #define BLOCK_IS_IMPLICIT(NODE) TREE_LANG_FLAG_1 (NODE)
01630
01631 #define BUILD_MONITOR_ENTER(WHERE, ARG) \
01632 { \
01633 (WHERE) = build (CALL_EXPR, int_type_node, \
01634 build_address_of (soft_monitorenter_node), \
01635 build_tree_list (NULL_TREE, (ARG)), \
01636 NULL_TREE); \
01637 TREE_SIDE_EFFECTS (WHERE) = 1; \
01638 }
01639
01640 #define BUILD_MONITOR_EXIT(WHERE, ARG) \
01641 { \
01642 (WHERE) = build (CALL_EXPR, int_type_node, \
01643 build_address_of (soft_monitorexit_node), \
01644 build_tree_list (NULL_TREE, (ARG)), \
01645 NULL_TREE); \
01646 TREE_SIDE_EFFECTS (WHERE) = 1; \
01647 }
01648
01649
01650 #define IS_UNCHECKED_EXCEPTION_P(TYPE) \
01651 (inherits_from_p ((TYPE), runtime_exception_type_node) \
01652 || inherits_from_p ((TYPE), error_exception_type_node))
01653
01654
01655 #define STATIC_CLASS_INIT_OPT_P() \
01656 (flag_optimize_sci && (optimize >= 2) && ! flag_emit_class_files)
01657
01658 extern int java_error_count;
01659
01660
01661
01662 #define java_parse_abort_on_error() \
01663 { \
01664 if (java_error_count > save_error_count) \
01665 return; \
01666 }
01667
01668
01669
01670 enum
01671 {
01672 JV_STATE_NOTHING = 0,
01673
01674 JV_STATE_PRELOADING = 1,
01675 JV_STATE_LOADING = 3,
01676 JV_STATE_LOADED = 5,
01677
01678 JV_STATE_COMPILED = 6,
01679
01680 JV_STATE_PREPARED = 7,
01681 JV_STATE_LINKED = 9,
01682
01683 JV_STATE_IN_PROGRESS = 10,
01684 JV_STATE_DONE = 12,
01685
01686 JV_STATE_ERROR = 14
01687 };
01688
01689 #undef DEBUG_JAVA_BINDING_LEVELS