/* * Copyright 2013 Guidewire Software, Inc. */ package gw.internal.gosu.ir.compiler.bytecode.expression; import gw.internal.ext.org.objectweb.asm.MethodVisitor; import gw.internal.ext.org.objectweb.asm.Opcodes; import gw.internal.gosu.ir.compiler.bytecode.AbstractBytecodeCompiler; import gw.internal.gosu.ir.compiler.bytecode.IRBytecodeCompiler; import gw.internal.gosu.ir.compiler.bytecode.IRBytecodeContext; import gw.lang.ir.expression.IRCastExpression; public class IRCastExpressionCompiler extends AbstractBytecodeCompiler { public static void compile( IRCastExpression expression, IRBytecodeContext context ) { MethodVisitor mv = context.getMv(); IRBytecodeCompiler.compileIRExpression( expression.getRoot(), context ); if( expression.getType().isStructural() ) { return; } String name = expression.getType().isArray() ? expression.getType().getDescriptor() : expression.getType().getSlashName(); mv.visitTypeInsn( Opcodes.CHECKCAST, name ); } }