From 0fb3c077c71da5a112c71ad44c62552fc725477e Mon Sep 17 00:00:00 2001 From: aclement Date: Mon, 31 Jan 2011 20:34:13 +0000 Subject: [PATCH] 335783 --- .../org/aspectj/weaver/bcel/LazyClassGen.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/weaver/src/org/aspectj/weaver/bcel/LazyClassGen.java b/weaver/src/org/aspectj/weaver/bcel/LazyClassGen.java index bcbcabc83..4ca0d175a 100644 --- a/weaver/src/org/aspectj/weaver/bcel/LazyClassGen.java +++ b/weaver/src/org/aspectj/weaver/bcel/LazyClassGen.java @@ -1041,7 +1041,8 @@ public final class LazyClassGen { * Create a field in the type containing the shadow where the annotation retrieved during binding can be stored - for later fast * access. * - * @param shadow the shadow at which the @annotation result is being cached + * @param shadow + * the shadow at which the @annotation result is being cached * @return a field */ public Field getAnnotationCachingField(BcelShadow shadow, ResolvedType toType) { @@ -1116,13 +1117,21 @@ public final class LazyClassGen { } if (serialVersionUIDRequiresInitialization) { + InstructionList[] ilSVUID = new InstructionList[1]; + ilSVUID[0] = new InstructionList(); + ilSVUID[0].append(InstructionFactory.PUSH(getConstantPool(), calculatedSerialVersionUID)); + ilSVUID[0].append(getFactory().createFieldAccess(getClassName(), "serialVersionUID", BasicType.LONG, + Constants.PUTSTATIC)); if (il == null) { - il = new InstructionList[1]; + il = ilSVUID; + } else { + InstructionList[] newIl = new InstructionList[il.length + ilSVUID.length]; + System.arraycopy(il, 0, newIl, 0, il.length); + System.arraycopy(ilSVUID, 0, newIl, il.length, ilSVUID.length); + il = newIl; } - il[0] = new InstructionList(); - il[0].append(InstructionFactory.PUSH(getConstantPool(), calculatedSerialVersionUID)); - il[0].append(getFactory().createFieldAccess(getClassName(), "serialVersionUID", BasicType.LONG, Constants.PUTSTATIC)); } + LazyMethodGen prevMethod; LazyMethodGen nextMethod = null; if (this.isInterface()) { // Cannot sneak stuff into another static method in an interface @@ -1204,7 +1213,7 @@ public final class LazyClassGen { list.append(InstructionFactory.PUSH(getConstantPool(), shadow.getKind().getName())); // create the signature - if ( world.isTargettingAspectJRuntime12() || !isFastSJPAvailable || !sig.getKind().equals(Member.METHOD)) { + if (world.isTargettingAspectJRuntime12() || !isFastSJPAvailable || !sig.getKind().equals(Member.METHOD)) { list.append(InstructionFactory.createLoad(factoryType, 0)); } -- 2.39.5