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.expression.Expression; 012 import railo.transformer.bytecode.util.Types; 013 014 public final class SystemOut extends StatementBase { 015 016 017 // void println (Object) 018 private final static Method METHOD_PRINTLN = new Method("println", 019 Types.VOID, 020 new Type[]{Types.OBJECT}); 021 022 Expression expr; 023 024 /** 025 * constructor of the class 026 * @param expr 027 * @param line 028 */ 029 public SystemOut(Expression expr, int line) { 030 super(line); 031 this.expr=expr; 032 } 033 034 /** 035 * @see railo.transformer.bytecode.statement.StatementBase#_writeOut(org.objectweb.asm.commons.GeneratorAdapter) 036 */ 037 public void _writeOut(BytecodeContext bc) throws BytecodeException { 038 GeneratorAdapter adapter = bc.getAdapter(); 039 adapter.getStatic(Type.getType(System.class),"out",Type.getType(PrintStream.class)); 040 expr.writeOut(bc,Expression.MODE_REF); 041 adapter.invokeVirtual(Type.getType(PrintStream.class),METHOD_PRINTLN); 042 } 043 }