diff options
author | aclement <aclement> | 2006-02-16 16:50:34 +0000 |
---|---|---|
committer | aclement <aclement> | 2006-02-16 16:50:34 +0000 |
commit | e87458179ab929aae2bc6966a6e092813bdd14a3 (patch) | |
tree | 5cfbcdad74346a29b3d65791c5dabc2563cbfe70 /weaver/src/org | |
parent | d4219e12eaa86ed810392364931a92324dc2a67f (diff) | |
download | aspectj-e87458179ab929aae2bc6966a6e092813bdd14a3.tar.gz aspectj-e87458179ab929aae2bc6966a6e092813bdd14a3.zip |
test and fix for 122370 (Andy & Helen) - code generated for @Decp busted.
Diffstat (limited to 'weaver/src/org')
-rw-r--r-- | weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java b/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java index 0497f109a..e291cc3e3 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java @@ -1110,15 +1110,19 @@ public class BcelTypeMunger extends ConcreteTypeMunger { // getfield body.append(InstructionConstants.ALOAD_0); body.append(Utility.createGet(fact, munger.getDelegate(weaver.getLazyClassGen().getType()))); - BranchInstruction ifNonNull = InstructionFactory.createBranchInstruction(Constants.IFNULL, null); + BranchInstruction ifNonNull = InstructionFactory.createBranchInstruction(Constants.IFNONNULL, null); body.append(ifNonNull); - InstructionHandle ifNonNullElse = body.append(InstructionConstants.ALOAD_0); + + // Create and store a new instance + body.append(InstructionConstants.ALOAD_0); body.append(fact.createNew(munger.getImplClassName())); body.append(InstructionConstants.DUP); body.append(fact.createInvoke(munger.getImplClassName(), "<init>", Type.VOID, Type.NO_ARGS, Constants.INVOKESPECIAL)); body.append(Utility.createSet(fact, munger.getDelegate(weaver.getLazyClassGen().getType()))); + + // if not null use the instance we've got + InstructionHandle ifNonNullElse = body.append(InstructionConstants.ALOAD_0); ifNonNull.setTarget(ifNonNullElse); - body.append(InstructionConstants.ALOAD_0); body.append(Utility.createGet(fact, munger.getDelegate(weaver.getLazyClassGen().getType()))); //args |