예제 #1
0
파일: AsmUtil.java 프로젝트: bashor/kotlin
  public static StackValue genEqualsForExpressionsOnStack(
      InstructionAdapter v, IElementType opToken, Type leftType, Type rightType) {
    if ((isNumberPrimitive(leftType) || leftType.getSort() == Type.BOOLEAN)
        && leftType == rightType) {
      return StackValue.cmp(opToken, leftType);
    } else {
      if (opToken == JetTokens.EQEQEQ || opToken == JetTokens.EXCLEQEQEQ) {
        return StackValue.cmp(opToken, leftType);
      } else {
        v.invokestatic(
            "jet/runtime/Intrinsics", "areEqual", "(Ljava/lang/Object;Ljava/lang/Object;)Z");

        if (opToken == JetTokens.EXCLEQ || opToken == JetTokens.EXCLEQEQEQ) {
          genInvertBoolean(v);
        }

        return StackValue.onStack(Type.BOOLEAN_TYPE);
      }
    }
  }