⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java-tree.h

📁 gcc-2.95.3 Linux下最常用的C编译器
💻 H
📖 第 1 页 / 共 3 页
字号:
   scope.  */#define IDENTIFIER_LOCAL_VALUE(NODE)    \  (((struct lang_identifier *)(NODE))->local_value)/* Given an identifier NODE, get the corresponding (non-handle) class.   For get_identifier ("java.lang.Number"), the result is   the struct whose DECL_ASSEMBLER_NAME is "Classjava_lang_Number". */#define IDENTIFIER_CLASS_VALUE(NODE) IDENTIFIER_GLOBAL_VALUE(NODE)/* Given an identifier NODE, get the corresponding handle class.   For get_identifier ("java.lang.Number"), the result is   the struct whose DECL_ASSEMBLER_NAME is "Hjava_lang_Number". */#define IDENTIFIER_HANDLECLASS_VALUE(NODE) ???/* Given a signature of a reference (or array) type, or a method, return the   corresponding type (if one has been allocated).   Do not use for primitive types, since they may be ambiguous.   (E.g. is "I" a signature or a class name?) */#define IDENTIFIER_SIGNATURE_TYPE(NODE) IDENTIFIER_GLOBAL_VALUE(NODE)/* If non-NULL:  An ADDR_REF to a VAR_DECL that contains   the Utf8Const representation of the identifier.  */#define IDENTIFIER_UTF8_REF(NODE) \  (((struct lang_identifier *)(NODE))->utf8_ref)#define IDENTIFIER_UTF8_DECL(NODE) \  TREE_OPERAND((((struct lang_identifier *)(NODE))->utf8_ref), 0)/* For a FUNCTION_DECL, if we are compiling a .class file, then this is   the position in the .class file of the method code.   Specifically, this is the code itself, not the code attribute. */#define DECL_CODE_OFFSET(DECL) (DECL_LANG_SPECIFIC(DECL)->code_offset)/* Similarly, the length of the bytecode. */#define DECL_CODE_LENGTH(DECL) (DECL_LANG_SPECIFIC(DECL)->code_length)/* Similarly, the position of the LineNumberTable attribute. */#define DECL_LINENUMBERS_OFFSET(DECL) \  (DECL_LANG_SPECIFIC(DECL)->linenumbers_offset)/* Similarly, the position of the LocalVariableTable attribute   (following the standard attribute header). */#define DECL_LOCALVARIABLES_OFFSET(DECL) \  (DECL_LANG_SPECIFIC(DECL)->localvariables_offset)#define DECL_MAX_LOCALS(DECL) (DECL_LANG_SPECIFIC(DECL)->max_locals)#define DECL_MAX_STACK(DECL) (DECL_LANG_SPECIFIC(DECL)->max_stack)/* Number of local variable slots needed for the arguments of this function. */#define DECL_ARG_SLOT_COUNT(DECL) (DECL_LANG_SPECIFIC(DECL)->arg_slot_count)/* List of checked thrown exceptions, as specified with the `throws'   keyword */#define DECL_FUNCTION_THROWS(DECL) (DECL_LANG_SPECIFIC(DECL)->throws_list)/* List of other constructors of the same class that this constructor   calls */#define DECL_CONSTRUCTOR_CALLS(DECL) \  (DECL_LANG_SPECIFIC(DECL)->called_constructor)/* Pointer to the function's current's COMPOUND_EXPR tree (while   completing its body) or the function's block */#define DECL_FUNCTION_BODY(DECL) (DECL_LANG_SPECIFIC(DECL)->function_decl_body)/* How specific the function is (for method selection - Java source   code front-end */#define DECL_SPECIFIC_COUNT(DECL) DECL_ARG_SLOT_COUNT(DECL)/* In a LABEL_DECL, a TREE_VEC that saves the type_map at that point. */#define LABEL_TYPE_STATE(NODE) (DECL_INITIAL (NODE))/* In the label of a subroutine, a dummy label that records the   state following a merge of all the ret instructions in this subroutine. */#define LABEL_RETURN_LABEL(DECL) DECL_ARGUMENTS(DECL)/* In the label of a sub-routine, records the type state at return. * A local may be TYPE_UNUSED, which means that the local is not * used (stored to or loaded from) in this subroutine - at least for * code that we have verified so far. */#define LABEL_RETURN_TYPE_STATE(NODE) LABEL_TYPE_STATE (LABEL_RETURN_LABEL (NODE))/* In a TREE_VEC for a LABEL_RETURN_TYPE_STATE, notes that   TREE_VEC_LENGTH has been adjust to the correct stack size. */#define RETURN_MAP_ADJUSTED(NODE) TREE_LANG_FLAG_2(NODE)/* In the label of a sub-routine, a chain of the return location labels. */#define LABEL_RETURN_LABELS(node) DECL_RESULT (LABEL_RETURN_LABEL(node))/* In a LABEL_DECL, the next pending label.   See pending_blocks in expr.c. */#define LABEL_PENDING_CHAIN(NODE) DECL_RESULT(NODE)/* In a LABEL_DECL, the corresponding bytecode program counter. */#define LABEL_PC(NODE) ((NODE)->decl.saved_insns.i)/* Used during verification to mark the label has "changed". (See JVM Spec). */#define LABEL_CHANGED(NODE) DECL_LANG_FLAG_6(NODE)/* In a LABEL_DECL, true if we have verified instructions starting here. */#define LABEL_VERIFIED(NODE) (instruction_bits[LABEL_PC(NODE)]&BCODE_VERIFIED)/* True if this code is within a subroutine (target of a jsr). */#define LABEL_IN_SUBR(NODE) DECL_LANG_FLAG_4(NODE)/* True if this code is the start of a subroutine (target of a jsr). */#define LABEL_IS_SUBR_START(NODE) DECL_LANG_FLAG_5(NODE)/* In a LABEL_DECL, if LABEL_IN_SUBR(NODE), points to start of subroutine. */#define LABEL_SUBR_START(NODE) DECL_ABSTRACT_ORIGIN(NODE)/* In a LABEL_DECL that has LABEL_IS_SUBR_START, this points to the start   of surrounding subroutine in the case of a nested subroutine,   and NULL_TREE otherwise. */#define LABEL_SUBR_CONTEXT(NODE) DECL_CONTEXT (LABEL_RETURN_LABEL (NODE))/* The slot number for this local variable. */#define DECL_LOCAL_SLOT_NUMBER(NODE) \  (((struct lang_decl_var*)DECL_LANG_SPECIFIC(NODE))->slot_number)/* The start (bytecode) pc for the valid range of this local variable. */#define DECL_LOCAL_START_PC(NODE) \  (((struct lang_decl_var*)DECL_LANG_SPECIFIC(NODE))->start_pc)/* The end (bytecode) pc for the valid range of this local variable. */#define DECL_LOCAL_END_PC(NODE) \  (((struct lang_decl_var*)DECL_LANG_SPECIFIC(NODE))->end_pc)/* For a VAR_DECLor PARM_DECL, used to chain decls with the same   slot_number in decl_map. */#define DECL_LOCAL_SLOT_CHAIN(NODE) \  (((struct lang_decl_var*)DECL_LANG_SPECIFIC(NODE))->slot_chain)/* DECL_LANG_SPECIFIC for FUNCTION_DECLs. */struct lang_decl{  /*  tree chain; not yet used. */  long code_offset;  int code_length;  long linenumbers_offset;  long localvariables_offset;  int arg_slots;  int max_locals, max_stack, arg_slot_count;  tree throws_list;		/* Exception specified by `throws' */  tree function_decl_body;	/* Hold all function's statements */  tree called_constructor;	/* When decl is a constructor, the				   list of other constructor it calls. */};/* DECL_LANG_SPECIFIC for VAR_DECL and PARM_DECL. */struct lang_decl_var{  int slot_number;  int start_pc;  int end_pc;  tree slot_chain;};struct lang_type{  tree signature;  struct JCF *jcf;};#ifdef JAVA_USE_HANDLES/* TYPE_BINFO_HANDLE points from a handle-class to its corresponding   non-handle-class, and vice verse. */#define BINFO_HANDLE(NODE) TREE_VEC_ELT ((NODE), 6)/* Given a RECORD_TYPE for a handle type, return the corresponding class. */#define HANDLE_TO_CLASS_TYPE(HTYPE) BINFO_HANDLE (TYPE_BINFO (HTYPE))/* Given a RECORD_TYPE for a class, return the corresponding handle type. */#define CLASS_TO_HANDLE_TYPE(TYPE) BINFO_HANDLE (TYPE_BINFO (TYPE))#else#define HANDLE_TO_CLASS_TYPE(HTYPE) (HTYPE)#define CLASS_TO_HANDLE_TYPE(TYPE) (TYPE)#endif#define JCF_u4 unsigned long#define JCF_u2 unsigned shortextern tree lookup_class PROTO ((tree));extern tree lookup_java_constructor PROTO ((tree, tree));extern tree lookup_java_method PROTO ((tree, tree, tree));extern tree lookup_argument_method PROTO ((tree, tree, tree));extern tree promote_type PROTO ((tree));extern tree get_constant PROTO ((struct JCF*, int));extern tree get_name_constant PROTO ((struct JCF*, int));extern tree get_class_constant PROTO ((struct JCF*, int));extern tree parse_signature PROTO ((struct JCF *jcf, int sig_index));extern void jcf_parse PROTO ((struct JCF*));extern tree add_field PROTO ((tree, tree, tree, int));extern tree add_method PROTO ((tree, int, tree, tree));extern tree add_method_1 PROTO ((tree, int, tree, tree));extern tree make_class PROTO ((void));extern tree push_class PROTO ((tree, tree));extern tree unmangle_classname PROTO ((const char *name, int name_length));extern tree parse_signature_string PROTO ((const unsigned char *, int));extern tree get_type_from_signature PROTO ((tree));extern void layout_class PROTO ((tree));extern tree layout_class_method PROTO ((tree, tree, tree, tree));extern void layout_class_methods PROTO ((tree));extern tree build_class_ref PROTO ((tree));extern tree build_dtable_decl PROTO ((tree));extern tree build_internal_class_name PROTO ((tree));extern tree build_constants_constructor PROTO ((void));extern tree build_ref_from_constant_pool PROTO ((int));extern tree build_utf8_ref PROTO ((tree));extern tree ident_subst PROTO ((const char*, int,				const char*, int, int, const char*));extern tree identifier_subst PROTO ((const tree,				     const char *, int, int, const char *));extern tree build_java_signature PROTO ((tree));extern tree build_java_argument_signature PROTO ((tree));extern void set_java_signature PROTO ((tree, tree));extern tree build_static_field_ref PROTO ((tree));extern tree build_address_of PROTO ((tree));extern tree find_local_variable PROTO ((int index, tree type, int pc));extern tree find_stack_slot PROTO ((int index, tree type));extern tree build_prim_array_type PROTO ((tree, HOST_WIDE_INT));extern tree build_java_array_type PROTO ((tree, HOST_WIDE_INT));extern int is_compiled_class PROTO ((tree));extern tree mangled_classname PROTO ((const char*, tree));extern tree lookup_label PROTO ((int));extern tree pop_type_0 PROTO ((tree));extern tree pop_type PROTO ((tree));extern void pop_argument_types PROTO ((tree));extern tree decode_newarray_type PROTO ((int));extern tree lookup_field PROTO ((tree*, tree));extern int is_array_type_p PROTO ((tree));extern HOST_WIDE_INT java_array_type_length PROTO ((tree));extern int read_class PROTO ((tree));extern void load_class PROTO ((tree, int));extern tree lookup_name PROTO ((tree));extern tree build_known_method_ref PROTO ((tree, tree, tree, tree, tree));extern tree build_class_init PROTO ((tree, tree));extern tree build_invokevirtual PROTO ((tree, tree));extern tree build_invokeinterface PROTO ((tree, tree, tree));extern tree invoke_build_dtable PROTO ((int, tree));extern tree build_field_ref PROTO ((tree, tree, tree));extern void pushdecl_force_head PROTO ((tree));extern tree build_java_binop PROTO ((enum tree_code, tree, tree, tree));extern tree binary_numeric_promotion PROTO ((tree, tree, tree *, tree *));extern tree build_java_arrayaccess PROTO ((tree, tree, tree));extern tree build_newarray PROTO ((int, tree));extern tree build_anewarray PROTO ((tree, tree));extern tree build_new_array PROTO ((tree, tree));extern tree build_java_array_length_access PROTO ((tree));extern tree build_java_arraynull_check PROTO ((tree, tree, tree));extern tree create_label_decl PROTO ((tree));extern void push_labeled_block PROTO ((tree));extern tree prepare_eh_table_type PROTO ((tree));extern void java_set_exception_lang_code PROTO ((void));extern tree generate_name PROTO ((void));extern void pop_labeled_block PROTO ((void));extern char *lang_printable_name PROTO ((tree, int));extern tree maybe_add_interface PROTO ((tree, tree));extern void set_super_info PROTO ((int, tree, tree, int));extern int get_access_flags_from_decl PROTO ((tree));extern int interface_of_p PROTO ((tree, tree));extern int inherits_from_p PROTO ((tree, tree));extern void complete_start_java_method PROTO ((tree));extern tree build_result_decl PROTO ((tree));extern void emit_handlers PROTO ((void));extern void init_outgoing_cpool PROTO ((void));extern void make_class_data PROTO ((tree));extern void register_class PROTO ((void));extern int alloc_name_constant PROTO ((int, tree));extern void emit_register_classes PROTO ((void));extern void lang_init_source PROTO ((int));extern void write_classfile PROTO ((tree));extern char *print_int_node PROTO ((tree));extern void parse_error_context PVPROTO ((tree cl, const char *, ...))  ATTRIBUTE_PRINTF_2;extern tree build_primtype_type_ref PROTO ((char *));extern tree java_get_real_method_name PROTO ((tree));extern void finish_class PROTO ((tree));extern void java_layout_seen_class_methods PROTO ((void));extern void check_for_initialization PROTO ((tree));extern tree pushdecl_top_level PROTO ((tree));extern int alloc_class_constant PROTO ((tree));extern int unicode_mangling_length PROTO ((const char *, int));extern void init_expr_processing PROTO ((void));extern void push_super_field PROTO ((tree, tree));extern void init_class_processing PROTO ((void));extern int can_widen_reference_to PROTO ((tree, tree));extern int class_depth PROTO ((tree));extern int verify_jvm_instructions PROTO ((struct JCF *, unsigned char *, long));extern void maybe_pushlevels PROTO ((int));extern void maybe_poplevels PROTO ((int));extern int process_jvm_instruction PROTO ((int, unsigned char *, long));extern void set_local_type PROTO ((int, tree));extern int merge_type_state PROTO ((tree));extern void push_type PROTO ((tree));extern void load_type_state PROTO ((tree));extern void add_interface PROTO ((tree, tree));extern void append_gpp_mangled_name PROTO ((struct obstack *, const char *, int));extern void append_gpp_mangled_classtype PROTO ((struct obstack *, const char *));extern void emit_unicode_mangled_name PROTO ((struct obstack *, const char *, int));extern tree force_evaluation_order PROTO ((tree));extern int verify_constant_pool PROTO ((struct JCF *));extern void start_java_method PROTO ((tree));extern void end_java_method PROTO ((void));extern void give_name_to_locals PROTO ((struct JCF *));extern void expand_byte_code PROTO ((struct JCF *, tree));extern int open_in_zip PROTO ((struct JCF *, const char *, const char *, int));extern void set_constant_value PROTO ((tree, tree));#ifdef jwordextern int find_constant1 PROTO ((struct CPool *, int, jword));extern int find_constant2 PROTO ((struct CPool *, int, jword, jword));#endifextern int find_utf8_constant PROTO ((struct CPool *, tree));extern int find_string_constant PROTO ((struct CPool *, tree));extern int find_class_constant PROTO ((struct CPool *, tree));extern int find_fieldref_index PROTO ((struct CPool *, tree));extern int find_methodref_index PROTO ((struct CPool *, tree));extern void write_constant_pool PROTO ((struct CPool *, unsigned char *, int));extern int count_constant_pool_bytes PROTO ((struct CPool *));extern int encode_newarray_type PROTO ((tree));#ifdef uint64extern void format_int PROTO ((char *, jlong, int));extern void format_uint PROTO ((char *, uint64, int));#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -