Skip to content

Commit

Permalink
remove unused code, Unsafe is default used.
Browse files Browse the repository at this point in the history
  • Loading branch information
wenshao committed Jul 13, 2023
1 parent c25a4c7 commit 69cd533
Show file tree
Hide file tree
Showing 66 changed files with 334 additions and 1,260 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.alibaba.fastjson2.benchmark;

import com.alibaba.fastjson2.util.UnsafeUtils;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.runner.Runner;
Expand All @@ -13,6 +12,7 @@
import java.util.concurrent.TimeUnit;

import static com.alibaba.fastjson2.util.JDKUtils.STRING_CREATOR_JDK8;
import static com.alibaba.fastjson2.util.JDKUtils.UNSAFE;

public class DecodeASCIIBenchmarkJDK8 {
static byte[] utf8Bytes = new byte[128];
Expand All @@ -22,7 +22,7 @@ public class DecodeASCIIBenchmarkJDK8 {
static {
try {
Field valueField = String.class.getDeclaredField("value");
valueFieldOffset = UnsafeUtils.objectFieldOffset(valueField);
valueFieldOffset = UNSAFE.objectFieldOffset(valueField);
} catch (Throwable e) {
e.printStackTrace();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.alibaba.fastjson2.benchmark;

import com.alibaba.fastjson2.util.IOUtils;
import com.alibaba.fastjson2.util.UnsafeUtils;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.runner.Runner;
Expand All @@ -19,6 +18,7 @@
import java.util.function.BiFunction;

import static com.alibaba.fastjson2.util.JDKUtils.JVM_VERSION;
import static com.alibaba.fastjson2.util.JDKUtils.UNSAFE;

public class DecodeUTF8BenchmarkJDK17 {
static byte[] utf8Bytes = "01234567890ABCDEFGHIJKLMNOPQRSTUVWZYZabcdefghijklmnopqrstuvwzyz"
Expand All @@ -29,7 +29,7 @@ public class DecodeUTF8BenchmarkJDK17 {
static {
try {
Field valueField = String.class.getDeclaredField("value");
valueFieldOffset = UnsafeUtils.objectFieldOffset(valueField);
valueFieldOffset = UNSAFE.objectFieldOffset(valueField);
stringCreator = getStringCreatorJDK17();
} catch (Throwable e) {
e.printStackTrace();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.alibaba.fastjson2.benchmark;

import com.alibaba.fastjson2.util.IOUtils;
import com.alibaba.fastjson2.util.UnsafeUtils;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.runner.Runner;
Expand All @@ -13,6 +12,8 @@
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeUnit;

import static com.alibaba.fastjson2.util.JDKUtils.UNSAFE;

public class EncodeUTF8Benchmark {
static String STR = "01234567890ABCDEFGHIJKLMNOPQRSTUVWZYZabcdefghijklmnopqrstuvwzyz一二三四五六七八九十";
static byte[] out;
Expand All @@ -23,15 +24,15 @@ public class EncodeUTF8Benchmark {
out = new byte[STR.length() * 3];
try {
Field valueField = String.class.getDeclaredField("value");
valueFieldOffset = UnsafeUtils.objectFieldOffset(valueField);
valueFieldOffset = UNSAFE.objectFieldOffset(valueField);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}

@Benchmark
public int unsafeEncodeUTF8() throws Exception {
char[] chars = (char[]) UnsafeUtils.getObject(STR, valueFieldOffset);
char[] chars = (char[]) UNSAFE.getObject(STR, valueFieldOffset);
return IOUtils.encodeUTF8(chars, 0, chars.length, out, 0);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.alibaba.fastjson2.benchmark;

import com.alibaba.fastjson2.util.UnsafeUtils;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.runner.Runner;
Expand All @@ -13,6 +12,8 @@
import java.util.concurrent.TimeUnit;
import java.util.function.BiFunction;

import static com.alibaba.fastjson2.util.JDKUtils.UNSAFE;

public class StringCreateBenchmark {
static final BiFunction<char[], Boolean, String> STRING_CREATOR = getStringCreator();
static final char[] chars = new char[128];
Expand All @@ -22,7 +23,7 @@ public class StringCreateBenchmark {
try {
Field field = String.class.getDeclaredField("value");
field.setAccessible(true);
valueOffset = UnsafeUtils.objectFieldOffset(field);
valueOffset = UNSAFE.objectFieldOffset(field);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
Expand Down Expand Up @@ -66,8 +67,8 @@ public String newString() {

@Benchmark
public String unsafe() throws Exception {
String str = (String) UnsafeUtils.allocateInstance(String.class);
UnsafeUtils.putObject(str, valueOffset, chars);
String str = (String) UNSAFE.allocateInstance(String.class);
UNSAFE.putObject(str, valueOffset, chars);
return str;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.alibaba.fastjson2.benchmark;

import com.alibaba.fastjson2.util.UnsafeUtils;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.runner.Runner;
Expand All @@ -11,6 +10,8 @@
import java.lang.reflect.Field;
import java.util.concurrent.TimeUnit;

import static com.alibaba.fastjson2.util.JDKUtils.UNSAFE;

public class StringGetValueBenchmark {
static String STR = "01234567890ABCDEFGHIJKLMNOPQRSTUVWZYZabcdefghijklmnopqrstuvwzyz一二三四五六七八九十";

Expand All @@ -22,7 +23,7 @@ public class StringGetValueBenchmark {
try {
valueField = String.class.getDeclaredField("value");
valueField.setAccessible(true);
valueFieldOffset = UnsafeUtils.objectFieldOffset(valueField);
valueFieldOffset = UNSAFE.objectFieldOffset(valueField);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
Expand Down Expand Up @@ -55,7 +56,7 @@ public char[] reflect() throws Exception {

@Benchmark
public char[] unsafe() throws Exception {
return (char[]) UnsafeUtils.getObject(STR, valueFieldOffset);
return (char[]) UNSAFE.getObject(STR, valueFieldOffset);
// for (int i = 0; i < chars.length; i++) {
// char ch = chars[i];
// }
Expand Down
59 changes: 11 additions & 48 deletions core/src/main/java/com/alibaba/fastjson2/JSONB.java
Original file line number Diff line number Diff line change
Expand Up @@ -291,20 +291,11 @@ static Object parse(byte[] jsonbBytes, SymbolTable symbolTable, JSONReader.Featu

static JSONObject parseObject(byte[] jsonbBytes) {
JSONReader.Context context = new JSONReader.Context(JSONFactory.getDefaultObjectReaderProvider());
JSONReader reader;
if (UNSAFE_SUPPORT) {
reader = new JSONReaderJSONBUF(
context,
jsonbBytes,
0,
jsonbBytes.length);
} else {
reader = new JSONReaderJSONB(
context,
jsonbBytes,
0,
jsonbBytes.length);
}
JSONReader reader = new JSONReaderJSONB(
context,
jsonbBytes,
0,
jsonbBytes.length);

JSONObject object = (JSONObject) reader.readObject();
if (reader.resolveTasks != null) {
Expand Down Expand Up @@ -414,13 +405,7 @@ static <T> List<T> parseArray(byte[] jsonbBytes, Type[] types, JSONReader.Featur
static <T> T parseObject(byte[] jsonbBytes, Class<T> objectClass) {
ObjectReaderProvider provider = JSONFactory.getDefaultObjectReaderProvider();
JSONReader.Context context = new JSONReader.Context(provider);
try (JSONReader jsonReader = UNSAFE_SUPPORT
? new JSONReaderJSONBUF(
context,
jsonbBytes,
0,
jsonbBytes.length)
: new JSONReaderJSONB(
try (JSONReader jsonReader = new JSONReaderJSONB(
context,
jsonbBytes,
0,
Expand Down Expand Up @@ -489,13 +474,7 @@ static <T> T parseObject(
boolean fieldBased = (context.features & JSONReader.Feature.FieldBased.mask) != 0;
ObjectReader objectReader = provider.getObjectReader(objectType, fieldBased);

try (JSONReader reader = UNSAFE_SUPPORT
? new JSONReaderJSONBUF(
context,
jsonbBytes,
0,
jsonbBytes.length)
: new JSONReaderJSONB(
try (JSONReader reader = new JSONReaderJSONB(
context,
jsonbBytes,
0,
Expand Down Expand Up @@ -639,9 +618,7 @@ static <T> T parseObject(
Type objectType,
JSONReader.Context context
) {
try (JSONReader jsonReader = UNSAFE_SUPPORT
? new JSONReaderJSONBUF(context, in)
: new JSONReaderJSONB(context, in)
try (JSONReader jsonReader = new JSONReaderJSONB(context, in)
) {
Object object;
if (objectType == Object.class) {
Expand All @@ -666,9 +643,7 @@ static <T> T parseObject(
Class objectClass,
JSONReader.Context context
) {
try (JSONReader jsonReader = UNSAFE_SUPPORT
? new JSONReaderJSONBUF(context, in)
: new JSONReaderJSONB(context, in)
try (JSONReader jsonReader = new JSONReaderJSONB(context, in)
) {
Object object;
if (objectClass == Object.class) {
Expand Down Expand Up @@ -744,13 +719,7 @@ static <T> T parseObject(byte[] jsonbBytes, Class<T> objectClass, JSONReader.Fea
ObjectReaderProvider provider = JSONFactory.getDefaultObjectReaderProvider();
JSONReader.Context context = new JSONReader.Context(provider, features);

try (JSONReader jsonReader = UNSAFE_SUPPORT
? new JSONReaderJSONBUF(
context,
jsonbBytes,
0,
jsonbBytes.length)
: new JSONReaderJSONB(
try (JSONReader jsonReader = new JSONReaderJSONB(
context,
jsonbBytes,
0,
Expand Down Expand Up @@ -787,13 +756,7 @@ static <T> T parseObject(byte[] jsonbBytes, Class<T> objectClass, JSONReader.Fea
}

static <T> T parseObject(byte[] jsonbBytes, Class<T> objectClass, JSONReader.Context context) {
try (JSONReader jsonReader = UNSAFE_SUPPORT
? new JSONReaderJSONBUF(
context,
jsonbBytes,
0,
jsonbBytes.length)
: new JSONReaderJSONB(
try (JSONReader jsonReader = new JSONReaderJSONB(
context,
jsonbBytes,
0,
Expand Down
36 changes: 8 additions & 28 deletions core/src/main/java/com/alibaba/fastjson2/JSONReaderASCII.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
import com.alibaba.fastjson2.util.Fnv;
import com.alibaba.fastjson2.util.JDKUtils;
import com.alibaba.fastjson2.util.TypeUtils;
import com.alibaba.fastjson2.util.UnsafeUtils;
import sun.misc.Unsafe;

import java.nio.charset.StandardCharsets;
import java.util.Arrays;
Expand Down Expand Up @@ -635,35 +633,17 @@ public final long readFieldNameHashCode() {
}

public static int getInt(byte[] bytes, int off) {
if (UNSAFE_SUPPORT) {
return UnsafeUtils.getInt(
bytes,
(long) Unsafe.ARRAY_BYTE_BASE_OFFSET + off
);
}

return ((bytes[off + 3] & 0xFF) << 24)
+ ((bytes[off + 2] & 0xFF) << 16)
+ ((bytes[off + 1] & 0xFF) << 8)
+ (bytes[off] & 0xFF);
return UNSAFE.getInt(
bytes,
ARRAY_BYTE_BASE_OFFSET + off
);
}

public static long getLong(byte[] bytes, int off) {
if (UNSAFE_SUPPORT) {
return UnsafeUtils.getLong(
bytes,
(long) Unsafe.ARRAY_BYTE_BASE_OFFSET + off
);
}

return (((long) bytes[off + 7]) << 56)
+ ((bytes[off + 6] & 0xFFL) << 48)
+ ((bytes[off + 5] & 0xFFL) << 40)
+ ((bytes[off + 4] & 0xFFL) << 32)
+ ((bytes[off + 3] & 0xFFL) << 24)
+ ((bytes[off + 2] & 0xFFL) << 16)
+ ((bytes[off + 1] & 0xFFL) << 8)
+ (bytes[off] & 0xFFL);
return UNSAFE.getLong(
bytes,
ARRAY_BYTE_BASE_OFFSET + off
);
}

@Override
Expand Down
Loading

0 comments on commit 69cd533

Please sign in to comment.