Example usage for org.objectweb.asm.commons InstructionAdapter invokestatic

List of usage examples for org.objectweb.asm.commons InstructionAdapter invokestatic

Introduction

In this page you can find the example usage for org.objectweb.asm.commons InstructionAdapter invokestatic.

Prototype

@Deprecated
public void invokestatic(final String owner, final String name, final String descriptor) 

Source Link

Document

Deprecated.

Usage

From source file:org.jetbrains.jet.codegen.intrinsics.Sure.java

License:Apache License

@Override
public StackValue generate(ExpressionCodegen codegen, InstructionAdapter v, Type expectedType,
        PsiElement element, List<JetExpression> arguments, StackValue receiver) {
    JetCallExpression call = (JetCallExpression) element;
    ResolvedCall<? extends CallableDescriptor> resolvedCall = codegen.getBindingContext()
            .get(BindingContext.RESOLVED_CALL, call.getCalleeExpression());
    assert resolvedCall != null;
    if (resolvedCall.getReceiverArgument().getType().isNullable()) {
        receiver.put(receiver.type, v);/*from   w w w  . java2s.  c o  m*/
        v.dup();
        Label ok = new Label();
        v.ifnonnull(ok);
        v.invokestatic("jet/runtime/Intrinsics", "throwNpe", "()V");
        v.mark(ok);
        StackValue.onStack(receiver.type).put(expectedType, v);
    } else {
        codegen.generateFromResolvedCall(resolvedCall.getReceiverArgument(), expectedType);
    }
    return StackValue.onStack(expectedType);
}

From source file:org.jetbrains.jet.codegen.intrinsics.UpTo.java

License:Apache License

@Override
public StackValue generate(ExpressionCodegen codegen, InstructionAdapter v, Type expectedType,
        PsiElement element, List<JetExpression> arguments, StackValue receiver) {
    if (arguments.size() == 1) {
        final Type leftType = receiver.type;
        final Type rightType = codegen.expressionType(arguments.get(0));
        receiver.put(Type.INT_TYPE, v);
        codegen.gen(arguments.get(0), rightType);
        v.invokestatic("jet/runtime/Ranges", forward ? "upTo" : "downTo", "(" + receiver.type.getDescriptor()
                + leftType.getDescriptor() + ")" + expectedType.getDescriptor());
        return StackValue.onStack(expectedType);
    } else {//from ww w.  ja  v  a 2s .  c  o  m
        JetBinaryExpression expression = (JetBinaryExpression) element;
        final Type leftType = codegen.expressionType(expression.getLeft());
        final Type rightType = codegen.expressionType(expression.getRight());
        //            if (JetTypeMapper.isIntPrimitive(leftType)) {
        codegen.gen(expression.getLeft(), leftType);
        codegen.gen(expression.getRight(), rightType);
        v.invokestatic("jet/runtime/Ranges", forward ? "upTo" : "downTo", "(" + leftType.getDescriptor()
                + rightType.getDescriptor() + ")" + expectedType.getDescriptor());
        return StackValue.onStack(expectedType);
        //            }
        //            else {
        //                throw new UnsupportedOperationException("ranges are only supported for int objects");
        //            }
    }
}