001 package railo.transformer.bytecode.statement; 002 003 import java.io.PrintStream; 004 005 import org.objectweb.asm.Type; 006 import org.objectweb.asm.commons.GeneratorAdapter; 007 import org.objectweb.asm.commons.Method; 008 009 import railo.transformer.bytecode.BytecodeContext; 010 import railo.transformer.bytecode.BytecodeException; 011 import railo.transformer.bytecode.Position; 012 import railo.transformer.bytecode.expression.Expression; 013 import railo.transformer.bytecode.util.Types; 014 015 public final class SystemOut extends StatementBaseNoFinal { 016 017 018 // void println (Object) 019 private final static Method METHOD_PRINTLN = new Method("println", 020 Types.VOID, 021 new Type[]{Types.OBJECT}); 022 023 Expression expr; 024 025 /** 026 * constructor of the class 027 * @param expr 028 * @param line 029 */ 030 public SystemOut(Expression expr, Position start,Position end) { 031 super(start,end); 032 this.expr=expr; 033 } 034 035 /** 036 * @see railo.transformer.bytecode.statement.StatementBase#_writeOut(org.objectweb.asm.commons.GeneratorAdapter) 037 */ 038 public void _writeOut(BytecodeContext bc) throws BytecodeException { 039 GeneratorAdapter adapter = bc.getAdapter(); 040 adapter.getStatic(Type.getType(System.class),"out",Type.getType(PrintStream.class)); 041 expr.writeOut(bc,Expression.MODE_REF); 042 adapter.invokeVirtual(Type.getType(PrintStream.class),METHOD_PRINTLN); 043 } 044 }