looksLikeForwarderOrFactoryOrTrivial identifies forwarders, factories and trivial methods. Currently that method doesn't know a field read or a method call targets a public or private field or method. It approximates this by trating getfield as private, getstatic as public, invokespecial as private, invokestatic as public.
So we should fix the following miscategorizations:
- should exclude forwarders that use
invokestatic to call a private method (such forwarders should not be inlined, as this creates more private callsites, which should be avoided)
- should include methods that read a public (non-static) field (such a method can be inlined. currently field accessors are excluded)
- should exclude methods that read a private static field (should not be inlined).
looksLikeForwarderOrFactoryOrTrivialidentifies forwarders, factories and trivial methods. Currently that method doesn't know a field read or a method call targets a public or private field or method. It approximates this by tratinggetfieldas private,getstaticas public,invokespecialas private,invokestaticas public.So we should fix the following miscategorizations:
invokestaticto call a private method (such forwarders should not be inlined, as this creates more private callsites, which should be avoided)