expr.c (expand_java_arrayload): Don't generate a NullPointerException based on the...
authorAndrew Haley <aph@redhat.com>
Thu, 17 Mar 2005 14:43:26 +0000 (14:43 +0000)
committerAndrew Haley <aph@gcc.gnu.org>
Thu, 17 Mar 2005 14:43:26 +0000 (14:43 +0000)
2005-03-16  Andrew Haley  <aph@redhat.com>

        * expr.c (expand_java_arrayload): Don't generate a
        NullPointerException based on the type of the node.
        (build_java_array_length_access): Likewise.

From-SVN: r96611

gcc/java/ChangeLog
gcc/java/expr.c

index adf8762d4b0c80075f89d2adaba735b9bf15693e..38edfef09cb8af159dfa1ef813cac3c6afbc6f45 100644 (file)
@@ -1,3 +1,9 @@
+2005-03-16  Andrew Haley  <aph@redhat.com>
+
+       * expr.c (expand_java_arrayload): Don't generate a
+       NullPointerException based on the type of the node.
+       (build_java_array_length_access): Likewise.
+
 2005-03-15  Zack Weinberg  <zack@codesourcery.com>
 
        * Make-lang.in (TEXI_JAVA_FILES): Add gcc-vers.texi.
index eaf5fd04292e4e9f9cd8615ec6c40f343bb08f21..ee67c223cb5e1a12a7b11c22957861dd734f2585 100644 (file)
@@ -818,15 +818,6 @@ build_java_array_length_access (tree node)
   tree array_type = TREE_TYPE (type);
   HOST_WIDE_INT length;
 
-  /* JVM spec: If the arrayref is null, the arraylength instruction
-     throws a NullPointerException.  The only way we could get a node
-     of type ptr_type_node at this point is `aconst_null; arraylength'
-     or something equivalent.  */
-  if (type == ptr_type_node)
-    return build3 (CALL_EXPR, int_type_node, 
-                  build_address_of (soft_nullpointer_node),
-                  NULL_TREE, NULL_TREE);
-
   if (!is_array_type_p (type))
     {
       /* With the new verifier, we will see an ordinary pointer type
@@ -1229,21 +1220,11 @@ expand_java_arrayload (tree lhs_type_node)
   index_node = save_expr (index_node);
   array_node = save_expr (array_node);
 
-  if (TREE_TYPE (array_node) == ptr_type_node)
-    /* The only way we could get a node of type ptr_type_node at this
-       point is `aconst_null; arraylength' or something equivalent, so
-       unconditionally throw NullPointerException.  */
-    load_node = build3 (CALL_EXPR, lhs_type_node, 
-                       build_address_of (soft_nullpointer_node),
-                       NULL_TREE, NULL_TREE);
-  else
-    {
-      lhs_type_node = build_java_check_indexed_type (array_node,
-                                                    lhs_type_node);
-      load_node = build_java_arrayaccess (array_node,
-                                         lhs_type_node,
-                                         index_node);
-    }
+  lhs_type_node = build_java_check_indexed_type (array_node,
+                                                lhs_type_node);
+  load_node = build_java_arrayaccess (array_node,
+                                     lhs_type_node,
+                                     index_node);
   if (INTEGRAL_TYPE_P (lhs_type_node) && TYPE_PRECISION (lhs_type_node) <= 32)
     load_node = fold (build1 (NOP_EXPR, int_type_node, load_node));
   push_value (load_node);