/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.internal.gosu.ir.compiler.bytecode.expression;
import gw.internal.gosu.ir.compiler.bytecode.AbstractBytecodeCompiler;
import gw.internal.gosu.ir.compiler.bytecode.IRBytecodeContext;
import gw.internal.gosu.ir.compiler.bytecode.IRBytecodeCompiler;
import gw.lang.ir.expression.IRNewMultiDimensionalArrayExpression;
import gw.lang.ir.IRType;
import gw.lang.ir.IRExpression;
import gw.internal.ext.org.objectweb.asm.MethodVisitor;
import java.util.List;
public class IRNewMultiDimensionalArrayExpressionCompiler extends AbstractBytecodeCompiler {
public static void compile( IRNewMultiDimensionalArrayExpression expression, IRBytecodeContext context ) {
List<IRExpression> dims = expression.getSizeExpressions();
for (IRExpression dim : dims) {
IRBytecodeCompiler.compileIRElement(dim, context);
}
MethodVisitor mv = context.getMv();
mv.visitMultiANewArrayInsn(getTypeForNewArray(expression.getType()), dims.size());
}
private static String getTypeForNewArray( IRType atomicType )
{
return atomicType.isArray()
? atomicType.getDescriptor()
: atomicType.getSlashName();
}
}