diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/ajcTests.xml | 5 | ||||
-rw-r--r-- | tests/bugs/WideJumps.java | 93 |
2 files changed, 98 insertions, 0 deletions
diff --git a/tests/ajcTests.xml b/tests/ajcTests.xml index c03e1c081..1ee1b5d15 100644 --- a/tests/ajcTests.xml +++ b/tests/ajcTests.xml @@ -6362,4 +6362,9 @@ <compile files="WarningTest.java" options="-warn:none"/> </ajc-test> + <ajc-test dir="bugs" pr="38168" keywords="knownLimitation" + title="insertion of lots of advice code can make branch offset for if too large"> + <compile files="WideJumps.java"/> + <run class="WideJumps"/> + </ajc-test> </suite> diff --git a/tests/bugs/WideJumps.java b/tests/bugs/WideJumps.java new file mode 100644 index 000000000..88aa39fb3 --- /dev/null +++ b/tests/bugs/WideJumps.java @@ -0,0 +1,93 @@ +// for need to fill in bug # + + +public class WideJumps { + public static void main(String[] args) { + new WideJumps().m(true); + } + + public void m(boolean b) { + if (b) { + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + m(1,2,3,4,5,6,7,8,9,0); + } + } + + private void m(int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9) { + } +} + +aspect A { + Object around(): call(void m(..)) { + System.out.println("around: " + thisJoinPoint); + return proceed(); + } + + after(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i0): + call(void m(..)) && args(i1, i2, i3, i4, i5, i6, i7, i8, i9, i0) && if(i1<i2&&i3<i4&&i5<i6&&i7<i8&&i9<i0) + { + System.out.println("after: " + thisJoinPoint); + } + after(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i0): + call(void m(..)) && args(i1, i2, i3, i4, i5, i6, i7, i8, i9, i0) && if(i1<i2&&i3<i4&&i5<i6&&i7<i8&&i9<i0) + { + System.out.println("after: " + thisJoinPoint); + } + after(int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i0): + call(void m(..)) && args(i1, i2, i3, i4, i5, i6, i7, i8, i9, i0) && if(i1<i2&&i3<i4&&i5<i6&&i7<i8&&i9<i0) + { + System.out.println("after: " + thisJoinPoint); + } +} |