/Users/lyon/j4p/src/javassist/convert/TransformAfter.java

1    /* 
2     * Javassist, a Java-bytecode translator toolkit. 
3     * Copyright (C) 1999-2003 Shigeru Chiba. All Rights Reserved. 
4     * 
5     * The contents of this file are subject to the Mozilla Public License Version 
6     * 1.1 (the "License"); you may not use this file except in compliance with 
7     * the License.  Alternatively, the contents of this file may be used under 
8     * the terms of the GNU Lesser General Public License Version 2.1 or later. 
9     * 
10    * Software distributed under the License is distributed on an "AS IS" basis, 
11    * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 
12    * for the specific language governing rights and limitations under the 
13    * License. 
14    */ 
15    
16   package javassist.convert; 
17    
18   import javassist.CtClass; 
19   import javassist.CtMethod; 
20   import javassist.NotFoundException; 
21   import javassist.bytecode.*; 
22   import javassist.CannotCompileException; 
23    
24   public class TransformAfter extends TransformBefore { 
25       public TransformAfter(Transformer next, 
26                             CtMethod origMethod, CtMethod afterMethod) 
27               throws NotFoundException { 
28           super(next, origMethod, afterMethod); 
29       } 
30    
31       protected int match2(int pos, CodeIterator iterator) throws BadBytecode { 
32           iterator.move(pos); 
33           iterator.insert(saveCode); 
34           iterator.insert(loadCode); 
35           int p = iterator.insertGap(3); 
36           iterator.insert(loadCode); 
37           pos = iterator.next(); 
38           iterator.writeByte(iterator.byteAt(pos), p); 
39           iterator.write16bit(iterator.u16bitAt(pos + 1), p + 1); 
40           iterator.writeByte(INVOKESTATIC, pos); 
41           iterator.write16bit(newIndex, pos + 1); 
42           iterator.move(p); 
43           return iterator.next(); 
44       } 
45   } 
46