diff options
author | Andrew Haley <aph@redhat.com> | 2003-10-24 09:29:43 +0000 |
---|---|---|
committer | Andrew Haley <aph@gcc.gnu.org> | 2003-10-24 09:29:43 +0000 |
commit | 904715853c40f9a27b492794a6db817ea89a553a (patch) | |
tree | 8c726fb42c811bb6652ba1a759bae78c2c8d9378 /gcc/java/java-tree.h | |
parent | c769a35d59f282465c1a344617bf04d595e8c477 (diff) | |
download | gcc-904715853c40f9a27b492794a6db817ea89a553a.zip gcc-904715853c40f9a27b492794a6db817ea89a553a.tar.gz gcc-904715853c40f9a27b492794a6db817ea89a553a.tar.bz2 |
lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): New.
2003-10-22 Andrew Haley <aph@redhat.com>
* lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): New.
(java_get_callee_fndecl): New.
* jcf-parse.c (java_parse_file): Call emit_catch_table().
* java-tree.h (ctable_decl): New.
(catch_classes): New.
(java_tree_index): Add JTI_CTABLE_DECL, JTI_CATCH_CLASSES.
* decl.c (java_init_decl_processing): Add catch_class_type.
Add ctable_decl.
Add catch_classes field.
* class.c (build_indirect_class_ref): Break out from
build_class_ref.
(make_field_value): Check flag_indirect_dispatch.
(make_class_data): Ditto.
Tidy uses of PUSH_FIELD_VALUE.
Add field catch_classes.
(make_catch_class_record): New.
* java-tree.h (PUSH_FIELD_VALUE): Tidy.
2003-10-22 Andrew Haley <aph@redhat.com>
* java/lang/natClass.cc (initializeClass): Call
_Jv_linkExceptionClassTable.
(_Jv_LinkSymbolTable): Call )_Jv_ThrowNoSuchMethodError. Call
_Jv_Defer_Resolution on a method whose ncode is NULL.
(_Jv_linkExceptionClassTable): New function.
(_Jv_LayoutVTableMethods): If superclass looks like a constant pool
entry, look it up.
* java/lang/Class.h (struct _Jv_CatchClass): New.
(_Jv_linkExceptionClassTable): New friend.
(_Jv_Defer_Resolution): New friend.
(class Class.catch_classes): New field.
* include/java-interp.h (Jv_Defer_Resolution): New method.
(_Jv_PrepareClass): Make a friend of _Jv_MethodBase.
(_Jv_MethodBase.deferred): New field.
(_Jv_Defer_Resolution): New function.
* resolve.cc (_Jv_PrepareClass): Resolve deferred handlers.
* exception.cc (get_ttype_entry): Change return type to void**.
(PERSONALITY_FUNCTION): Remove all code related to using a
Utf8Const* for a match type. Change match type to be a pointer to
a pointer, rather than a pointer to a Class.
* defineclass.cc (handleCodeAttribute): Initialize
method->deferred.
(handleMethodsEnd): Likewise.
From-SVN: r72886
Diffstat (limited to 'gcc/java/java-tree.h')
-rw-r--r-- | gcc/java/java-tree.h | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/gcc/java/java-tree.h b/gcc/java/java-tree.h index 42f99b5..7b5a397 100644 --- a/gcc/java/java-tree.h +++ b/gcc/java/java-tree.h @@ -167,6 +167,9 @@ extern int compiling_from_source; otable. */ #define atable_syms_decl java_global_trees [JTI_ATABLE_SYMS_DECL] +#define ctable_decl java_global_trees [JTI_CTABLE_DECL] +#define catch_classes java_global_trees [JTI_CATCH_CLASSES] + extern int flag_emit_class_files; extern int flag_filelist_file; @@ -424,6 +427,9 @@ enum java_tree_index JTI_ATABLE_DECL, JTI_ATABLE_SYMS_DECL, + JTI_CTABLE_DECL, + JTI_CATCH_CLASSES, + JTI_PREDEF_FILENAMES, JTI_MAX @@ -629,6 +635,8 @@ extern GTY(()) tree java_global_trees[JTI_MAX]; java_global_trees[JTI_SYMBOLS_ARRAY_TYPE] #define symbols_array_ptr_type \ java_global_trees[JTI_SYMBOLS_ARRAY_PTR_TYPE] +#define class_refs_decl \ + Jjava_global_trees[TI_CLASS_REFS_DECL] #define end_params_node \ java_global_trees[JTI_END_PARAMS_NODE] @@ -1320,6 +1328,9 @@ extern void java_expand_body (tree); extern int get_symbol_table_index (tree, tree *); +extern tree make_catch_class_record (tree, tree); +extern void emit_catch_table (void); + #define DECL_FINAL(DECL) DECL_LANG_FLAG_3 (DECL) /* Access flags etc for a method (a FUNCTION_DECL): */ @@ -1678,11 +1689,16 @@ extern tree *type_map; /* Append a field initializer to CONS for a field with the given VALUE. NAME is a char* string used for error checking; the initializer must be specified in order. */ - #define PUSH_FIELD_VALUE(CONS, NAME, VALUE) {\ - tree field = TREE_CHAIN(CONS);\ - if (strcmp (IDENTIFIER_POINTER (DECL_NAME (field)), NAME) != 0) abort();\ - CONSTRUCTOR_ELTS(CONS) = tree_cons (field, VALUE, CONSTRUCTOR_ELTS(CONS));\ - TREE_CHAIN(CONS) = TREE_CHAIN (field); } +#define PUSH_FIELD_VALUE(CONS, NAME, VALUE) \ +do \ +{ \ + tree field = TREE_CHAIN(CONS); \ + if (strcmp (IDENTIFIER_POINTER (DECL_NAME (field)), NAME) != 0) \ + abort(); \ + CONSTRUCTOR_ELTS(CONS) = tree_cons (field, VALUE, CONSTRUCTOR_ELTS(CONS)); \ + TREE_CHAIN(CONS) = TREE_CHAIN (field); \ +} \ +while (0) /* Finish creating a record CONSTRUCTOR CONS. */ #define FINISH_RECORD_CONSTRUCTOR(CONS) \ |