final class com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray extends com.fasterxml.jackson.core.io.doubleparser.AbstractNumberParser
{
public static final int MAX_INPUT_LENGTH;
private static final int MANY_DIGITS_THRESHOLD;
private static final int MAX_DIGIT_COUNT;
private static final long MAX_EXPONENT_NUMBER;
public void <init>()
{
com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray v;
v := @this: com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray;
specialinvoke v.<com.fasterxml.jackson.core.io.doubleparser.AbstractNumberParser: void <init>()>();
return;
}
public java.math.BigDecimal parseBigDecimalString(char[], int, int)
{
java.math.BigDecimal v, v, v, v;
byte v, v, v;
java.lang.ArithmeticException v;
boolean v, v, v, v, v, v, v, v, v, v, v, v;
com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray v;
long v, v, v, v, v, v, v, v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
char v, v, v;
java.lang.NumberFormatException v, v, v, v;
char[] v;
v := @this: com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray;
v := @parameter: char[];
v := @parameter: int;
v := @parameter: int;
label:
if v < 32 goto label;
v = virtualinvoke v.<com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray: java.math.BigDecimal parseBigDecimalStringWithManyDigits(char[],int,int)>(v, v, v);
label:
return v;
label:
v = 0L;
v = (int) -1;
v = v;
v = v + v;
v = v;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray: char charAt(char[],int,int)>(v, v, v);
v = 0;
if v != 45 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
if v != 0 goto label;
if v != 43 goto label;
label:
v = v + 1;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray: char charAt(char[],int,int)>(v, v, v);
if v != 0 goto label;
v = new java.lang.NumberFormatException;
specialinvoke v.<java.lang.NumberFormatException: void <init>(java.lang.String)>("illegal syntax");
throw v;
label:
v = v;
label:
if v >= v goto label;
v = v[v];
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FastDoubleSwar: boolean isDigit(char)>(v);
if v == 0 goto label;
v = 10L * v;
v = v + v;
v = v - 48L;
goto label;
label:
if v != 46 goto label;
v = v;
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v | v;
v = v;
label:
v = v - 4;
if v >= v goto label;
v = v + 1;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FastDoubleSwar: int tryToParseFourDigits(char[],int)>(v, v);
if v < 0 goto label;
v = 10000L * v;
v = v + v;
v = v + 4;
goto label;
label:
v = v + 1;
goto label;
label:
if v >= 0 goto label;
v = v - v;
v = v;
goto label;
label:
v = v - v;
v = v - 1;
v = v - v;
v = v + 1;
label:
v = 0L;
v = v | 32;
if v != 101 goto label;
v = v;
v = v + 1;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray: char charAt(char[],int,int)>(v, v, v);
if v != 45 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
if v != 0 goto label;
if v != 43 goto label;
label:
v = v + 1;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray: char charAt(char[],int,int)>(v, v, v);
label:
v = v;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FastDoubleSwar: boolean isDigit(char)>(v);
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v | v;
label:
v = v cmp 2147483647L;
if v >= 0 goto label;
v = 10L * v;
v = v + v;
v = v - 48L;
label:
v = v + 1;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray: char charAt(char[],int,int)>(v, v, v);
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FastDoubleSwar: boolean isDigit(char)>(v);
if v != 0 goto label;
if v == 0 goto label;
v = neg v;
label:
v = v + v;
goto label;
label:
v = v;
label:
if v != 0 goto label;
if v < v goto label;
if v == 0 goto label;
if v <= 1292782621 goto label;
label:
v = new java.lang.NumberFormatException;
specialinvoke v.<java.lang.NumberFormatException: void <init>(java.lang.String)>("illegal syntax");
throw v;
label:
v = v cmp -2147483648L;
if v <= 0 goto label;
v = v cmp 2147483647L;
if v <= 0 goto label;
label:
v = new java.lang.NumberFormatException;
specialinvoke v.<java.lang.NumberFormatException: void <init>(java.lang.String)>("value exceeds limits");
throw v;
label:
if v > 18 goto label;
v = new java.math.BigDecimal;
if v == 0 goto label;
v = neg v;
goto label;
label:
v = v;
label:
specialinvoke v.<java.math.BigDecimal: void <init>(long)>(v);
v = virtualinvoke v.<java.math.BigDecimal: java.math.BigDecimal scaleByPowerOfTen(int)>(0L);
label:
return v;
label:
v = v + 1;
v = specialinvoke v.<com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray: java.math.BigDecimal valueOfBigDecimalString(char[],int,int,int,int,boolean,int)>(v, v, v, v, v, v, 0L);
label:
return v;
label:
v := @caughtexception;
v = new java.lang.NumberFormatException;
specialinvoke v.<java.lang.NumberFormatException: void <init>(java.lang.String)>("value exceeds limits");
virtualinvoke v.<java.lang.NumberFormatException: java.lang.Throwable initCause(java.lang.Throwable)>(v);
throw v;
catch java.lang.ArithmeticException from label to label with label;
catch java.lang.ArithmeticException from label to label with label;
catch java.lang.ArithmeticException from label to label with label;
}
java.math.BigDecimal parseBigDecimalStringWithManyDigits(char[], int, int)
{
java.math.BigDecimal v;
byte v, v, v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v, v;
com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray v;
long v, v, v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
char v, v, v, v, v, v, v;
java.lang.NumberFormatException v, v, v, v, v;
char[] v;
v := @this: com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray;
v := @parameter: char[];
v := @parameter: int;
v := @parameter: int;
if v <= 1292782635 goto label;
v = new java.lang.NumberFormatException;
specialinvoke v.<java.lang.NumberFormatException: void <init>(java.lang.String)>("illegal syntax");
throw v;
label:
v = (int) -1;
v = v;
v = (int) -1;
v = v;
v = v + v;
v = v;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray: char charAt(char[],int,int)>(v, v, v);
v = 0;
if v != 45 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
if v != 0 goto label;
if v != 43 goto label;
label:
v = v + 1;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray: char charAt(char[],int,int)>(v, v, v);
if v != 0 goto label;
v = new java.lang.NumberFormatException;
specialinvoke v.<java.lang.NumberFormatException: void <init>(java.lang.String)>("illegal syntax");
throw v;
label:
v = v;
v = v - 8;
v = staticinvoke <java.lang.Math: int min(int,int)>(v, 1073741824);
label:
if v >= v goto label;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FastDoubleSwar: boolean isEightZeroes(char[],int)>(v, v);
if v == 0 goto label;
v = v + 8;
goto label;
label:
if v >= v goto label;
v = v[v];
if v != 48 goto label;
v = v + 1;
goto label;
label:
v = v;
label:
if v >= v goto label;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FastDoubleSwar: boolean isEightDigits(char[],int)>(v, v);
if v == 0 goto label;
v = v + 8;
goto label;
label:
if v >= v goto label;
v = v[v];
v = v;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FastDoubleSwar: boolean isDigit(char)>(v);
if v == 0 goto label;
v = v + 1;
goto label;
label:
if v != 46 goto label;
v = v;
v = v + 1;
v = v;
label:
if v >= v goto label;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FastDoubleSwar: boolean isEightZeroes(char[],int)>(v, v);
if v == 0 goto label;
v = v + 8;
goto label;
label:
if v >= v goto label;
v = v[v];
if v != 48 goto label;
v = v + 1;
goto label;
label:
v = v;
label:
if v >= v goto label;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FastDoubleSwar: boolean isEightDigits(char[],int)>(v, v);
if v == 0 goto label;
v = v + 8;
goto label;
label:
if v >= v goto label;
v = v[v];
v = v;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FastDoubleSwar: boolean isDigit(char)>(v);
if v == 0 goto label;
v = v + 1;
goto label;
label:
v = v;
if v >= 0 goto label;
v = v - v;
v = v;
v = v;
goto label;
label:
if v != v goto label;
v = v - v;
goto label;
label:
v = v - v;
v = v - 1;
label:
v = v;
v = v - v;
v = v + 1;
label:
v = 0L;
v = v | 32;
if v != 101 goto label;
v = v;
v = v + 1;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray: char charAt(char[],int,int)>(v, v, v);
if v != 45 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
if v != 0 goto label;
if v != 43 goto label;
label:
v = v + 1;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray: char charAt(char[],int,int)>(v, v, v);
label:
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FastDoubleSwar: boolean isDigit(char)>(v);
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
label:
v = v cmp 2147483647L;
if v >= 0 goto label;
v = 10L * v;
v = v + v;
v = v - 48L;
label:
v = v + 1;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray: char charAt(char[],int,int)>(v, v, v);
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FastDoubleSwar: boolean isDigit(char)>(v);
if v != 0 goto label;
if v == 0 goto label;
v = neg v;
label:
v = v + v;
goto label;
label:
v = v;
label:
if v != 0 goto label;
if v >= v goto label;
label:
v = new java.lang.NumberFormatException;
specialinvoke v.<java.lang.NumberFormatException: void <init>(java.lang.String)>("illegal syntax");
throw v;
label:
v = v - v;
if v != 0 goto label;
v = new java.lang.NumberFormatException;
specialinvoke v.<java.lang.NumberFormatException: void <init>(java.lang.String)>("illegal syntax");
throw v;
label:
v = v cmp -2147483648L;
if v < 0 goto label;
v = v cmp 2147483647L;
if v > 0 goto label;
if v <= 1292782621 goto label;
label:
v = new java.lang.NumberFormatException;
specialinvoke v.<java.lang.NumberFormatException: void <init>(java.lang.String)>("value exceeds limits");
throw v;
label:
v = specialinvoke v.<com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray: java.math.BigDecimal valueOfBigDecimalString(char[],int,int,int,int,boolean,int)>(v, v, v, v, v, v, 0L);
return v;
}
private java.math.BigDecimal valueOfBigDecimalString(char[], int, int, int, int, boolean, int)
{
java.math.BigDecimal v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.math.BigInteger v, v, v, v, v, v;
boolean v;
java.util.NavigableMap v;
com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray v;
char[] v;
v := @this: com.fasterxml.jackson.core.io.doubleparser.JavaBigDecimalFromCharArray;
v := @parameter: char[];
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v := @parameter: boolean;
v := @parameter: int;
v = v - v;
v = v - 1;
v = v - v;
v = v - v;
v = null;
if v <= 0 goto label;
if v <= 400 goto label;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FastIntegerMath: java.util.NavigableMap createPowersOfTenFloor16Map()>();
staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FastIntegerMath: void fillPowersOfNFloor16Recursive(java.util.NavigableMap,int,int)>(v, v, v);
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.ParseDigitsTaskCharArray: java.math.BigInteger parseDigitsRecursive(char[],int,int,java.util.Map)>(v, v, v, v);
goto label;
label:
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.ParseDigitsTaskCharArray: java.math.BigInteger parseDigitsRecursive(char[],int,int,java.util.Map)>(v, v, v, null);
goto label;
label:
v = <java.math.BigInteger: java.math.BigInteger ZERO>;
label:
if v <= 0 goto label;
if v <= 400 goto label;
if v != null goto label;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FastIntegerMath: java.util.NavigableMap createPowersOfTenFloor16Map()>();
label:
v = v + 1;
staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FastIntegerMath: void fillPowersOfNFloor16Recursive(java.util.NavigableMap,int,int)>(v, v, v);
v = v + 1;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.ParseDigitsTaskCharArray: java.math.BigInteger parseDigitsRecursive(char[],int,int,java.util.Map)>(v, v, v, v);
goto label;
label:
v = v + 1;
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.ParseDigitsTaskCharArray: java.math.BigInteger parseDigitsRecursive(char[],int,int,java.util.Map)>(v, v, v, null);
label:
v = virtualinvoke v.<java.math.BigInteger: int signum()>();
if v != 0 goto label;
v = v;
goto label;
label:
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FastIntegerMath: java.math.BigInteger computePowerOfTen(java.util.NavigableMap,int)>(v, v);
v = staticinvoke <com.fasterxml.jackson.core.io.doubleparser.FftMultiplier: java.math.BigInteger multiply(java.math.BigInteger,java.math.BigInteger)>(v, v);
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger add(java.math.BigInteger)>(v);
goto label;
label:
v = v;
label:
v = new java.math.BigDecimal;
if v == 0 goto label;
v = virtualinvoke v.<java.math.BigInteger: java.math.BigInteger negate()>();
goto label;
label:
v = v;
label:
v = neg v;
specialinvoke v.<java.math.BigDecimal: void <init>(java.math.BigInteger,int)>(v, v);
return v;
}
}