001 package railo.transformer.bytecode.statement.tag; 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.expression.Expression; 010 import railo.transformer.bytecode.util.Types; 011 012 public final class TagInclude extends TagBase { 013 014 015 private final static Method DO_INCLUDE = new Method("doInclude",Type.VOID_TYPE,new Type[]{Types.STRING}); 016 017 018 /** 019 * Constructor of the class 020 * @param line 021 */ 022 public TagInclude(int line) { 023 super(line); 024 } 025 public TagInclude(int sl,int el) { 026 super(sl,el); 027 } 028 029 /** 030 * @see railo.transformer.bytecode.statement.tag.TagBase#_writeOut(org.objectweb.asm.commons.GeneratorAdapter) 031 */ 032 public void _writeOut(BytecodeContext bc) throws BytecodeException { 033 GeneratorAdapter adapter = bc.getAdapter(); 034 adapter.loadArg(0); 035 getAttribute("template").getValue().writeOut(bc, Expression.MODE_REF); 036 adapter.invokeVirtual(Types.PAGE_CONTEXT,DO_INCLUDE); 037 } 038 }