diff options
Diffstat (limited to 'gcc/java')
-rw-r--r-- | gcc/java/ChangeLog | 15 | ||||
-rw-r--r-- | gcc/java/parse.h | 1 | ||||
-rw-r--r-- | gcc/java/parse.y | 24 |
3 files changed, 20 insertions, 20 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 50efdcd..298cc4c 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,18 @@ +2001-03-17 Per Bothner <per@bothner.com> + + * parse.h (JDEP_SOLV): Removed. + * parse.y (incomplete_class_list): Removed. + (register_incomplete_type): Use JDEP_TO_RESOLVE instead of JDEP_SOLV. + + * parse.y (obtain_incomplete_type): Removed. It doesn't work if + resolve_class changes the name of an array type that is on the list + and then someone else looks for the modified name. Also, seems liable + to break when compiling multiple source files at once. So the simplest + is to just remove incomplete_class_list - it is only a minor + space win and it is not even clear it saves time. + + * parse.y (resolve_class): Remove unneeded promote_type. + 2001-03-15 Per Bothner <per@bothner.com> * java-tree.h (BLOCK_IS_IMPLICIT): New flag. diff --git a/gcc/java/parse.h b/gcc/java/parse.h index 8a7bae5..98845d7 100644 --- a/gcc/java/parse.h +++ b/gcc/java/parse.h @@ -494,7 +494,6 @@ typedef struct _jdep { #define JDEP_DECL(J) ((J)->decl) #define JDEP_DECL_WFL(J) ((J)->decl) #define JDEP_KIND(J) ((J)->kind) -#define JDEP_SOLV(J) ((J)->solv) #define JDEP_WFL(J) ((J)->wfl) #define JDEP_MISC(J) ((J)->misc) #define JDEP_ENCLOSING(J) ((J)->enclosing) diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 2100c66..f36c4de 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -409,14 +409,11 @@ static tree current_this; the list of the catch clauses of the currently analysed try block. */ static tree currently_caught_type_list; -static tree src_parse_roots[2] = { NULL_TREE, NULL_TREE }; +static tree src_parse_roots[1] = { NULL_TREE }; /* All classes seen from source code */ #define gclass_list src_parse_roots[0] -/* List of non-complete classes */ -#define incomplete_class_list src_parse_roots[1] - /* Check modifiers. If one doesn't fit, retrieve it in its declaration line and point it out. */ /* Should point out the one that don't fit. ASCII/unicode, going @@ -4979,7 +4976,7 @@ static tree obtain_incomplete_type (type_name) tree type_name; { - tree ptr, name; + tree ptr = NULL_TREE, name; if (TREE_CODE (type_name) == EXPR_WITH_FILE_LOCATION) name = EXPR_WFL_NODE (type_name); @@ -4988,17 +4985,8 @@ obtain_incomplete_type (type_name) else abort (); - for (ptr = incomplete_class_list; ptr; ptr = TREE_CHAIN (ptr)) - if (TYPE_NAME (ptr) == name) - break; - - if (!ptr) - { - BUILD_PTR_FROM_NAME (ptr, name); - layout_type (ptr); - TREE_CHAIN (ptr) = incomplete_class_list; - incomplete_class_list = ptr; - } + BUILD_PTR_FROM_NAME (ptr, name); + layout_type (ptr); return ptr; } @@ -5020,7 +5008,7 @@ register_incomplete_type (kind, wfl, decl, ptr) JDEP_KIND (new) = kind; JDEP_DECL (new) = decl; - JDEP_SOLV (new) = ptr; + JDEP_TO_RESOLVE (new) = ptr; JDEP_WFL (new) = wfl; JDEP_CHAIN (new) = NULL; JDEP_MISC (new) = NULL_TREE; @@ -5476,8 +5464,6 @@ resolve_class (enclosing, class_type, decl, cl) { while (base != name) { - if (TREE_CODE (resolved_type) == RECORD_TYPE) - resolved_type = promote_type (resolved_type); resolved_type = build_java_array_type (resolved_type, -1); CLASS_LOADED_P (resolved_type) = 1; name--; |