Don't generate NullPointerExceptions for arraylength and arrayload

Andrew Haley aph@redhat.com
Thu Mar 17 10:46:00 GMT 2005


Ranjit Mathew writes:
 > Andrew Haley wrote:
 > > This removes the special case code that throws a NullPointerException
 > > bease on the type of an arrayref.  This trick no longer works because
 > > in the bytecode front end we now use the same variable decl for every
 > > object.  In ancy case, this optimization just provided a fast path to
 > > throw a NullPointerException.
 > > 
 > > This is a regression from 3.x.
 > 
 > [...]
 > 
 > > -  if (type == ptr_type_node)
 > > -    return build3 (CALL_EXPR, int_type_node, 
 > > -                  build_address_of (soft_nullpointer_node),
 > > -                  NULL_TREE, NULL_TREE);
 > > -
 > 
 > Doesn't doing this make "Array_3 -O3 bytecode -> native"
 > fail for you?

No.  We already discussed this in
http://gcc.gnu.org/ml/gcc-patches/2005-03/msg00465.html.

I already answered this question in
http://gcc.gnu.org/ml/gcc-patches/2005-03/msg00746.html

It's possible that the code I removed in this latest patch was
papering over the real bug, and so Array_3 triggers now where it
didn't before.

I'm interested to know whether people think we should make these loads
volatile.

Andrew.



More information about the Java-patches mailing list