Revision: 14832
http://datanucleus.svn.sourceforge.net/datanucleus/?rev=14832&view=rev
Author: andy_jefferson
Date: 2012-06-13 07:53:48 +0000 (Wed, 13 Jun 2012)
Log Message:
-----------
[NUCENHANCER-81] Initial use of frames; for single-field identity cases in this commit. Others to follow
Modified Paths:
--------------
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoCopyField.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoCopyFields.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoCopyKeyFieldsFromObjectId.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoCopyKeyFieldsFromObjectId2.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetObjectId.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetPersistenceManager.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetTransactionalObjectId.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetVersion.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetViaCheck.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetViaMediate.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoIsDetached.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoIsDirty.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoIsXXX.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoMakeDirty.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoNewObjectIdInstance2.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoPreSerialize.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoProvideField.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoProvideFields.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceDetachedState.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceField.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceFields.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceFlags.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceStateManager.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoSetViaCheck.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoSetViaMediate.java
platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/LoadClass.java
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoCopyField.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoCopyField.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoCopyField.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -122,6 +122,8 @@
for (int i=0;i<fields.length;i++)
{
visitor.visitLabel(fieldOptions[i]);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitVarInsn(Opcodes.ALOAD, 1);
if (fields[i] instanceof PropertyMetaData)
@@ -145,6 +147,7 @@
// default :
visitor.visitLabel(defaultLabel);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
// super.jdoCopyField(obj, index);
visitor.visitVarInsn(Opcodes.ALOAD, 0);
@@ -155,6 +158,7 @@
// End of switch
visitor.visitLabel(endSwitchLabel);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
visitor.visitInsn(Opcodes.RETURN);
}
else
@@ -188,6 +192,8 @@
for (int i=0;i<fields.length;i++)
{
visitor.visitLabel(fieldOptions[i]);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitVarInsn(Opcodes.ALOAD, 1);
if (fields[i] instanceof PropertyMetaData)
@@ -211,6 +217,7 @@
// default:
visitor.visitLabel(defaultLabel);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
// throw new IllegalArgumentException("out of field index :" + index);
visitor.visitTypeInsn(Opcodes.NEW, "java/lang/IllegalArgumentException");
@@ -227,6 +234,8 @@
// End of switch
visitor.visitLabel(endSwitchLabel);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitInsn(Opcodes.RETURN);
}
else
@@ -264,4 +273,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoCopyFields.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoCopyFields.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoCopyFields.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -80,6 +80,7 @@
Label l0 = new Label();
visitor.visitLabel(l0);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitFieldInsn(Opcodes.GETFIELD, getClassEnhancer().getASMClassName(),
enhancer.getStateManagerFieldName(), enhancer.getStateManagerDescriptor());
@@ -93,6 +94,8 @@
visitor.visitInsn(Opcodes.ATHROW);
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 2);
Label l3 = new Label();
visitor.visitJumpInsn(Opcodes.IFNONNULL, l3);
@@ -104,6 +107,8 @@
visitor.visitInsn(Opcodes.ATHROW);
visitor.visitLabel(l3);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 1);
visitor.visitTypeInsn(Opcodes.INSTANCEOF, getClassEnhancer().getASMClassName());
Label l5 = new Label();
@@ -116,6 +121,8 @@
visitor.visitInsn(Opcodes.ATHROW);
visitor.visitLabel(l5);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 1);
visitor.visitTypeInsn(Opcodes.CHECKCAST, getClassEnhancer().getASMClassName());
visitor.visitVarInsn(Opcodes.ASTORE, 3);
@@ -139,6 +146,8 @@
visitor.visitInsn(Opcodes.ATHROW);
visitor.visitLabel(l10);
+ visitor.visitFrame(Opcodes.F_APPEND,1, new Object[] {getClassEnhancer().getASMClassName()}, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 2);
visitor.visitInsn(Opcodes.ARRAYLENGTH);
visitor.visitInsn(Opcodes.ICONST_1);
@@ -151,6 +160,8 @@
visitor.visitJumpInsn(Opcodes.IFLT, l13);
Label l14 = new Label();
visitor.visitLabel(l14);
+ visitor.visitFrame(Opcodes.F_APPEND,1, new Object[] {Opcodes.INTEGER}, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitVarInsn(Opcodes.ALOAD, 3);
visitor.visitVarInsn(Opcodes.ALOAD, 2);
@@ -162,6 +173,8 @@
visitor.visitVarInsn(Opcodes.ILOAD, 4);
visitor.visitJumpInsn(Opcodes.IFGE, l14);
visitor.visitLabel(l13);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitInsn(Opcodes.RETURN);
Label l16 = new Label();
@@ -175,4 +188,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoCopyKeyFieldsFromObjectId.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoCopyKeyFieldsFromObjectId.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoCopyKeyFieldsFromObjectId.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -161,6 +161,8 @@
// if (!(oid instanceof LongIdentity)) throw new ClassCastException("...");
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 2);
visitor.visitTypeInsn(Opcodes.INSTANCEOF, ACN_objectIdClass);
Label l5 = new Label();
@@ -173,6 +175,8 @@
// XXXIdentity o = (XXXIdentity) oid;
visitor.visitLabel(l5);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 2);
visitor.visitTypeInsn(Opcodes.CHECKCAST, ACN_objectIdClass);
visitor.visitVarInsn(Opcodes.ASTORE, 3);
@@ -460,4 +464,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoCopyKeyFieldsFromObjectId2.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoCopyKeyFieldsFromObjectId2.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoCopyKeyFieldsFromObjectId2.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -156,6 +156,8 @@
// XXXIdentity o = (XXXIdentity) oid;
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 1);
visitor.visitTypeInsn(Opcodes.CHECKCAST, ACN_objectIdClass);
visitor.visitVarInsn(Opcodes.ASTORE, 2);
@@ -442,4 +444,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetObjectId.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetObjectId.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetObjectId.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -91,6 +91,7 @@
"getObjectId", "(" + enhancer.getPersistableDescriptor() + ")" + ASMUtils.CD_Object);
visitor.visitInsn(Opcodes.ARETURN);
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
if (!enhancer.getClassMetaData().isDetachable())
{
@@ -112,6 +113,8 @@
visitor.visitInsn(Opcodes.ACONST_NULL);
visitor.visitInsn(Opcodes.ARETURN);
visitor.visitLabel(l3);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitFieldInsn(Opcodes.GETFIELD, getClassEnhancer().getASMClassName(),
enhancer.getDetachedStateFieldName(), "[" + ASMUtils.CD_Object);
@@ -127,4 +130,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetPersistenceManager.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetPersistenceManager.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetPersistenceManager.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -79,8 +79,12 @@
Label l2 = new Label();
visitor.visitJumpInsn(Opcodes.GOTO, l2);
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitInsn(Opcodes.ACONST_NULL);
visitor.visitLabel(l2);
+ visitor.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] {"javax/jdo/PersistenceManager"});
+
visitor.visitInsn(Opcodes.ARETURN);
Label l3 = new Label();
visitor.visitLabel(l3);
@@ -89,4 +93,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetTransactionalObjectId.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetTransactionalObjectId.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetTransactionalObjectId.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -79,8 +79,12 @@
Label l2 = new Label();
visitor.visitJumpInsn(Opcodes.GOTO, l2);
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitInsn(Opcodes.ACONST_NULL);
visitor.visitLabel(l2);
+ visitor.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] {"java/lang/Object"});
+
visitor.visitInsn(Opcodes.ARETURN);
Label l3 = new Label();
@@ -90,4 +94,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetVersion.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetVersion.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetVersion.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -90,6 +90,7 @@
"getVersion", "(" + enhancer.getPersistableDescriptor() + ")" + ASMUtils.CD_Object);
visitor.visitInsn(Opcodes.ARETURN);
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
if (!enhancer.getClassMetaData().isDetachable())
{
@@ -111,6 +112,8 @@
visitor.visitInsn(Opcodes.ACONST_NULL);
visitor.visitInsn(Opcodes.ARETURN);
visitor.visitLabel(l3);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitFieldInsn(Opcodes.GETFIELD, getClassEnhancer().getASMClassName(),
enhancer.getDetachedStateFieldName(), "[" + ASMUtils.CD_Object);
@@ -126,4 +129,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetViaCheck.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetViaCheck.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetViaCheck.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -127,6 +127,7 @@
ASMUtils.addReturnForType(visitor, fmd.getType());
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
Label l4 = new Label();
if (enhancer.getClassMetaData().isDetachable())
@@ -175,6 +176,8 @@
}
visitor.visitLabel(l4);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitFieldInsn(Opcodes.GETFIELD, getClassEnhancer().getASMClassName(), fmd.getName(), fieldTypeDesc);
ASMUtils.addReturnForType(visitor, fmd.getType());
@@ -186,4 +189,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetViaMediate.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetViaMediate.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoGetViaMediate.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -126,6 +126,7 @@
ASMUtils.addReturnForType(visitor, fmd.getType());
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
Label l4 = new Label();
if (enhancer.getClassMetaData().isDetachable())
@@ -188,6 +189,8 @@
}
visitor.visitLabel(l4);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitFieldInsn(Opcodes.GETFIELD, getClassEnhancer().getASMClassName(), fmd.getName(), fieldTypeDesc);
ASMUtils.addReturnForType(visitor, fmd.getType());
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoIsDetached.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoIsDetached.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoIsDetached.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -85,9 +85,11 @@
visitor.visitFieldInsn(Opcodes.GETFIELD, getClassEnhancer().getASMClassName(),
enhancer.getDetachedStateFieldName(), "[Ljava/lang/Object;");
visitor.visitJumpInsn(Opcodes.IFNULL, l1);
+
visitor.visitInsn(Opcodes.ICONST_1);
visitor.visitInsn(Opcodes.IRETURN);
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
}
visitor.visitInsn(Opcodes.ICONST_0);
@@ -98,4 +100,4 @@
visitor.visitMaxs(1, 1);
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoIsDirty.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoIsDirty.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoIsDirty.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -98,6 +98,7 @@
"isDirty", "(" + enhancer.getPersistableDescriptor() + ")Z");
visitor.visitInsn(Opcodes.IRETURN);
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
if (!detachable)
{
@@ -114,6 +115,8 @@
visitor.visitInsn(Opcodes.ICONST_0);
visitor.visitInsn(Opcodes.IRETURN);
visitor.visitLabel(l3);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitFieldInsn(Opcodes.GETFIELD, getClassEnhancer().getASMClassName(),
enhancer.getDetachedStateFieldName(), "[" + ASMUtils.CD_Object);
@@ -127,6 +130,8 @@
visitor.visitInsn(Opcodes.IRETURN);
visitor.visitLabel(l5);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitInsn(Opcodes.ICONST_1);
visitor.visitInsn(Opcodes.IRETURN);
}
@@ -138,4 +143,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoIsXXX.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoIsXXX.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoIsXXX.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -77,8 +77,12 @@
Label l2 = new Label();
visitor.visitJumpInsn(Opcodes.GOTO, l2);
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitInsn(Opcodes.ICONST_0);
visitor.visitLabel(l2);
+ visitor.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] {Opcodes.INTEGER});
+
visitor.visitInsn(Opcodes.IRETURN);
Label l3 = new Label();
@@ -88,4 +92,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoMakeDirty.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoMakeDirty.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoMakeDirty.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -49,7 +49,6 @@
* break;
* }
* }
- * super.jdoMakeDirty(fieldName);
* }
* }
* </pre>
@@ -98,6 +97,7 @@
Label startLabel = new Label();
visitor.visitLabel(startLabel);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitFieldInsn(Opcodes.GETFIELD, getClassEnhancer().getASMClassName(),
enhancer.getStateManagerFieldName(), enhancer.getStateManagerDescriptor());
@@ -112,6 +112,7 @@
visitor.visitMethodInsn(Opcodes.INVOKEINTERFACE, enhancer.getStateManagerAsmClassName(),
"makeDirty", "(" + enhancer.getPersistableDescriptor() + "Ljava/lang/String;" + ")V");
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
if (cmd.isDetachable())
{
@@ -146,9 +147,11 @@
visitor.visitJumpInsn(Opcodes.GOTO, l8);
visitor.visitLabel(l6);
+ visitor.visitFrame(Opcodes.F_APPEND,1, new Object[] {"java/lang/String"}, 0, null);
visitor.visitVarInsn(Opcodes.ALOAD, 1);
visitor.visitVarInsn(Opcodes.ASTORE, 2);
visitor.visitLabel(l8);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
visitor.visitInsn(Opcodes.ICONST_0);
visitor.visitVarInsn(Opcodes.ISTORE, 3);
Label l9 = new Label();
@@ -158,6 +161,7 @@
Label l11 = new Label();
visitor.visitLabel(l11);
+ visitor.visitFrame(Opcodes.F_APPEND,1, new Object[] {Opcodes.INTEGER}, 0, null);
visitor.visitFieldInsn(Opcodes.GETSTATIC, getClassEnhancer().getASMClassName(),
enhancer.getFieldNamesFieldName(), "[Ljava/lang/String;");
visitor.visitVarInsn(Opcodes.ILOAD, 3);
@@ -192,12 +196,12 @@
enhancer.getInheritedFieldCountFieldName(), "I");
visitor.visitInsn(Opcodes.IADD);
visitor.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/util/BitSet", "set", "(I)V");
- Label l16 = new Label();
- visitor.visitJumpInsn(Opcodes.GOTO, l16);
+ visitor.visitJumpInsn(Opcodes.GOTO, l3);
visitor.visitLabel(l14);
if (enhancer.hasOption(ClassEnhancer.OPTION_GENERATE_DETACH_LISTENER))
{
+ // TODO Check this bytecode
visitor.visitMethodInsn(Opcodes.INVOKESTATIC, "org/datanucleus/util/DetachListener",
"getInstance", "()Lorg/datanucleus/util/DetachListener;");
visitor.visitVarInsn(Opcodes.ALOAD, 0);
@@ -207,6 +211,7 @@
}
else
{
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
visitor.visitTypeInsn(Opcodes.NEW, enhancer.getDetachedFieldAccessExceptionAsmClassName());
visitor.visitInsn(Opcodes.DUP);
visitor.visitLdcInsn("You have just attempted to access a field/property that hasn't been detached. Please detach it first before performing this operation");
@@ -215,11 +220,11 @@
visitor.visitInsn(Opcodes.ATHROW);
}
- visitor.visitLabel(l16);
- visitor.visitInsn(Opcodes.RETURN);
visitor.visitLabel(l12);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
visitor.visitIincInsn(3, 1);
visitor.visitLabel(l10);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
visitor.visitVarInsn(Opcodes.ILOAD, 3);
visitor.visitFieldInsn(Opcodes.GETSTATIC, getClassEnhancer().getASMClassName(),
enhancer.getFieldNamesFieldName(), "[Ljava/lang/String;");
@@ -237,6 +242,7 @@
enhancer.getMakeDirtyMethodName(), "(Ljava/lang/String;)V");
}
+ visitor.visitFrame(Opcodes.F_CHOP,2, null, 0, null);
visitor.visitInsn(Opcodes.RETURN);
Label endLabel = new Label();
@@ -249,6 +255,7 @@
}
else
{
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
visitor.visitInsn(Opcodes.RETURN);
Label endLabel = new Label();
visitor.visitLabel(endLabel);
@@ -259,4 +266,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoNewObjectIdInstance2.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoNewObjectIdInstance2.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoNewObjectIdInstance2.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -129,6 +129,8 @@
// Object constructor : "if (key instanceof String != true) return new XXXIdentity(this.getClass(), key);"
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 1);
visitor.visitTypeInsn(Opcodes.INSTANCEOF, "java/lang/String");
Label l3 = new Label();
@@ -157,6 +159,8 @@
// String constructor : "return new XXXIdentity(this.getClass(), (String) key);"
visitor.visitLabel(l3);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitTypeInsn(Opcodes.NEW, ACN_objectIdClass);
visitor.visitInsn(Opcodes.DUP);
visitor.visitVarInsn(Opcodes.ALOAD, 0);
@@ -210,4 +214,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoPreSerialize.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoPreSerialize.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoPreSerialize.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -77,6 +77,8 @@
visitor.visitMethodInsn(Opcodes.INVOKEINTERFACE, enhancer.getStateManagerAsmClassName(),
"preSerialize", "(" + enhancer.getPersistableDescriptor()+ ")V");
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitInsn(Opcodes.RETURN);
Label l3 = new Label();
@@ -86,4 +88,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoProvideField.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoProvideField.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoProvideField.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -115,6 +115,8 @@
visitor.visitInsn(Opcodes.ATHROW);
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ILOAD, 1);
visitor.visitFieldInsn(Opcodes.GETSTATIC, getClassEnhancer().getASMClassName(),
enhancer.getInheritedFieldCountFieldName(), "I");
@@ -134,6 +136,8 @@
for (int i=0;i<fields.length;i++)
{
visitor.visitLabel(fieldOptions[i]);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitFieldInsn(Opcodes.GETFIELD, getClassEnhancer().getASMClassName(),
enhancer.getStateManagerFieldName(), enhancer.getStateManagerDescriptor());
@@ -160,6 +164,8 @@
// default:
visitor.visitLabel(defaultLabel);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitVarInsn(Opcodes.ILOAD, 1);
visitor.visitMethodInsn(Opcodes.INVOKESPECIAL, pcSuperclassName.replace('.', '/'),
@@ -207,6 +213,8 @@
visitor.visitInsn(Opcodes.ATHROW);
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ILOAD, 1);
Label[] fieldOptions = new Label[fields.length];
@@ -223,6 +231,8 @@
for (int i=0;i<fields.length;i++)
{
visitor.visitLabel(fieldOptions[i]);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitFieldInsn(Opcodes.GETFIELD, getClassEnhancer().getASMClassName(),
enhancer.getStateManagerFieldName(), enhancer.getStateManagerDescriptor());
@@ -249,6 +259,8 @@
// default:
visitor.visitLabel(defaultLabel);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitTypeInsn(Opcodes.NEW, "java/lang/IllegalArgumentException");
visitor.visitInsn(Opcodes.DUP);
visitor.visitTypeInsn(Opcodes.NEW, "java/lang/StringBuffer");
@@ -263,6 +275,7 @@
// End of switch
visitor.visitLabel(endSwitchLabel);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
visitor.visitInsn(Opcodes.RETURN);
Label l7 = new Label();
@@ -285,4 +298,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoProvideFields.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoProvideFields.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoProvideFields.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -83,6 +83,8 @@
visitor.visitInsn(Opcodes.ATHROW);
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 1);
visitor.visitInsn(Opcodes.ARRAYLENGTH);
visitor.visitInsn(Opcodes.ICONST_1);
@@ -95,6 +97,8 @@
visitor.visitJumpInsn(Opcodes.IFLT, l4);
Label l5 = new Label();
visitor.visitLabel(l5);
+ visitor.visitFrame(Opcodes.F_APPEND,1, new Object[] {Opcodes.INTEGER}, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitVarInsn(Opcodes.ALOAD, 1);
visitor.visitVarInsn(Opcodes.ILOAD, 2);
@@ -105,6 +109,8 @@
visitor.visitVarInsn(Opcodes.ILOAD, 2);
visitor.visitJumpInsn(Opcodes.IFGE, l5);
visitor.visitLabel(l4);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitInsn(Opcodes.RETURN);
Label l7 = new Label();
@@ -116,4 +122,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceDetachedState.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceDetachedState.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceDetachedState.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -80,6 +80,7 @@
visitor.visitInsn(Opcodes.ATHROW);
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitVarInsn(Opcodes.ALOAD, 0);
@@ -102,4 +103,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceField.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceField.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceField.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -119,6 +119,8 @@
visitor.visitInsn(Opcodes.ATHROW);
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ILOAD, 1);
visitor.visitFieldInsn(Opcodes.GETSTATIC, getClassEnhancer().getASMClassName(),
enhancer.getInheritedFieldCountFieldName(), "I");
@@ -138,6 +140,8 @@
for (int i=0;i<fields.length;i++)
{
visitor.visitLabel(fieldOptions[i]);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitFieldInsn(Opcodes.GETFIELD, getClassEnhancer().getASMClassName(),
@@ -217,6 +221,8 @@
visitor.visitInsn(Opcodes.ATHROW);
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ILOAD, 1);
Label[] fieldOptions = new Label[fields.length];
@@ -233,6 +239,8 @@
for (int i=0;i<fields.length;i++)
{
visitor.visitLabel(fieldOptions[i]);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitFieldInsn(Opcodes.GETFIELD, getClassEnhancer().getASMClassName(),
@@ -265,6 +273,7 @@
// default:
visitor.visitLabel(defaultLabel);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
visitor.visitTypeInsn(Opcodes.NEW, "java/lang/IllegalArgumentException");
visitor.visitInsn(Opcodes.DUP);
visitor.visitTypeInsn(Opcodes.NEW, "java/lang/StringBuffer");
@@ -279,6 +288,8 @@
// End of switch
visitor.visitLabel(endSwitchLabel);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitInsn(Opcodes.RETURN);
Label endLabel = new Label();
@@ -301,4 +312,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceFields.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceFields.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceFields.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -84,6 +84,8 @@
visitor.visitInsn(Opcodes.ATHROW);
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 1);
visitor.visitInsn(Opcodes.ARRAYLENGTH);
visitor.visitVarInsn(Opcodes.ISTORE, 2);
@@ -96,6 +98,8 @@
visitor.visitVarInsn(Opcodes.ISTORE, 3);
Label l6 = new Label();
visitor.visitLabel(l6);
+ visitor.visitFrame(Opcodes.F_APPEND,2, new Object[] {Opcodes.INTEGER, Opcodes.INTEGER}, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitVarInsn(Opcodes.ALOAD, 1);
visitor.visitVarInsn(Opcodes.ILOAD, 3);
@@ -107,6 +111,7 @@
visitor.visitVarInsn(Opcodes.ILOAD, 2);
visitor.visitJumpInsn(Opcodes.IF_ICMPLT, l6);
visitor.visitLabel(l4);
+ visitor.visitFrame(Opcodes.F_CHOP,1, null, 0, null);
visitor.visitInsn(Opcodes.RETURN);
Label l8 = new Label();
@@ -119,4 +124,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceFlags.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceFlags.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceFlags.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -83,6 +83,8 @@
visitor.visitFieldInsn(Opcodes.PUTFIELD, getClassEnhancer().getASMClassName(), enhancer.getFlagsFieldName(), "B");
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitInsn(Opcodes.RETURN);
Label endLabel = new Label();
@@ -92,4 +94,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceStateManager.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceStateManager.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoReplaceStateManager.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -94,6 +94,8 @@
visitor.visitJumpInsn(Opcodes.GOTO, l3);
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 1);
visitor.visitMethodInsn(Opcodes.INVOKESTATIC, enhancer.getImplHelperAsmClassName(),
"checkAuthorizedStateManager", "(L" + enhancer.getStateManagerAsmClassName() + ";)V");
@@ -105,6 +107,8 @@
visitor.visitInsn(Opcodes.ICONST_1);
visitor.visitFieldInsn(Opcodes.PUTFIELD, getClassEnhancer().getASMClassName(), enhancer.getFlagsFieldName(), "B");
visitor.visitLabel(l3);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitInsn(Opcodes.RETURN);
Label endLabel = new Label();
@@ -115,4 +119,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoSetViaCheck.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoSetViaCheck.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoSetViaCheck.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -116,6 +116,8 @@
// "objPC.text = val;"
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
ASMUtils.addLoadForType(visitor, fmd.getType(), 1);
visitor.visitFieldInsn(Opcodes.PUTFIELD, getClassEnhancer().getASMClassName(),
@@ -145,6 +147,7 @@
}
visitor.visitLabel(l3);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
visitor.visitInsn(Opcodes.RETURN);
Label endLabel = new Label();
@@ -155,4 +158,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoSetViaMediate.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoSetViaMediate.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/JdoSetViaMediate.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -90,6 +90,8 @@
// "else objPC.jdoStateManager.setYYYField(objPC, 0, objPC.ZZZ, zzz);"
visitor.visitLabel(l1);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
+
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitFieldInsn(Opcodes.GETFIELD, getClassEnhancer().getASMClassName(),
enhancer.getStateManagerFieldName(), "L" + enhancer.getStateManagerAsmClassName() + ";");
@@ -114,6 +116,7 @@
visitor.visitMethodInsn(Opcodes.INVOKEINTERFACE, enhancer.getStateManagerAsmClassName(),
jdoMethodName, "(L" + enhancer.getPersistableAsmClassName() + ";I" + argTypeDesc + argTypeDesc + ")V");
visitor.visitLabel(l3);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
if (enhancer.getClassMetaData().isDetachable())
{
@@ -140,6 +143,7 @@
}
visitor.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/util/BitSet", "set", "(I)V");
visitor.visitLabel(l6);
+ visitor.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
}
visitor.visitInsn(Opcodes.RETURN);
@@ -151,4 +155,4 @@
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
Modified: platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/LoadClass.java
===================================================================
--- platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/LoadClass.java 2012-06-12 15:27:57 UTC (rev 14831)
+++ platform/enhancer/trunk/src/java/org/datanucleus/enhancer/asm/method/LoadClass.java 2012-06-13 07:53:48 UTC (rev 14832)
@@ -63,14 +63,11 @@
visitor.visitLabel(l0);
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Class", "forName", "(Ljava/lang/String;)Ljava/lang/Class;");
-/* visitor.visitInsn(Opcodes.ICONST_0);
- visitor.visitLdcInsn(Type.getType( getClassEnhancer().getClassDescriptor()));
- visitor.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Class", "getClassLoader", "()Ljava/lang/ClassLoader;");
- visitor.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Class", "forName", "(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;");*/
visitor.visitLabel(l1);
visitor.visitInsn(Opcodes.ARETURN);
visitor.visitLabel(l2);
- visitor.visitLineNumber(8, l2);
+ visitor.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] {"java/lang/ClassNotFoundException"});
+
visitor.visitVarInsn(Opcodes.ASTORE, 1);
Label l3 = new Label();
visitor.visitLabel(l3);
@@ -88,4 +85,4 @@
visitor.visitMaxs(3, 2);
visitor.visitEnd();
}
-}
\ No newline at end of file
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|