summaryrefslogtreecommitdiffstats
path: root/weaver/src/org
diff options
context:
space:
mode:
authoraclement <aclement>2006-02-16 16:50:34 +0000
committeraclement <aclement>2006-02-16 16:50:34 +0000
commite87458179ab929aae2bc6966a6e092813bdd14a3 (patch)
tree5cfbcdad74346a29b3d65791c5dabc2563cbfe70 /weaver/src/org
parentd4219e12eaa86ed810392364931a92324dc2a67f (diff)
downloadaspectj-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.java10
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