GCC Bugzilla – Bug 17187
Call to java.lang.Object constructor is redundant
Last modified: 2006-04-23 18:03:27 UTC
The constructor for java.lang.Object does nothing. Its probably a reasonable
assumption that it will always do nothing, so, we should change the compiler to
not generate calls to it when generating native code. This would save 1 call for
every "new" operation, and also improve the number of inlining opportunities
available to the compiler, as many constructor calls could now be fully inlined.
One way to do this might be to extend the java "builtins" mechanism to allow us
to turn other well known calls, not just Math.* calls, into inlined trees. If
we see a java.lang.Object() call, check_for_builtin() would just return an empty
Confirmed. But I should note that even the Sun's javac does not do this optimization so ...
pinskia: bytecode compilation is a different story. Obviously we should only do
this when compiling to _native_ code. We know our java.lang.Object constructor
doesn't do anything, but we can't make that assumption about other implementations.
Man this is a semi hard problem, I could figure out where the call expression is built but we patch it up
which makes it harder (maybe we should pass a pointer to the tree which we patch up and then change
it to a nop).