001 package railo.transformer.bytecode.statement; 002 003 import org.objectweb.asm.Type; 004 import org.objectweb.asm.commons.GeneratorAdapter; 005 import org.objectweb.asm.commons.Method; 006 007 import railo.transformer.bytecode.BytecodeContext; 008 import railo.transformer.bytecode.BytecodeException; 009 import railo.transformer.bytecode.Position; 010 import railo.transformer.bytecode.util.Types; 011 012 public final class Abort extends StatementBaseNoFinal { 013 014 private static final Type ABORT = Type.getType(railo.runtime.exp.Abort.class); 015 016 // ExpressionException newInstance(int) 017 private static final Method NEW_INSTANCE = new Method( 018 "newInstance", 019 ABORT, 020 new Type[]{Types.INT_VALUE}); 021 022 023 public Abort(Position start, Position end) { 024 super(start,end); 025 } 026 027 /** 028 * 029 * @see railo.transformer.bytecode.statement.StatementBase#_writeOut(railo.transformer.bytecode.BytecodeContext) 030 */ 031 public void _writeOut(BytecodeContext bc) throws BytecodeException { 032 GeneratorAdapter adapter = bc.getAdapter(); 033 adapter.push(railo.runtime.exp.Abort.SCOPE_PAGE); 034 adapter.invokeStatic(ABORT, NEW_INSTANCE); 035 adapter.throwException(); 036 037 } 038 }