fix build warning and dot missing in graavlvm native mode, for issue #3587
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (11, macos-latest) (push) Waiting to run Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (11, ubuntu-24.04) (push) Waiting to run Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (11, windows-latest) (push) Waiting to run Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (17, macos-latest) (push) Waiting to run Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (17, ubuntu-24.04) (push) Waiting to run Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (17, windows-latest) (push) Waiting to run Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (21, macos-latest) (push) Waiting to run Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (21, ubuntu-24.04) (push) Waiting to run Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (21, windows-latest) (push) Waiting to run Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (8, macos-latest) (push) Waiting to run Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (8, ubuntu-24.04) (push) Waiting to run Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (8, windows-latest) (push) Waiting to run Details

This commit is contained in:
yanxutao89 2025-07-09 23:18:58 +08:00 committed by Shaojin Wen
parent 25082effb2
commit 4c4c6f4c6a
2 changed files with 7 additions and 12 deletions

View File

@ -61,7 +61,6 @@ public class IOUtils {
};
private static final short ZERO_DOT_LATIN1;
private static final int ZERO_DOT_UTF16;
static {
short[] shorts = new short[]{
@ -105,7 +104,6 @@ public class IOUtils {
DIGITS_K_64[i] = c0 + v;
}
ZERO_DOT_LATIN1 = UNSAFE.getShort(new byte[] {'0', '.'}, ARRAY_BYTE_BASE_OFFSET);
ZERO_DOT_UTF16 = UNSAFE.getInt(new char[] {'0', '.'}, ARRAY_CHAR_BASE_OFFSET);
}
private static short digitPair(int value) {
@ -343,11 +341,11 @@ public class IOUtils {
int unscaleValSize = stringSize(unscaledVal);
int insertionPoint = unscaleValSize - scale;
if (insertionPoint == 0) {
putIntUnaligned(buf, off, ZERO_DOT_UTF16);
off += 2;
buf[off++] = '0';
buf[off++] = '.';
} else if (insertionPoint < 0) {
putIntUnaligned(buf, off, ZERO_DOT_UTF16);
off += 2;
buf[off++] = '0';
buf[off++] = '.';
for (int i = 0; i < -insertionPoint; i++) {
putChar(buf, off++, '0');

View File

@ -70,22 +70,19 @@ public class JDKUtils {
static {
Unsafe unsafe;
long offset, charOffset;
try {
Field theUnsafeField = Unsafe.class.getDeclaredField("theUnsafe");
theUnsafeField.setAccessible(true);
unsafe = (Unsafe) theUnsafeField.get(null);
offset = unsafe.arrayBaseOffset(byte[].class);
charOffset = unsafe.arrayBaseOffset(char[].class);
ARRAY_BYTE_BASE_OFFSET = unsafe.arrayBaseOffset(byte[].class);
ARRAY_CHAR_BASE_OFFSET = unsafe.arrayBaseOffset(char[].class);
} catch (Throwable e) {
throw new JSONException("init unsafe error", e);
}
UNSAFE = unsafe;
ARRAY_BYTE_BASE_OFFSET = offset;
ARRAY_CHAR_BASE_OFFSET = charOffset;
if (offset == -1) {
if (ARRAY_BYTE_BASE_OFFSET == -1 || ARRAY_CHAR_BASE_OFFSET == -1) {
throw new JSONException("init JDKUtils error", initErrorLast);
}