Commit d8e97847 by Andrew Haley Committed by Andrew Haley

expr.c (expand_java_arrayload): Don't generate a NullPointerException based on…

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

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
parent c9982a3f
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.
......
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment