git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@704 30ef5769-5b8d-40dd-aea6-55b5d6557bb3tags/log
@@ -7,7 +7,7 @@ | |||
<h1>Javassist version 3</h1> | |||
<h3>Copyright (C) 1999-2012 by Shigeru Chiba, All rights reserved.</h3> | |||
<h3>Copyright (C) 1999-2013 by Shigeru Chiba, All rights reserved.</h3> | |||
<p><br></p> | |||
@@ -283,7 +283,7 @@ see javassist.Dump. | |||
<p>-version 3.18 | |||
<ul> | |||
JIRA JASSIST-183, 184, 189, 162, 186, 190. | |||
JIRA JASSIST-183, 184, 189, 162, 185, 186, 190. | |||
</ul> | |||
<p>-version 3.17.1 on December 3, 2012 |
@@ -656,11 +656,15 @@ public abstract class CtBehavior extends CtMember { | |||
ca.insertLocalVar(where, size); | |||
LocalVariableAttribute va | |||
= (LocalVariableAttribute) | |||
ca.getAttribute(LocalVariableAttribute.tag); | |||
= (LocalVariableAttribute)ca.getAttribute(LocalVariableAttribute.tag); | |||
if (va != null) | |||
va.shiftIndex(where, size); | |||
LocalVariableTypeAttribute lvta | |||
= (LocalVariableTypeAttribute)ca.getAttribute(LocalVariableTypeAttribute.tag); | |||
if (lvta != null) | |||
lvta.shiftIndex(where, size); | |||
StackMapTable smt = (StackMapTable)ca.getAttribute(StackMapTable.tag); | |||
if (smt != null) | |||
smt.insertLocal(where, StackMapTable.typeTagOf(typeDesc), classInfo); |
@@ -465,6 +465,7 @@ public class CodeAttribute extends AttributeInfo implements Opcode { | |||
* Changes the index numbers of the local variables | |||
* to append a new parameter. | |||
* This method does not update <code>LocalVariableAttribute</code>, | |||
* <code>LocalVariableTypeAttribute</code>, | |||
* <code>StackMapTable</code>, or <code>StackMap</code>. | |||
* These attributes must be explicitly updated. | |||
* | |||
@@ -472,6 +473,7 @@ public class CodeAttribute extends AttributeInfo implements Opcode { | |||
* @param size the type size of the new parameter (1 or 2). | |||
* | |||
* @see LocalVariableAttribute#shiftIndex(int, int) | |||
* @see LocalVariableTypeAttribute#shiftIndex(int, int) | |||
* @see StackMapTable#insertLocal(int, int, int) | |||
* @see StackMap#insertLocal(int, int, int) | |||
*/ |
@@ -838,4 +838,12 @@ public class JvstTest4 extends JvstTestRoot { | |||
Object obj = make(cc.getName()); | |||
assertEquals(12, invoke(obj, "test1")); | |||
} | |||
public void testLocalVariableTypeTable() throws Exception { | |||
CtClass cc = sloader.get("test4.Lvtt"); | |||
CtMethod m = cc.getDeclaredMethod("run"); | |||
m.addParameter(CtClass.intType); | |||
cc.writeFile(); | |||
Object obj = make(cc.getName()); | |||
} | |||
} |
@@ -0,0 +1,11 @@ | |||
package test4; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
public class Lvtt { | |||
public void run() { | |||
List<String> s = new ArrayList<String>(); | |||
System.out.println(s); | |||
} | |||
} |