Andy Clement [Fri, 25 May 2018 19:49:56 +0000 (12:49 -0700)]
Initial cut at bug 535086 - pertypewithin and non vis types
In this version unless you specify an aspect is privileged then the
pertypewithin clause will not match types not visible from the aspect
(private types or default vis types in another package)
Debating whether to change this to not require privileged.
Andy Clement [Wed, 28 Feb 2018 19:53:14 +0000 (11:53 -0800)]
Bug#531694: generate more optional thisJoinPoint construction code
This commit introduces some new methods into the
runtime Factory class and modifies code generation
to use them (and to use the form of the LDC bytecode
that loads class constants).
Andy Clement [Fri, 17 Nov 2017 17:18:23 +0000 (09:18 -0800)]
Merge branch 'master' into earlyJava9
Switching master to the earlyJava9 branch. This merge
with strategy=ours should give us a common root so that
anyone working from master will be able to absorb the change
easily.
Andy Clement [Thu, 9 Nov 2017 21:14:02 +0000 (13:14 -0800)]
Updates to better cope with future JDKs
The version handling in LangUtil has been overhauled
to cope better with post 1.8 releases (JDK9 and JDK10 or 18.3
or whatever they call it). As part of this moved
to treating JDK9 as '9' rather than '1.9'. Also removed
duplicate version processing logic and had that defer to
the one place in LangUtil where we now deal with it.
Includes some generics tidyup in ajdoc. More ajdoc work
is necessary for Java10 because it removes the standard doclet
(old style). However trying to invoke the internal Javadoc
handler in Java10 is failing due to module visibility rules.
Andy Clement [Fri, 20 Oct 2017 19:48:41 +0000 (12:48 -0700)]
Adjust how classpath entries manipulated for Java9 support
Prior to this AspectJ would discard ignore the ClasspathEntry
objects built by JDT and just work with the classpath as a string,
driving the JDT FileSystem to rebuild classpath entries again at
a later date using the string. This is more complex in Java9 because
the string representation was losing whether some entries came in
via modulepath. ClasspathEntry construction for modulepath entries
is non trivial (since the module-info must be processed).
The new version will cache some of the ClasspathEntry objects (those
built for modulepaths) and do more work on the AspectJ side building
classpath entries in general. It now passes these entries to a
different FileSystem entry point rather than the entry point that
takes a string path.
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, 28 Sep 2017 20:27:59 +0000 (13:27 -0700)]
Optimized type lookup on Java9
Took the code from the patch submitted by Mario Ivankovits
in bug 520597 and made some improvements to make (hopefully)
better use of memory. Some basic tests added.
Andy Clement [Wed, 27 Sep 2017 21:46:47 +0000 (14:46 -0700)]
Smarter classpath detection on Java9
On Java9 cannot rely on URLClassLoader being found from which
to determine classpath so use the environment variable. This may
have issues if loaders are being constructed that specifically
deviate from the java.class.path.
Andy Clement [Wed, 27 Sep 2017 21:43:04 +0000 (14:43 -0700)]
Ensure version of generated class is correct
Important to ensure we generate it of the right version as it may
end up containing code derived from a particular class that needs
a be run with a certain level of verifier. In this case if
inserting invokestatic targeting a interface method, we need to
be using something later than a java 1.2 level class file.
Andy Clement [Wed, 27 Sep 2017 21:28:56 +0000 (14:28 -0700)]
Skip tests on Java9
Issue it due to split packages (see comments in code). Don't want to
debug this further right now, possibly needs a command line flag passing
to the JVM that runs the test, so these tests need forking.