001    package railo.transformer.bytecode.statement.tag;
002    
003    import org.objectweb.asm.Type;
004    import org.objectweb.asm.commons.Method;
005    
006    import railo.transformer.bytecode.BytecodeContext;
007    import railo.transformer.bytecode.BytecodeException;
008    import railo.transformer.bytecode.util.Types;
009    
010    public final class TagReThrow extends TagBase {
011    
012            /**
013             * Constructor of the class
014             * @param tag
015             */
016            public TagReThrow(int line) {
017                    super(line);
018            }
019            public TagReThrow(int sl,int el) {
020                    super(sl,el);
021            }
022    
023            // void throwCatch()
024            private static final Method THROW_CATCH = new Method("throwCatch",Type.VOID_TYPE,new Type[]{});
025    
026            /**
027             *
028             * @see railo.transformer.bytecode.statement.StatementBase#_writeOut(org.objectweb.asm.commons.GeneratorAdapter)
029             */
030            public void _writeOut(BytecodeContext bc) throws BytecodeException {
031                    bc.getAdapter().loadArg(0);
032                    bc.getAdapter().invokeVirtual(Types.PAGE_CONTEXT, THROW_CATCH);
033            }
034    
035    }