Why does GCJ generate so many explicit checks for null pointers?
Tom Tromey
tromey@redhat.com
Tue Jul 29 14:35:00 GMT 2003
>>>>> "Jeff" == Jeff Sturm <jsturm@one-point.com> writes:
>> Why check before the constructor call? Is it ever possible for
>> _Jv_AllocObjectNoFinalizer to return null?
Jeff> No, but the backend optimizers don't know that, or else DCE would
Jeff> eliminate the test.
Hmm, on the C++ side we mark this function, and others like it, with
__attribute__((__malloc__)). We do this in gcj as well; from
java/decl.c:
alloc_no_finalizer_node =
builtin_function ("_Jv_AllocObjectNoFinalizer",
build_function_type (ptr_type_node, t),
0, NOT_BUILT_IN, NULL, NULL_TREE);
DECL_IS_MALLOC (alloc_no_finalizer_node) = 1;
Something else must be going on...
Tom
More information about the Java
mailing list