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

📄 java-tree.h

📁 gcc-2.95.3 Linux下最常用的C编译器
💻 H
📖 第 1 页 / 共 3 页
字号:
/* Definitions for parsing and type checking for the GNU compiler for   the Java(TM) language.   Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.This file is part of GNU CC.GNU CC is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2, or (at your option)any later version.GNU CC is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU CC; see the file COPYING.  If not, write tothe Free Software Foundation, 59 Temple Place - Suite 330,Boston, MA 02111-1307, USA.  Java and all Java-based marks are trademarks or registered trademarksof Sun Microsystems, Inc. in the United States and other countries.The Free Software Foundation is independent of Sun Microsystems, Inc.  *//* Hacked by Per Bothner <bothner@cygnus.com> February 1996. *//* Java language-specific tree codes.  */#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) SYM,enum java_tree_code {  __DUMMY = LAST_AND_UNUSED_TREE_CODE,#include "java-tree.def"  LAST_JAVA_TREE_CODE};#undef DEFTREECODEstruct JCF;/* Usage of TREE_LANG_FLAG_?:   0: IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P (in IDENTIFIER_NODE)      RESOLVE_EXPRESSION_NAME_P (in EXPR_WITH_FILE_LOCATION)      IS_FOR_LOOP_P (in LOOP_EXPR)   1: CLASS_HAS_SUPER_FLAG (in TREE_VEC).      IS_A_CLASSFILE_NAME (in IDENTIFIER_NODE)      COMPOUND_ASSIGN_P (in EXPR (binop_*))   2: RETURN_MAP_ADJUSTED (in TREE_VEC).      QUALIFIED_P (in IDENTIFIER_NODE)      PRIMARY_P (in EXPR_WITH_FILE_LOCATION)      MODIFY_EXPR_FROM_INITIALIZATION_P (in MODIFY_EXPR)   3: IS_AN_IMPORT_ON_DEMAND_P (in IDENTIFIER_NODE)      RESOLVE_PACKAGE_NAME_P (in EXPR_WITH_FILE_LOCATION)      SWITCH_HAS_DEFAULT (in SWITCH_EXPR)   4: IS_A_COMMAND_LINE_FILENAME_P (in IDENTIFIER_NODE)      RESOLVE_TYPE_NAME_P (in EXPR_WITH_FILE_LOCATION)      CALL_USING_SUPER (in CALL_EXPR)   5: HAS_BEEN_ALREADY_PARSED_P (in IDENTIFIER_NODE)      IS_BREAK_STMT_P (in EXPR_WITH_FILE_LOCATION)      IS_CRAFTED_STRING_BUFFER_P (in CALL_EXPR)   6: CAN_COMPLETE_NORMALLY (in statement nodes).   Usage of TYPE_LANG_FLAG_?:   1: TYPE_ARRAY_P (in RECORD_TYPE).   2: CLASS_LOADED_P (in RECORD_TYPE).   3: CLASS_FROM_SOURCE_P (in RECORD_TYPE).   4: CLASS_P (in RECORD_TYPE).   5: CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P (in RECORD_TYPE)   6: CLASS_HAS_FINIT_P (in RECORD_TYPE)   Usage of DECL_LANG_FLAG_?:   0: METHOD_DEPRECATED (in FUNCTION_DECL).      FIELD_DEPRECATED (in FIELD_DECL).      CLASS_DEPRECATED (in TYPE_DECL).   1: METHOD_PUBLIC (in FUNCTION_DECL).      FIELD_PUBLIC (in FIELD_DECL).      CLASS_PUBLIC (in TYPE_DECL).   2: METHOD_STATIC (in FUNCTION_DECL).      (But note that FIELD_STATIC uses TREE_STATIC!)      CLASS_COMPLETE_P (in TYPE_DECL)   3: METHOD_FINAL (in FUNCTION_DECL)      FIELD_FINAL (in FIELD_DECL)      CLASS_FINAL (in TYPE_DECL)   4: METHOD_SYNCHRONIZED (in FUNCTION_DECL).      LABEL_IN_SUBR (in LABEL_DECL)      CLASS_INTERFACE (in TYPE_DECL)      FIELD_VOLATILE (int FIELD_DECL)   5: METHOD_ABSTRACT (in FUNCTION_DECL).      LABEL_IS_SUBR_START (in LABEL_DECL)      CLASS_ABSTRACT (in TYPE_DECL)      FIELD_TRANSIENT (in FIELD_DECL)   6: METHOD_TRANSIENT (in FUNCTION_DECL)      LABEL_CHANGED (in LABEL_DECL)      CLASS_SUPER (in TYPE_DECL, ACC_SUPER flag)   7: DECL_CONSTRUCTOR_P (in FUNCTION_DECL).*//* True if the class whose TYPE_BINFO this is has a superclass.   (True of all classes except Object.) */#define CLASS_HAS_SUPER_FLAG(BINFO) TREE_LANG_FLAG_1(BINFO)#define CLASS_HAS_SUPER(TYPE) CLASS_HAS_SUPER_FLAG (TYPE_BINFO (TYPE))/* Return the supertype of class TYPE, or NULL_TREE is it has none. */#define CLASSTYPE_SUPER(TYPE) (CLASS_HAS_SUPER (TYPE) ? \  BINFO_TYPE (TREE_VEC_ELT (TYPE_BINFO_BASETYPES (TYPE), 0)) : NULL_TREE)/* True if the class we are compiling is a .java source file;   false if it is a .class bytecode file. */extern int compiling_from_source;/* The class defined by the actual (main) file we are compiling. */extern tree main_class;/* The class we are currently processing. */extern tree current_class;/* List of all class DECLs seen so far.  */extern tree all_class_list;/* Nonzero if we want to automatically do array bounds checking;   on by default.  Use -fno-bounds-check to disable.  */extern int flag_bounds_check;/* Nonzero if we should make is_compiled_class always return 1 for   appropriate classes that we're referencing.  */extern int flag_assume_compiled;extern int flag_emit_class_files;/* When non zero, we emit xref strings. Values of the flag for xref   backends are defined in xref.h.  */extern int flag_emit_xref;/* When doing xrefs, tell when not to fold.   */extern int do_not_fold;/* Turned to 1 if -Wall was encountered. See lang.c for their meanings.  */extern int flag_wall;extern int flag_redundant;extern int flag_not_overriding;extern int flag_static_local_jdk1_1;/* The Java .class file that provides main_class;  the main input file. */extern struct JCF *current_jcf;typedef struct CPool constant_pool;#define CONSTANT_ResolvedFlag 16/* The cpool->data[i] for a ResolvedString points to a STRING_CST. */#define CONSTANT_ResolvedString    (CONSTANT_String+CONSTANT_ResolvedFlag)/* The cpool->data[i] for a ResolvedClass points to a RECORD_TYPE. */#define CONSTANT_ResolvedClass     (CONSTANT_Class+CONSTANT_ResolvedFlag)#define CPOOL_UTF(CPOOL, INDEX) ((tree) (CPOOL)->data[INDEX])/* A NameAndType constant is represented as a TREE_LIST.   The type is the signature string (as an IDENTIFIER_NODE).  */#define NAME_AND_TYPE_NAME(CPOOL, IDX) \  CPOOL_UTF(CPOOL, CPOOL_USHORT1(CPOOL, IDX))#define NAME_AND_TYPE_SIGNATURE(CPOOL, IDX) \  CPOOL_UTF(CPOOL, CPOOL_USHORT2(CPOOL, IDX))/* A FieldRef, MethodRef or InterfaceMethodRef constant   is represented as a TREE_LIST. */#define COMPONENT_REF_CLASS_INDEX(CPOOL, IDX) CPOOL_USHORT1(CPOOL, IDX)#define COMPONENT_REF_NAME_AND_TYPE(CPOOL, IDX) CPOOL_USHORT2(CPOOL, IDX)#define COMPONENT_REF_NAME(CPOOL, IDX) \  NAME_AND_TYPE_NAME (CPOOL, COMPONENT_REF_NAME_AND_TYPE(CPOOL, IDX))#define COMPONENT_REF_SIGNATURE(CPOOL, IDX) \  NAME_AND_TYPE_SIGNATURE (CPOOL, COMPONENT_REF_NAME_AND_TYPE(CPOOL, IDX))/* "Promoted types" that are used for primitive types smaller   than int.  We could use int_type_node, but then we would lose   type information (such as needed for debugging). */extern tree promoted_byte_type_node;extern tree promoted_short_type_node;extern tree promoted_char_type_node;extern tree promoted_boolean_type_node;extern tree byte_type_node;extern tree short_type_node;extern tree int_type_node;extern tree long_type_node;extern tree unsigned_byte_type_node;extern tree unsigned_short_type_node;extern tree unsigned_int_type_node;extern tree unsigned_long_type_node;extern tree boolean_type_node;extern tree char_type_node;extern tree float_type_node;extern tree double_type_node;extern tree object_type_node;extern tree unqualified_object_id_node;extern tree object_ptr_type_node;extern tree string_type_node;extern tree string_ptr_type_node;extern tree throwable_type_node;extern tree runtime_exception_type_node;extern tree error_exception_type_node;extern tree *predef_filenames;extern int predef_filenames_size;extern tree byte_array_type_node;extern tree short_array_type_node;extern tree int_array_type_node;extern tree long_array_type_node;extern tree boolean_array_type_node;extern tree char_array_type_node;extern tree double_array_type_node;extern tree float_array_type_node;extern tree array_array_type_node;extern tree object_array_type_node;extern tree string_array_type_node;extern tree TYPE_identifier_node;      /* "TYPE" */extern tree init_identifier_node;      /* "<init>" */extern tree clinit_identifier_node;      /* "<clinit>" */extern tree finit_identifier_node;      /* "$finit$" */extern tree void_signature_node;       /* "()V" */extern tree length_identifier_node;  /* "length" */extern tree this_identifier_node;  /* "this" */extern tree super_identifier_node;  /* "super" */extern tree continue_identifier_node;  /* "continue" */extern tree one_elt_array_domain_type;extern tree void_type_node;extern tree ptr_type_node;/* The type of the return address of a subroutine. */extern tree return_address_type_node;/* Nodes for boolean constants TRUE and FALSE. */extern tree boolean_true_node, boolean_false_node;/* Integer constants not declared in tree.h. */extern tree long_zero_node;extern tree float_zero_node;extern tree double_zero_node;extern tree integer_negative_one_node;extern tree integer_two_node;extern tree integer_four_node;extern tree empty_stmt_node;/* The type for struct methodtable. */extern tree methodtable_type;extern tree methodtable_ptr_type;extern tree utf8const_type;extern tree utf8const_ptr_type;extern tree class_type_node;extern tree class_ptr_type;extern tree field_type_node;extern tree constants_type_node;extern tree dtable_type, dtable_ptr_type;extern tree field_ptr_type_node;extern tree field_info_union_node;extern tree method_type_node;extern tree method_ptr_type_node;#define nativecode_ptr_type_node ptr_type_nodeextern tree end_params_node;/* References to internal libjava functions we use. */extern tree alloc_object_node;extern tree soft_instanceof_node;extern tree soft_checkcast_node;extern tree soft_initclass_node;extern tree soft_newarray_node;extern tree soft_anewarray_node;extern tree soft_multianewarray_node;extern tree soft_badarrayindex_node;extern tree throw_node;extern tree soft_checkarraystore_node;extern tree soft_monitorenter_node;extern tree soft_monitorexit_node;extern tree soft_lookupinterfacemethod_node;extern tree soft_fmod_node;extern tree soft_exceptioninfo_call_node;extern tree access_flags_type_node;extern tree class_dtable_decl;/* They need to be reset before processing each class */extern struct CPool *outgoing_cpool; extern tree current_constant_pool_data_ref;extern tree wfl_operator;struct lang_identifier{  struct tree_identifier ignore;  tree global_value, local_value;  /* If non-NULL:  An ADDR_REF to a VAR_DECL that contains   * the Utf8Const representation of the identifier.  */  tree utf8_ref;};/* Macros for access to language-specific slots in an identifier.  *//* UNless specifide, each of these slots contains a DECL node or null.  *//* This represents the value which the identifier has in the   file-scope namespace.  */#define IDENTIFIER_GLOBAL_VALUE(NODE)   \  (((struct lang_identifier *)(NODE))->global_value)/* This represents the value which the identifier has in the current

⌨️ 快捷键说明

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