decl.c (classdollar_identifier_node): Initialize.
authorAlexandre Petit-Bianco <apbianco@cygnus.com>
Wed, 14 Feb 2001 00:03:11 +0000 (00:03 +0000)
committerAlexandre Petit-Bianco <apbianco@gcc.gnu.org>
Wed, 14 Feb 2001 00:03:11 +0000 (16:03 -0800)
2001-02-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>

* decl.c (classdollar_identifier_node): Initialize.
* java-tree.h (enum java_tree_index): New entry
`JTI_CLASSDOLLAR_IDENTIFIER_NODE.'
(classdollar_identifier_node): New macro.
(ID_CLASSDOLLAR_P): Likewise.
* parse.y (build_dot_class_method): Use `classdollar_identifier_node.'
(build_dot_class_method_invocation): Likewise.
(find_applicable_accessible_methods_list): `class$' can't be
inherited.

(http://gcc.gnu.org/ml/gcc-patches/2001-02/msg00760.html)

From-SVN: r39650

gcc/java/ChangeLog
gcc/java/decl.c
gcc/java/java-tree.h
gcc/java/parse.y

index 95126e454da0169029583499d89d70770aadc24d..4b343b1c30a64636459ce4959cbcfefdc4d14344 100644 (file)
@@ -1,3 +1,15 @@
+2001-02-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
+
+       * decl.c (classdollar_identifier_node): Initialize.
+       * java-tree.h (enum java_tree_index): New entry 
+       `JTI_CLASSDOLLAR_IDENTIFIER_NODE.'
+       (classdollar_identifier_node): New macro.
+       (ID_CLASSDOLLAR_P): Likewise.
+       * parse.y (build_dot_class_method): Use `classdollar_identifier_node.'
+       (build_dot_class_method_invocation): Likewise.
+       (find_applicable_accessible_methods_list): `class$' can't be
+       inherited.
+
 2001-02-09  Raja R Harinath  <harinath@cs.umn.edu>
 
        * Make-lang.in (java/mangle_name.o): Add 'make' prereqs.
index f59605906a37ccb6e24ed562fb2705d0946f15c2..2f7f31583e0d344fabacfd8fc68273437d83d92f 100644 (file)
@@ -602,6 +602,7 @@ init_decl_processing ()
   super_identifier_node = get_identifier ("super");
   continue_identifier_node = get_identifier ("continue");
   access0_identifier_node = get_identifier ("access$0");
+  classdollar_identifier_node = get_identifier ("class$");
 
   /* for lack of a better place to put this stub call */
   init_expr_processing();
index e1a0347d0e89bd3fc832b0340f99a4c771360f38..30b9d87492802f78106d31ce035e577d84c5d979 100644 (file)
@@ -270,6 +270,7 @@ enum java_tree_index
   JTI_SUPER_IDENTIFIER_NODE,  
   JTI_CONTINUE_IDENTIFIER_NODE,  
   JTI_ACCESS0_IDENTIFIER_NODE, 
+  JTI_CLASSDOLLAR_IDENTIFIER_NODE,
   JTI_ONE_ELT_ARRAY_DOMAIN_TYPE,
 
   JTI_RETURN_ADDRESS_TYPE_NODE,
@@ -460,6 +461,8 @@ extern tree java_global_trees[JTI_MAX];
   java_global_trees[JTI_CONTINUE_IDENTIFIER_NODE]  /* "continue" */
 #define access0_identifier_node \
   java_global_trees[JTI_ACCESS0_IDENTIFIER_NODE] /* "access$0" */
+#define classdollar_identifier_node \
+  java_global_trees[JTI_CLASSDOLLAR_IDENTIFIER_NODE] /* "class$" */
 #define one_elt_array_domain_type \
   java_global_trees[JTI_ONE_ELT_ARRAY_DOMAIN_TYPE]
 /* The type of the return address of a subroutine. */
@@ -1154,6 +1157,7 @@ struct rtx_def * java_lang_expand_expr PARAMS ((tree, rtx, enum machine_mode,
 #define ID_FINIT_P(ID)  ((ID) == finit_identifier_node \
                         || (ID) == finit_leg_identifier_node)
 #define ID_CLINIT_P(ID) ((ID) == clinit_identifier_node)
+#define ID_CLASSDOLLAR_P(ID) ((ID) == classdollar_identifier_node)
 
 /* Access flags etc for a variable/field (a FIELD_DECL): */
 
index 6ffa3357c77d5b32397996ef8204e02ff9329ac7..a2d41897de75341d11135e53d3a0785548696d06 100644 (file)
@@ -8327,7 +8327,7 @@ build_dot_class_method (class)
   /* Create the "class$" function */
   mdecl = create_artificial_method (class, ACC_STATIC, 
                                    build_pointer_type (class_type_node),
-                                   get_identifier ("class$"), args);
+                                   classdollar_identifier_node, args);
   DECL_FUNCTION_THROWS (mdecl) = build_tree_list (NULL_TREE,
                                                  no_class_def_found_error);
   
@@ -8401,7 +8401,7 @@ build_dot_class_method_invocation (type)
 
   s = build_string (IDENTIFIER_LENGTH (sig_id), 
                    IDENTIFIER_POINTER (sig_id));
-  return build_method_invocation (build_wfl_node (get_identifier ("class$")),
+  return build_method_invocation (build_wfl_node (classdollar_identifier_node),
                                  build_tree_list (NULL_TREE, s));
 }
 
@@ -10427,10 +10427,10 @@ find_applicable_accessible_methods_list (lc, class, name, arglist)
       search_applicable_methods_list (lc, TYPE_METHODS (class), 
                                      name, arglist, &list, &all_list);
 
-      /* When looking finit$, we turn LC to 1 so that we only search
-        in class. Note that we should have found something at
-        this point. */
-      if (ID_FINIT_P (name))
+      /* When looking finit$ or class$, we turn LC to 1 so that we
+        only search in class. Note that we should have found
+        something at this point. */
+      if (ID_FINIT_P (name) || ID_CLASSDOLLAR_P (name))
        {
          lc = 1;
          if (!list)