1 /* 2 * Javassist, a Java-bytecode translator toolkit. 3 * Copyright (C) 1999-2007 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.CtMethod; 19 import javassist.NotFoundException; 20 import javassist.bytecode.*; 21 22 public class TransformAfter extends TransformBefore { TransformAfter(Transformer next, CtMethod origMethod, CtMethod afterMethod)23 public TransformAfter(Transformer next, 24 CtMethod origMethod, CtMethod afterMethod) 25 throws NotFoundException 26 { 27 super(next, origMethod, afterMethod); 28 } 29 match2(int pos, CodeIterator iterator)30 protected int match2(int pos, CodeIterator iterator) throws BadBytecode { 31 iterator.move(pos); 32 iterator.insert(saveCode); 33 iterator.insert(loadCode); 34 int p = iterator.insertGap(3); 35 iterator.setMark(p); 36 iterator.insert(loadCode); 37 pos = iterator.next(); 38 p = iterator.getMark(); 39 iterator.writeByte(iterator.byteAt(pos), p); 40 iterator.write16bit(iterator.u16bitAt(pos + 1), p + 1); 41 iterator.writeByte(INVOKESTATIC, pos); 42 iterator.write16bit(newIndex, pos + 1); 43 iterator.move(p); 44 return iterator.next(); 45 } 46 } 47