diff options
author | Hans Boehm <Hans_Boehm@hp.com> | 2001-12-14 19:01:02 +0000 |
---|---|---|
committer | Hans Boehm <hboehm@gcc.gnu.org> | 2001-12-14 19:01:02 +0000 |
commit | eec875422f79e536fcde443bfe8c0a01b260deb2 (patch) | |
tree | def86bbb77acbb0823471cf90f10ce49709dfe9d /gcc/java/java-tree.h | |
parent | abf80f8ff8818e104126e16df6bfcc97587a9cce (diff) | |
download | gcc-eec875422f79e536fcde443bfe8c0a01b260deb2.zip gcc-eec875422f79e536fcde443bfe8c0a01b260deb2.tar.gz gcc-eec875422f79e536fcde443bfe8c0a01b260deb2.tar.bz2 |
class.c (get_dispatch_table): Fix java vtable layout for TARGET_VTABLE_USES_DESCRIPTORS.
* class.c (get_dispatch_table): Fix java vtable layout
for TARGET_VTABLE_USES_DESCRIPTORS.
* decl.c (java_init_decl_processing): Initialize
alloc_no_finalizer_node, finalize_identifier_node.
* expr.c (class_has_finalize_method): New function.
(expand_java_NEW): Generate calls for finalizer-free allocation.
(build_invokevirtual): Fix java vtable layout for
TARGET_VTABLE_USES_DESCRIPTORS.
* java-tree.h (enum java_tree_index): New entries:
JTI_ALLOC_NO_FINALIZER_NODE, JTI_FINALIZE_IDENTIFIER_NODE.
(alloc_no_finalizer_node, finalize_deintifier_node): New macros.
(class_has_finalize_method): declare.
(HAS_FINALIZER_P): New macro.
* parse.y (patch_invoke): Generate calls for finalizer-free
allocation.
From-SVN: r48004
Diffstat (limited to 'gcc/java/java-tree.h')
-rw-r--r-- | gcc/java/java-tree.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/java/java-tree.h b/gcc/java/java-tree.h index 63c08d7..9d11bf6 100644 --- a/gcc/java/java-tree.h +++ b/gcc/java/java-tree.h @@ -60,6 +60,7 @@ struct JCF; RESOLVE_PACKAGE_NAME_P (in EXPR_WITH_FILE_LOCATION) SWITCH_HAS_DEFAULT (in SWITCH_EXPR) ZIP_FILE_P (in TREE_LIST in current_file_list) + HAS_FINALIZER (in RECORD_TYPE) 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) @@ -290,6 +291,7 @@ enum java_tree_index JTI_FINIT_LEG_IDENTIFIER_NODE, JTI_VOID_SIGNATURE_NODE, JTI_LENGTH_IDENTIFIER_NODE, + JTI_FINALIZE_IDENTIFIER_NODE, JTI_THIS_IDENTIFIER_NODE, JTI_SUPER_IDENTIFIER_NODE, JTI_CONTINUE_IDENTIFIER_NODE, @@ -334,6 +336,7 @@ enum java_tree_index JTI_THROW_NODE, JTI_ALLOC_OBJECT_NODE, + JTI_ALLOC_NO_FINALIZER_NODE, JTI_SOFT_INSTANCEOF_NODE, JTI_SOFT_CHECKCAST_NODE, JTI_SOFT_INITCLASS_NODE, @@ -485,6 +488,8 @@ extern tree java_global_trees[JTI_MAX]; java_global_trees[JTI_VOID_SIGNATURE_NODE] /* "()V" */ #define length_identifier_node \ java_global_trees[JTI_LENGTH_IDENTIFIER_NODE] /* "length" */ +#define finalize_identifier_node \ + java_global_trees[JTI_FINALIZE_IDENTIFIER_NODE] /* "finalize" */ #define this_identifier_node \ java_global_trees[JTI_THIS_IDENTIFIER_NODE] /* "this" */ #define super_identifier_node \ @@ -569,6 +574,8 @@ extern tree java_global_trees[JTI_MAX]; java_global_trees[JTI_THROW_NODE] #define alloc_object_node \ java_global_trees[JTI_ALLOC_OBJECT_NODE] +#define alloc_no_finalizer_node \ + java_global_trees[JTI_ALLOC_NO_FINALIZER_NODE] #define soft_instanceof_node \ java_global_trees[JTI_SOFT_INSTANCEOF_NODE] #define soft_checkcast_node \ @@ -1163,6 +1170,7 @@ extern void java_debug_context PARAMS ((void)); extern void safe_layout_class PARAMS ((tree)); extern tree get_boehm_type_descriptor PARAMS ((tree)); +extern bool class_has_finalize_method PARAMS ((tree)); extern unsigned long java_hash_hash_tree_node PARAMS ((hash_table_key)); extern bool java_hash_compare_tree_node PARAMS ((hash_table_key, hash_table_key)); @@ -1421,6 +1429,10 @@ extern tree *type_map; already checked (for redifitions, etc, see java_check_regular_methods.) */ #define CLASS_METHOD_CHECKED_P(EXPR) TREE_LANG_FLAG_2 (EXPR) +/* True if TYPE (a TREE_TYPE denoting a class type) was found to + feature a finalizer method. */ +#define HAS_FINALIZER_P(EXPR) TREE_LANG_FLAG_3 (EXPR) + /* True if EXPR (a WFL in that case) resolves into an expression name */ #define RESOLVE_EXPRESSION_NAME_P(WFL) TREE_LANG_FLAG_0 (WFL) |