Andy Clement [Tue, 14 Nov 2017 22:08:45 +0000 (14:08 -0800)]
Working towards 1.8.13
Updated version message for compiler to 1.8.13
Added poor mans version of new version processing in latest 1.9 RC2, this
version will just fall back to 1.5 instead of 1.4 when it gets confused
(so it will tolerate Java 10 a little more).
Debug message added for problems found when parameterizing a type
and there is a mismatch in number of expected type variables (which
can occur when you haven't fully updated your dependencies across
your project). This debug info should at least tell you the type
involved rather than a generic message about their being an issue.
Andy Clement [Thu, 28 Sep 2017 23:03:17 +0000 (16:03 -0700)]
Fixes Bug 525293 - Spring AOP could be faster
Multiple changes here:
- annotation unpacking is smarter and if it only needs runtime
retention annotations it uses reflection and doesn't unpack the
bytes to discover class level retention annotations.
- Reflection worlds are shared if for the same classloader.
Andy Clement [Thu, 5 Oct 2017 17:27:40 +0000 (10:27 -0700)]
Ensure we can disassemble invokedynamic
If there are problems at weave time the weaver may attempt to
disassemble some code to produce a nice error message. Until this
change that disassembly code did not understand invokedynamic.
This would make it fail to disassemble and instead of seeing the
real problem you see a disassembly problem. With this fix we
should now see the underlying problem in the issue.
Andy Clement [Fri, 29 Jul 2016 17:05:50 +0000 (10:05 -0700)]
Fix ambiguous binding problem on anonymous types
If an anonymous class calls a method ITD'd onto one of its own
supertypes (e.g. new A() { xx(null); }) then it can be reported
as an ambiguous method invocation on Java8. There is different
handling for Java8 that is revealing an issue. The intertype
method declarations are recorded in a member finder attached to the
target type (A in this case). When the local type binding is
built it gets all the methods from supertypes added to it - this
unfortunately includes the ITD method. Then later when something
asks for all 'xx' methods on A, it finds the ITD method from when
A was constructed and an additional copy from the member finder.
The quick fix is for the member finder to use a set rather than
list when answering 'what are the xx methods'. If this proves
a problem down the line the deeper fix would be to avoid including
ITDs when the local type binding is built.
Andy Clement [Wed, 20 Jan 2016 20:58:09 +0000 (12:58 -0800)]
Fixes for compile time overweaving
In writing a testcase for 352389 I discovered overweaving
just wasn't working for a compile time series of test steps.
This was due to a guard preventing secondary calls to
addOrReplaceAspect. Without the secondary call the crosscutting
collector for the aspect had recorded no mungers from the
original aspect because it was still using an EclipseSourceType
delegate. Later when it was using the binary BcelObjectType
delegate and mungers were available, they weren't collected
because of that missing addOrReplaceAspect call.
Andy Clement [Mon, 10 Aug 2015 18:35:19 +0000 (11:35 -0700)]
Add option not to generate local variable tables in some scenarios
New Xset option generateNewLocalVariableTables defaults to true
but can be set to false. In some situations incoming bytecode
for weaving doesn't want them adding (e.g. android situations
where the bytecode is a bit funky).