List of usage examples for org.objectweb.asm.commons InstructionAdapter invokestatic
@Deprecated public void invokestatic(final String owner, final String name, final String descriptor)
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"); // } } }