diff options
author | Andy Clement <aclement@pivotal.io> | 2018-03-12 08:54:48 -0700 |
---|---|---|
committer | Andy Clement <aclement@pivotal.io> | 2018-03-12 08:54:48 -0700 |
commit | a796ce3823c112a5de213320c0696c60be4443a4 (patch) | |
tree | ef8ab6c0ca15a7b1d1f3c0a010f5091e5b50d497 /docs/dist/doc/README-190.html | |
parent | f8d82161e3b5c5ddcc6ec16540c3e1ab637bd04c (diff) | |
download | aspectj-a796ce3823c112a5de213320c0696c60be4443a4.tar.gz aspectj-a796ce3823c112a5de213320c0696c60be4443a4.zip |
docs for new code generation and factory methods
Diffstat (limited to 'docs/dist/doc/README-190.html')
-rw-r--r-- | docs/dist/doc/README-190.html | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/docs/dist/doc/README-190.html b/docs/dist/doc/README-190.html index 0033afded..8a72a2fe5 100644 --- a/docs/dist/doc/README-190.html +++ b/docs/dist/doc/README-190.html @@ -20,6 +20,7 @@ All rights reserved. <p>The full list of resolved issues in 1.9.0 is available <a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&f0=OP&f1=OP&f3=CP&f4=CP&j1=OR&list_id=16866879&product=AspectJ&query_format=advanced&target_milestone=1.9.0">here</a></h2>.</p> + <h1>AspectJ 1.9.0.RC4</h1> <p>Primary changes in RC4 are to add support for <compilerArg> in the Ant task. This enables users of the Ant task to @@ -282,6 +283,37 @@ the <tt>module-info</tt>. (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?i <li><p>Module aware variants of AspectJ paths: <tt>--module-inpath</tt>, <tt>--module-aspectpath</tt>. (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=526243">Issue 526243</a>)</p> </ul> +<br><br> + +<h4>Improved runtime interface</h4> +<p>New factory methods have been added to the AspectJ runtime. This is an attempt to more optimally create <tt>thisJoinPoint</tt> and +<tt>thisEnclosingJoinPoint</tt> objects. The generated code that invokes these now also uses the ability +for the LDC bytecode instruction to load class constants directly (this replaces what was happening +previously where generated code referenced string classnames and classloading was being done from the +aspectj runtime as the woven application was starting).</p> + +<p>This is turned on by using <tt>-Xajruntimetarget:1.9</tt>. This option was used previously to enable +users to target an old runtime if they knew that old runtime is all that was available at some deployed target. +The new generation mechanism is not the default, not until it has had a bit more testing out in the wild.</p> + +<p>The changes to generated code have a couple of potential side effects: +<ul> +<li><b>overall size</b>: the woven code may be smaller due to the use of smaller string constant pieces in the generated +code (previously strings were smashed together in the generated code and then taken apart by AspectJ at runtime). +Since the pieces are smaller, they can be shared across other uses in the class file. +<li><b>method size</b>: although the overall class may be smaller there are more instructions involved in preparing the +data for invocation of the new joinpoint factory methods. It is possible if you have a lot of joinpoints that we might +blow the 64k instruction limit for the <tt>ajc$preClinit</tt> method (where the factory invocation code is generated). +Please provide feedback if this happens to you! +</ul> + +<p>In anticipation of not all build plugins supporting that <tt>-Xajruntimetarget</tt> option, you can now specify +these kinds of option in the <tt>ASPECTJ_OPTS</tt> environment variable. Set that in your environment:</p> +<pre><code> +export ASPECTJ_OPTS="-Xajruntimetarget:1.9" +</code></pre> +<p>And it should get picked up by AspectJ when it runs.</p> + <!-- ============================== --> </body> </html> |