Refactoring to remove redundant code (and for easier subclassing).
diff --git a/src/org/objectweb/asm/commons/LocalVariablesSorter.java b/src/org/objectweb/asm/commons/LocalVariablesSorter.java
index a7f33bc..e1616eb 100644
--- a/src/org/objectweb/asm/commons/LocalVariablesSorter.java
+++ b/src/org/objectweb/asm/commons/LocalVariablesSorter.java
@@ -281,8 +281,7 @@
t = type.getInternalName();
break;
}
- int local = nextLocal;
- nextLocal += type.getSize();
+ int local = newLocalMapping(type);
setLocalType(local, type);
setFrameLocal(local, t);
return local;
diff --git a/src/org/objectweb/asm/tree/InsnList.java b/src/org/objectweb/asm/tree/InsnList.java
index cba578a..e061324 100644
--- a/src/org/objectweb/asm/tree/InsnList.java
+++ b/src/org/objectweb/asm/tree/InsnList.java
@@ -236,6 +236,8 @@
* {@link InsnList}</i>.
*/
public void add(final AbstractInsnNode insn) {
+ if (insn.prev!=null||insn.next!=null) throw new IllegalStateException("already in a list 1");
+ if (insn.index != -1) throw new IllegalStateException("already in a list 2");
++size;
if (last == null) {
first = insn;
diff --git a/src/org/objectweb/asm/tree/MethodNode.java b/src/org/objectweb/asm/tree/MethodNode.java
index 0f522e4..33797ac 100644
--- a/src/org/objectweb/asm/tree/MethodNode.java
+++ b/src/org/objectweb/asm/tree/MethodNode.java
@@ -504,7 +504,7 @@
*/
protected LabelNode getLabelNode(final Label l) {
if (!(l.info instanceof LabelNode)) {
- l.info = new LabelNode(l);
+ l.info = new LabelNode();
}
return (LabelNode) l.info;
}