git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@704 30ef5769-5b8d-40dd-aea6-55b5d6557bb3tags/log
<h1>Javassist version 3</h1> | <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> | <p><br></p> | ||||
<p>-version 3.18 | <p>-version 3.18 | ||||
<ul> | <ul> | ||||
JIRA JASSIST-183, 184, 189, 162, 186, 190. | |||||
JIRA JASSIST-183, 184, 189, 162, 185, 186, 190. | |||||
</ul> | </ul> | ||||
<p>-version 3.17.1 on December 3, 2012 | <p>-version 3.17.1 on December 3, 2012 |
ca.insertLocalVar(where, size); | ca.insertLocalVar(where, size); | ||||
LocalVariableAttribute va | LocalVariableAttribute va | ||||
= (LocalVariableAttribute) | |||||
ca.getAttribute(LocalVariableAttribute.tag); | |||||
= (LocalVariableAttribute)ca.getAttribute(LocalVariableAttribute.tag); | |||||
if (va != null) | if (va != null) | ||||
va.shiftIndex(where, size); | 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); | StackMapTable smt = (StackMapTable)ca.getAttribute(StackMapTable.tag); | ||||
if (smt != null) | if (smt != null) | ||||
smt.insertLocal(where, StackMapTable.typeTagOf(typeDesc), classInfo); | smt.insertLocal(where, StackMapTable.typeTagOf(typeDesc), classInfo); |
* Changes the index numbers of the local variables | * Changes the index numbers of the local variables | ||||
* to append a new parameter. | * to append a new parameter. | ||||
* This method does not update <code>LocalVariableAttribute</code>, | * This method does not update <code>LocalVariableAttribute</code>, | ||||
* <code>LocalVariableTypeAttribute</code>, | |||||
* <code>StackMapTable</code>, or <code>StackMap</code>. | * <code>StackMapTable</code>, or <code>StackMap</code>. | ||||
* These attributes must be explicitly updated. | * These attributes must be explicitly updated. | ||||
* | * | ||||
* @param size the type size of the new parameter (1 or 2). | * @param size the type size of the new parameter (1 or 2). | ||||
* | * | ||||
* @see LocalVariableAttribute#shiftIndex(int, int) | * @see LocalVariableAttribute#shiftIndex(int, int) | ||||
* @see LocalVariableTypeAttribute#shiftIndex(int, int) | |||||
* @see StackMapTable#insertLocal(int, int, int) | * @see StackMapTable#insertLocal(int, int, int) | ||||
* @see StackMap#insertLocal(int, int, int) | * @see StackMap#insertLocal(int, int, int) | ||||
*/ | */ |
Object obj = make(cc.getName()); | Object obj = make(cc.getName()); | ||||
assertEquals(12, invoke(obj, "test1")); | 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()); | |||||
} | |||||
} | } |
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); | |||||
} | |||||
} |