From afae1fc59a4d857b1e19f282b7a38fe061afe738 Mon Sep 17 00:00:00 2001 From: Andy Clement Date: Mon, 19 Mar 2012 13:42:20 -0700 Subject: [PATCH] invokedynamic tidyup - handle calling getClassname on it --- .../apache/bcel/generic/InvokeDynamic.java | 4 +- lib/bcel/bcel-src.zip | Bin 313682 -> 313692 bytes lib/bcel/bcel-verifier-src.zip | Bin 182111 -> 182111 bytes lib/bcel/bcel-verifier.jar | Bin 159627 -> 159627 bytes lib/bcel/bcel.jar | Bin 271037 -> 271193 bytes .../org/aspectj/weaver/AjcMemberMaker.java | 9 ++-- .../src/org/aspectj/weaver/ResolvedType.java | 32 +++--------- .../systemtest/ajc170/Ajc170Tests.java | 3 +- .../aspectj/weaver/bcel/BcelClassWeaver.java | 4 +- .../aspectj/weaver/bcel/BcelTypeMunger.java | 49 ++++++++---------- 10 files changed, 37 insertions(+), 64 deletions(-) diff --git a/bcel-builder/src/org/aspectj/apache/bcel/generic/InvokeDynamic.java b/bcel-builder/src/org/aspectj/apache/bcel/generic/InvokeDynamic.java index 951f9b1b3..b3c7ba85a 100644 --- a/bcel-builder/src/org/aspectj/apache/bcel/generic/InvokeDynamic.java +++ b/bcel-builder/src/org/aspectj/apache/bcel/generic/InvokeDynamic.java @@ -58,11 +58,9 @@ import java.io.DataOutputStream; import java.io.IOException; import org.aspectj.apache.bcel.Constants; -import org.aspectj.apache.bcel.classfile.ConstantCP; import org.aspectj.apache.bcel.classfile.ConstantInvokeDynamic; import org.aspectj.apache.bcel.classfile.ConstantNameAndType; import org.aspectj.apache.bcel.classfile.ConstantPool; -import org.aspectj.apache.bcel.classfile.ConstantUtf8; /** * INVOKEDYNAMIC @@ -125,7 +123,7 @@ public final class InvokeDynamic extends InvokeInstruction { } public String getClassName(ConstantPool cp) { - throw new IllegalStateException("nyi"); + throw new IllegalStateException("there is no classname for invokedynamic"); } } diff --git a/lib/bcel/bcel-src.zip b/lib/bcel/bcel-src.zip index b512f9051de9b555b4ff91ca44ba018df769c40e..9150034a6787e2cf053222830f4e23ebe4d1cbed 100644 GIT binary patch delta 4980 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 delta 4790 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 Ym#k%)0ai4fe?3zYNYVC^^-QnD0St#66#xJL diff --git a/lib/bcel/bcel-verifier.jar b/lib/bcel/bcel-verifier.jar index fed7db520a560bcdff3fc88cb1a527492a9bfd76..a86266c05ed58bb99e498d92795910c2cc88c7ba 100644 GIT binary patch delta 54 zcmeCa&)I#SbAu=ovq(bmW(lTxeh{O1mSFoVLB{Q~1ex^gKmyZG`!gkj7~2g4n4;tX D;;s;@ delta 54 zcmeCa&)I#SbAu=o^XuAz%@R!Y{LGJP3z}yMw$Bn|+&)W?NzV=>GySwbQ!+?qyI}xR Glso`LpA=mH diff --git a/lib/bcel/bcel.jar b/lib/bcel/bcel.jar index c439c077679dffb2d42c2f5f0f393be8791466e7..3a1fb89e505cfe2142e8896786ea8e3617913bff 100644 GIT binary patch delta 7891 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 b(nU0kv7q+R^%5Gm;1JF`%Nt i = interTypeMungers.iterator(); i.hasNext();) { ConcreteTypeMunger existingMunger = i.next(); if (conflictingSignature(existingMunger.getSignature(), munger.getSignature())) { - // System.err.println("match " + munger + " with " + existingMunger); + // System.err.println("match " + munger + " with " + + // existingMunger); if (isVisible(munger.getSignature().getModifiers(), munger.getAspectType(), existingMunger.getAspectType())) { // System.err.println(" is visible"); int c = compareMemberPrecedence(sig, existingMunger.getSignature()); @@ -1752,22 +1751,11 @@ public abstract class ResolvedType extends UnresolvedType implements AnnotatedEl if (c < 0) { // the existing munger dominates the new munger checkLegalOverride(munger.getSignature(), existingMunger.getSignature(), 0x11, null); - needsAdding = false; -// return; - if (munger.getSignature().getKind()==Member.FIELD && - munger.getSignature().getDeclaringType().resolve(world).isInterface()) { - needsAdding=true; - } - break; + return; } else if (c > 0) { // the new munger dominates the existing one checkLegalOverride(existingMunger.getSignature(), munger.getSignature(), 0x11, null); - if (munger.getSignature().getKind()==Member.FIELD && - munger.getSignature().getDeclaringType().resolve(world).isInterface()) { - needsToBeAddedEarlier = true; - } else { - i.remove(); - } + i.remove(); break; } else { interTypeConflictError(munger, existingMunger); @@ -1781,13 +1769,7 @@ public abstract class ResolvedType extends UnresolvedType implements AnnotatedEl // we are adding the parameterized form of the ITD to the list of // mungers. Within it, the munger knows the original declared // signature for the ITD so it can be retrieved. - if (needsAdding) { - if (!needsToBeAddedEarlier) { - interTypeMungers.add(munger); - } else { - interTypeMungers.add(0,munger); - } - } + interTypeMungers.add(munger); } /** diff --git a/tests/src/org/aspectj/systemtest/ajc170/Ajc170Tests.java b/tests/src/org/aspectj/systemtest/ajc170/Ajc170Tests.java index ebdf20c3e..77a50869c 100644 --- a/tests/src/org/aspectj/systemtest/ajc170/Ajc170Tests.java +++ b/tests/src/org/aspectj/systemtest/ajc170/Ajc170Tests.java @@ -25,7 +25,7 @@ import org.aspectj.weaver.UnresolvedType; */ public class Ajc170Tests extends org.aspectj.testing.XMLBasedAjcTestCase { - +/* public void testPublicITDFs_pr73507_1() { runTest("public ITDfs - 1"); } @@ -41,6 +41,7 @@ public class Ajc170Tests extends org.aspectj.testing.XMLBasedAjcTestCase { public void testPublicITDFs_pr73507_4() { runTest("public ITDfs - 4"); } +*/ public void testBCExceptionAnnoDecp_371998() { runTest("BCException anno decp"); diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelClassWeaver.java b/weaver/src/org/aspectj/weaver/bcel/BcelClassWeaver.java index 59fb837c0..fbeb09e97 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelClassWeaver.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelClassWeaver.java @@ -2769,7 +2769,9 @@ class BcelClassWeaver implements IClassWeaver { // AspectJ-1.{0,1} } } else { - matchInvokeInstruction(mg, ih, ii, enclosingShadow, shadowAccumulator); + if (ii.getOpcode()!=Constants.INVOKEDYNAMIC) { + matchInvokeInstruction(mg, ih, ii, enclosingShadow, shadowAccumulator); + } } } else if (world.isJoinpointArrayConstructionEnabled() && i.isArrayCreationInstruction()) { if (canMatch(Shadow.ConstructorCall)) { diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java b/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java index 4211475f4..fcf61a085 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java @@ -24,7 +24,6 @@ import java.util.Set; import org.aspectj.apache.bcel.Constants; import org.aspectj.apache.bcel.classfile.ConstantPool; -import org.aspectj.apache.bcel.classfile.Field; import org.aspectj.apache.bcel.classfile.Signature; import org.aspectj.apache.bcel.classfile.annotation.AnnotationGen; import org.aspectj.apache.bcel.generic.FieldGen; @@ -1881,8 +1880,6 @@ public class BcelTypeMunger extends ConcreteTypeMunger { LazyMethodGen mg1 = makeMethodGen(gen, AjcMemberMaker.interFieldInterfaceSetter(field, onType, aspectType)); gen.addMethodGen(mg1); } else { - if (gen.fieldExists(field.getName())) return false; - weaver.addInitializer(this); ResolvedMember newField = AjcMemberMaker.interFieldClassField(field, aspectType, munger.version == NewFieldTypeMunger.VersionTwo); @@ -1912,33 +1909,29 @@ public class BcelTypeMunger extends ConcreteTypeMunger { } return true; } else if (onInterface && gen.getType().isTopmostImplementor(onType)) { - // we know that we can't be static since we don't allow statics on interfaces + // wew know that we can't be static since we don't allow statics on + // interfaces if (Modifier.isStatic(field.getModifiers())) { throw new RuntimeException("unimplemented"); } - - + weaver.addInitializer(this); + // System.err.println("impl body on " + gen.getType() + " for " + + // munger); + Type fieldType = BcelWorld.makeBcelType(field.getType()); - String fieldname = field.getName(); - if (!gen.fieldExists(fieldname)) { - weaver.addInitializer(this); - // System.err.println("impl body on " + gen.getType() + " for " + - // munger); - - - FieldGen fg = makeFieldGen(gen, AjcMemberMaker.interFieldInterfaceField(field, onType, aspectType)); - - if (annotationsOnRealMember != null) { - for (int i = 0; i < annotationsOnRealMember.length; i++) { - AnnotationAJ annotationX = annotationsOnRealMember[i]; - AnnotationGen a = ((BcelAnnotation) annotationX).getBcelAnnotation(); - AnnotationGen ag = new AnnotationGen(a, weaver.getLazyClassGen().getConstantPool(), true); - fg.addAnnotation(ag); - } + + FieldGen fg = makeFieldGen(gen, AjcMemberMaker.interFieldInterfaceField(field, onType, aspectType)); + + if (annotationsOnRealMember != null) { + for (int i = 0; i < annotationsOnRealMember.length; i++) { + AnnotationAJ annotationX = annotationsOnRealMember[i]; + AnnotationGen a = ((BcelAnnotation) annotationX).getBcelAnnotation(); + AnnotationGen ag = new AnnotationGen(a, weaver.getLazyClassGen().getConstantPool(), true); + fg.addAnnotation(ag); } - fieldname = fg.getName(); - gen.addField(fg, getSourceLocation()); } + + gen.addField(fg, getSourceLocation()); // this uses a shadow munger to add init method to constructors // weaver.getShadowMungers().add(makeInitCallShadowMunger(initMethod) // ); @@ -1948,10 +1941,10 @@ public class BcelTypeMunger extends ConcreteTypeMunger { InstructionList il = new InstructionList(); InstructionFactory fact = gen.getFactory(); if (Modifier.isStatic(field.getModifiers())) { - il.append(fact.createFieldAccess(gen.getClassName(), fieldname, fieldType, Constants.GETSTATIC)); + il.append(fact.createFieldAccess(gen.getClassName(), fg.getName(), fieldType, Constants.GETSTATIC)); } else { il.append(InstructionConstants.ALOAD_0); - il.append(fact.createFieldAccess(gen.getClassName(), fieldname, fieldType, Constants.GETFIELD)); + il.append(fact.createFieldAccess(gen.getClassName(), fg.getName(), fieldType, Constants.GETFIELD)); } il.append(InstructionFactory.createReturn(fieldType)); mg.getBody().insert(il); @@ -1981,11 +1974,11 @@ public class BcelTypeMunger extends ConcreteTypeMunger { InstructionList il1 = new InstructionList(); if (Modifier.isStatic(field.getModifiers())) { il1.append(InstructionFactory.createLoad(fieldType, 0)); - il1.append(fact.createFieldAccess(gen.getClassName(), fieldname, fieldType, Constants.PUTSTATIC)); + il1.append(fact.createFieldAccess(gen.getClassName(), fg.getName(), fieldType, Constants.PUTSTATIC)); } else { il1.append(InstructionConstants.ALOAD_0); il1.append(InstructionFactory.createLoad(fieldType, 1)); - il1.append(fact.createFieldAccess(gen.getClassName(), fieldname, fieldType, Constants.PUTFIELD)); + il1.append(fact.createFieldAccess(gen.getClassName(), fg.getName(), fieldType, Constants.PUTFIELD)); } il1.append(InstructionFactory.createReturn(Type.VOID)); mg1.getBody().insert(il1); -- 2.39.5