This is an automated email from the ASF dual-hosted git repository.
chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fury.git
The following commit(s) were added to refs/heads/main by this push:
new 1f1528fd feat(java): support graalvm 17/21/22 (#1845)
1f1528fd is described below
commit 1f1528fd832f9a346e3573c9cf7bed2fbd2be09a
Author: Shawn Yang <[email protected]>
AuthorDate: Sun Sep 22 23:21:03 2024 -0700
feat(java): support graalvm 17/21/22 (#1845)
## What does this PR do?
- Support graalvm 17/21/22
- Add ci for Fury graalvm 17/22 support
## Related issues
https://github.com/apache/fury/pull/1813
## Does this PR introduce any user-facing change?
<!--
If any user-facing interface changes, please [open an
issue](https://github.com/apache/fury/issues/new/choose) describing the
need to do so and update the document if necessary.
-->
- [ ] Does this PR introduce any public API change?
- [ ] Does this PR introduce any binary protocol compatibility change?
## Benchmark
<!--
When the PR has an impact on performance (if you don't know whether the
PR will have an impact on performance, you can submit the PR first, and
if it will have impact on performance, the code reviewer will explain
it), be sure to attach a benchmark data here.
-->
---
.github/workflows/ci.yml | 5 +-
.../org/apache/fury/graalvm/CollectionExample.java | 6 +-
.../org/apache/fury/graalvm/CompatibleExample.java | 12 +-
.../fury/graalvm/CompatibleThreadSafeExample.java | 1 +
.../main/java/org/apache/fury/graalvm/Example.java | 2 +-
.../main/java/org/apache/fury/graalvm/Main.java | 1 +
.../java/org/apache/fury/graalvm/ProxyExample.java | 14 +-
.../fury/graalvm/ScopedCompatibleExample.java | 16 +-
.../org/apache/fury/graalvm/ThreadSafeExample.java | 6 +-
.../graalvm/record/CompatibleRecordExample.java | 10 +-
.../apache/fury/graalvm/record/RecordExample.java | 15 +-
.../apache/fury/graalvm/record/RecordExample2.java | 21 +-
.../graalvm_tests/native-image.properties | 4 +-
.../main/java/org/apache/fury/ThreadLocalFury.java | 3 -
.../main/java/org/apache/fury/config/Config.java | 11 +-
.../java/org/apache/fury/config/FuryBuilder.java | 7 +
.../org/apache/fury/resolver/ClassResolver.java | 65 +-
.../org/apache/fury/util/function/Functions.java | 49 +-
.../fury-core/native-image.properties | 875 +++++++++++++++++----
.../fury/serializer/CodegenSerializerTest.java | 2 +-
20 files changed, 939 insertions(+), 186 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index cec90a08..002b66e2 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -89,11 +89,14 @@ jobs:
graalvm:
name: GraalVM CI
runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ java-version: ["17", "21", "22"]
steps:
- uses: actions/checkout@v4
- uses: graalvm/setup-graalvm@v1
with:
- java-version: "21"
+ java-version: ${{ matrix.java-version }}
distribution: "graalvm"
github-token: ${{ secrets.GITHUB_TOKEN }}
native-image-job-reports: "true"
diff --git
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CollectionExample.java
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CollectionExample.java
index 3a53d5f5..222cc471 100644
---
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CollectionExample.java
+++
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CollectionExample.java
@@ -32,7 +32,11 @@ public class CollectionExample {
static Fury fury;
static {
- fury = Fury.builder().requireClassRegistration(true).build();
+ fury =
+ Fury.builder()
+ .withName(CollectionExample.class.getName())
+ .requireClassRegistration(true)
+ .build();
}
static void test(Fury fury) {
diff --git
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleExample.java
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleExample.java
index 060d82f1..37c92fe6 100644
---
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleExample.java
+++
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleExample.java
@@ -26,7 +26,11 @@ public class CompatibleExample {
static Fury fury;
static {
- fury =
+ fury = createFury();
+ }
+
+ private static Fury createFury() {
+ Fury fury =
Fury.builder()
.requireClassRegistration(true)
.withCompatibleMode(CompatibleMode.COMPATIBLE)
@@ -34,9 +38,15 @@ public class CompatibleExample {
.build();
// register and generate serializer code.
fury.register(Foo.class, true);
+ return fury;
}
public static void main(String[] args) {
+ System.out.println("CompatibleExample started");
+ Example.test(fury);
+ System.out.println("CompatibleExample succeed 1/2");
+ // Test new created Fury at runtime
+ fury = createFury();
Example.test(fury);
System.out.println("CompatibleExample succeed");
}
diff --git
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleThreadSafeExample.java
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleThreadSafeExample.java
index 9ddb4892..d7b8c484 100644
---
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleThreadSafeExample.java
+++
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/CompatibleThreadSafeExample.java
@@ -33,6 +33,7 @@ public class CompatibleThreadSafeExample {
classLoader -> {
Fury f =
Fury.builder()
+ .withName(CompatibleThreadSafeExample.class.getName())
.requireClassRegistration(true)
.withCompatibleMode(CompatibleMode.COMPATIBLE)
.build();
diff --git
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Example.java
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Example.java
index 203c8c2e..bf215742 100644
---
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Example.java
+++
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Example.java
@@ -28,7 +28,7 @@ public class Example {
static Fury fury;
static {
- fury = Fury.builder().requireClassRegistration(true).build();
+ fury =
Fury.builder().withName(Example.class.getName()).requireClassRegistration(true).build();
// register and generate serializer code.
fury.register(Foo.class, true);
}
diff --git
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Main.java
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Main.java
index 6b51256b..b8b60856 100644
---
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Main.java
+++
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/Main.java
@@ -31,6 +31,7 @@ public class Main {
RecordExample.main(args);
CompatibleRecordExample.main(args);
RecordExample2.main(args);
+
ThreadSafeExample.main(args);
CompatibleThreadSafeExample.main(args);
ProxyExample.main(args);
diff --git
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ProxyExample.java
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ProxyExample.java
index 43afc8bc..a3a48248 100644
---
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ProxyExample.java
+++
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ProxyExample.java
@@ -39,9 +39,18 @@ public class ProxyExample {
static Fury fury;
static {
- fury = Fury.builder().requireClassRegistration(true).build();
+ fury = createFury();
+ }
+
+ private static Fury createFury() {
+ Fury fury =
+ Fury.builder()
+ .withName(ProxyExample.class.getName())
+ .requireClassRegistration(true)
+ .build();
// register and generate serializer code.
fury.register(TestInvocationHandler.class, true);
+ return fury;
}
public static void main(String[] args) {
@@ -51,6 +60,9 @@ public class ProxyExample {
fury.getClassLoader(), new Class[] {Function.class}, new
TestInvocationHandler());
Function deserializedFunction = (Function)
fury.deserialize(fury.serialize(function));
Preconditions.checkArgument(deserializedFunction.apply(null).equals(1));
+ fury = createFury();
+ deserializedFunction = (Function)
fury.deserialize(fury.serialize(function));
+ Preconditions.checkArgument(deserializedFunction.apply(null).equals(1));
System.out.println("Proxy tests pass");
}
}
diff --git
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ScopedCompatibleExample.java
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ScopedCompatibleExample.java
index 48883fbe..1085da0c 100644
---
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ScopedCompatibleExample.java
+++
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ScopedCompatibleExample.java
@@ -23,21 +23,31 @@ import org.apache.fury.Fury;
import org.apache.fury.config.CompatibleMode;
public class ScopedCompatibleExample {
- static Fury fury;
+ private static Fury fury;
static {
- fury =
+ fury = createFury();
+ }
+
+ private static Fury createFury() {
+ Fury fury =
Fury.builder()
+ .withName(ScopedCompatibleExample.class.getName())
.requireClassRegistration(true)
.withCompatibleMode(CompatibleMode.COMPATIBLE)
.withScopedMetaShare(true)
.build();
// register and generate serializer code.
fury.register(Foo.class, true);
+ return fury;
}
public static void main(String[] args) {
+ System.out.println("ScopedCompatibleExample started");
+ Example.test(fury);
+ System.out.println("ScopedCompatibleExample succeed 1/2");
+ fury = createFury();
Example.test(fury);
- System.out.println("CompatibleExample succeed");
+ System.out.println("ScopedCompatibleExample succeed");
}
}
diff --git
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ThreadSafeExample.java
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ThreadSafeExample.java
index 150dc16e..1a0b1125 100644
---
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ThreadSafeExample.java
+++
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/ThreadSafeExample.java
@@ -37,7 +37,11 @@ public class ThreadSafeExample {
fury =
new ThreadLocalFury(
classLoader -> {
- Fury f = Fury.builder().requireClassRegistration(true).build();
+ Fury f =
+ Fury.builder()
+ .withName(ThreadSafeExample.class.getName())
+ .requireClassRegistration(true)
+ .build();
// register and generate serializer code.
f.register(Foo.class, true);
return f;
diff --git
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/CompatibleRecordExample.java
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/CompatibleRecordExample.java
index ef4bfc9f..94e3a7eb 100644
---
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/CompatibleRecordExample.java
+++
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/CompatibleRecordExample.java
@@ -26,16 +26,24 @@ public class CompatibleRecordExample {
static Fury fury;
static {
- fury =
+ fury = createFury();
+ }
+
+ private static Fury createFury() {
+ Fury fury =
Fury.builder()
+ .withName(CompatibleRecordExample.class.getName())
.requireClassRegistration(true)
.withCompatibleMode(CompatibleMode.COMPATIBLE)
.build();
// register and generate serializer code.
fury.register(RecordExample.Record.class, true);
+ return fury;
}
public static void main(String[] args) {
+ RecordExample.test(fury);
+ fury = createFury();
RecordExample.test(fury);
System.out.println("CompatibleRecordExample succeed");
}
diff --git
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/RecordExample.java
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/RecordExample.java
index 1202d226..90ece86b 100644
---
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/RecordExample.java
+++
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/RecordExample.java
@@ -30,9 +30,18 @@ public class RecordExample {
static Fury fury;
static {
- fury = Fury.builder().requireClassRegistration(true).build();
+ fury = createFury();
+ }
+
+ private static Fury createFury() {
+ Fury fury =
+ Fury.builder()
+ .withName(RecordExample.class.getName())
+ .requireClassRegistration(true)
+ .build();
// register and generate serializer code.
fury.register(Record.class, true);
+ return fury;
}
static void test(Fury fury) {
@@ -45,6 +54,10 @@ public class RecordExample {
}
public static void main(String[] args) {
+ System.out.println("RecordExample started");
+ test(fury);
+ System.out.println("RecordExample succeed 1/2");
+ fury = createFury();
test(fury);
System.out.println("RecordExample succeed");
}
diff --git
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/RecordExample2.java
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/RecordExample2.java
index 8fa9fa42..d6f5dd10 100644
---
a/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/RecordExample2.java
+++
b/integration_tests/graalvm_tests/src/main/java/org/apache/fury/graalvm/record/RecordExample2.java
@@ -30,13 +30,22 @@ public class RecordExample2 {
static Fury fury;
static {
- fury = Fury.builder().requireClassRegistration(true).build();
+ fury = createFury();
+ }
+
+ private static Fury createFury() {
+ Fury fury =
+ Fury.builder()
+ .withName(RecordExample2.class.getName())
+ .requireClassRegistration(true)
+ .build();
// register and generate serializer code.
fury.register(Record.class, true);
fury.register(Foo.class, true);
+ return fury;
}
- public static void main(String[] args) {
+ public static void test(Fury fury) {
Record record = new Record(10, "abc", List.of("str1", "str2"),
Map.of("k1", 10L, "k2", 20L));
byte[] bytes = fury.serialize(record);
Object o = fury.deserialize(bytes);
@@ -44,6 +53,14 @@ public class RecordExample2 {
Foo foo = new Foo(10, "abc", List.of("str1", "str2"), Map.of("k1", 10L,
"k2", 20L));
Object o2 = fury.deserialize(fury.serialize(foo));
Preconditions.checkArgument(foo.equals(o2));
+ }
+
+ public static void main(String[] args) {
+ System.out.println("RecordExample started");
+ test(fury);
+ System.out.println("RecordExample succeed 1/2");
+ fury = createFury();
+ test(fury);
System.out.println("RecordExample2 succeed");
}
}
diff --git
a/integration_tests/graalvm_tests/src/main/resources/META-INF/native-image/org.apache.fury/graalvm_tests/native-image.properties
b/integration_tests/graalvm_tests/src/main/resources/META-INF/native-image/org.apache.fury/graalvm_tests/native-image.properties
index c0136079..5af8a7a6 100644
---
a/integration_tests/graalvm_tests/src/main/resources/META-INF/native-image/org.apache.fury/graalvm_tests/native-image.properties
+++
b/integration_tests/graalvm_tests/src/main/resources/META-INF/native-image/org.apache.fury/graalvm_tests/native-image.properties
@@ -17,13 +17,15 @@
#
https://www.graalvm.org/latest/reference-manual/native-image/dynamic-features/Reflection/#unsafe-accesses
:
# The unsafe offset get on build time may be different from runtime
-Args = -H:+ReportExceptionStackTraces \
+Args=-H:+ReportExceptionStackTraces \
--initialize-at-build-time=org.apache.fury.graalvm.Example,\
org.apache.fury.graalvm.CompatibleExample,\
+ org.apache.fury.graalvm.ScopedCompatibleExample,\
org.apache.fury.graalvm.record.RecordExample,\
org.apache.fury.graalvm.record.CompatibleRecordExample,\
org.apache.fury.graalvm.record.RecordExample2,\
org.apache.fury.graalvm.ThreadSafeExample,\
org.apache.fury.graalvm.CompatibleThreadSafeExample,\
org.apache.fury.graalvm.ProxyExample,\
+ org.apache.fury.graalvm.CollectionExample,\
org.apache.fury.graalvm.Benchmark
diff --git a/java/fury-core/src/main/java/org/apache/fury/ThreadLocalFury.java
b/java/fury-core/src/main/java/org/apache/fury/ThreadLocalFury.java
index e4fae2ae..d742650d 100644
--- a/java/fury-core/src/main/java/org/apache/fury/ThreadLocalFury.java
+++ b/java/fury-core/src/main/java/org/apache/fury/ThreadLocalFury.java
@@ -29,7 +29,6 @@ import org.apache.fury.io.FuryInputStream;
import org.apache.fury.io.FuryReadableChannel;
import org.apache.fury.memory.MemoryBuffer;
import org.apache.fury.memory.MemoryUtils;
-import org.apache.fury.resolver.ClassResolver;
import org.apache.fury.serializer.BufferCallback;
import org.apache.fury.util.LoaderBinding;
import org.apache.fury.util.LoaderBinding.StagingType;
@@ -65,8 +64,6 @@ public class ThreadLocalFury extends AbstractThreadSafeFury {
// in a process load some classes which is not cheap.
// 2. Make fury generate code at graalvm build time.
Fury fury = bindingThreadLocal.get().get();
- ClassResolver._addGraalvmClassRegistry(
- fury.getConfig().getConfigHash(), fury.getClassResolver());
}
@Override
diff --git a/java/fury-core/src/main/java/org/apache/fury/config/Config.java
b/java/fury-core/src/main/java/org/apache/fury/config/Config.java
index fad9d395..98422d73 100644
--- a/java/fury-core/src/main/java/org/apache/fury/config/Config.java
+++ b/java/fury-core/src/main/java/org/apache/fury/config/Config.java
@@ -33,6 +33,7 @@ import org.apache.fury.util.Preconditions;
/** Config for fury, all {@link Fury} related config can be found here. */
@SuppressWarnings({"rawtypes"})
public class Config implements Serializable {
+ private final String name;
private final Language language;
private final boolean trackingRef;
private final boolean basicTypesRefIgnored;
@@ -61,6 +62,7 @@ public class Config implements Serializable {
private final boolean deserializeNonexistentEnumValueAsNull;
public Config(FuryBuilder builder) {
+ name = builder.name;
language = builder.language;
trackingRef = builder.trackingRef;
basicTypesRefIgnored = !trackingRef || builder.basicTypesRefIgnored;
@@ -93,6 +95,11 @@ public class Config implements Serializable {
deserializeNonexistentEnumValueAsNull =
builder.deserializeNonexistentEnumValueAsNull;
}
+ /** Returns the name for Fury serialization. */
+ public String getName() {
+ return name;
+ }
+
public Language getLanguage() {
return language;
}
@@ -257,7 +264,8 @@ public class Config implements Serializable {
return false;
}
Config config = (Config) o;
- return trackingRef == config.trackingRef
+ return name == config.name
+ && trackingRef == config.trackingRef
&& basicTypesRefIgnored == config.basicTypesRefIgnored
&& stringRefIgnored == config.stringRefIgnored
&& timeRefIgnored == config.timeRefIgnored
@@ -286,6 +294,7 @@ public class Config implements Serializable {
@Override
public int hashCode() {
return Objects.hash(
+ name,
language,
trackingRef,
basicTypesRefIgnored,
diff --git
a/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java
b/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java
index ebd9fb8b..1210c751 100644
--- a/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java
+++ b/java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java
@@ -56,6 +56,7 @@ public final class FuryBuilder {
ENABLE_CLASS_REGISTRATION_FORCIBLY = "true".equals(flagValue) ||
"1".equals(flagValue);
}
+ String name;
boolean checkClassVersion = false;
Language language = Language.JAVA;
boolean trackingRef = false;
@@ -318,6 +319,12 @@ public final class FuryBuilder {
return this;
}
+ /** Set name for Fury serialization. */
+ public FuryBuilder withName(String name) {
+ this.name = name;
+ return this;
+ }
+
private void finish() {
if (classLoader == null) {
classLoader = Thread.currentThread().getContextClassLoader();
diff --git
a/java/fury-core/src/main/java/org/apache/fury/resolver/ClassResolver.java
b/java/fury-core/src/main/java/org/apache/fury/resolver/ClassResolver.java
index 8ee93a38..1fba1680 100644
--- a/java/fury-core/src/main/java/org/apache/fury/resolver/ClassResolver.java
+++ b/java/fury-core/src/main/java/org/apache/fury/resolver/ClassResolver.java
@@ -266,6 +266,7 @@ public class ClassResolver {
extRegistry = new ExtRegistry();
extRegistry.objectGenericType = buildGenericType(OBJECT_TYPE);
shimDispatcher = new ShimDispatcher(fury);
+ ClassResolver._addGraalvmClassRegistry(fury.getConfig().getConfigHash(),
this);
}
public void initialize() {
@@ -418,12 +419,24 @@ public class ClassResolver {
register(cls);
if (createSerializer) {
ClassInfo classInfo = getClassInfo(cls);
+ ClassInfo deserializationClassInfo;
if (metaContextShareEnabled &&
needToWriteClassDef(classInfo.serializer)) {
ClassDef classDef = classInfo.classDef;
if (classDef == null) {
classDef = buildClassDef(classInfo);
}
- buildMetaSharedClassInfo(Tuple2.of(classDef, null), classDef);
+ deserializationClassInfo =
buildMetaSharedClassInfo(Tuple2.of(classDef, null), classDef);
+ if (deserializationClassInfo != null &&
GraalvmSupport.isGraalBuildtime()) {
+ getGraalvmClassRegistry()
+ .deserializerClassMap
+ .put(classDef.getId(),
deserializationClassInfo.serializer.getClass());
+ deserializationClassInfo.serializer = null;
+ }
+ }
+ if (GraalvmSupport.isGraalBuildtime()) {
+ // Instance for generated class should be hold at graalvm runtime only.
+ getGraalvmClassRegistry().serializerClassMap.put(cls,
classInfo.serializer.getClass());
+ classInfo.serializer = null;
}
}
}
@@ -1356,7 +1369,9 @@ public class ClassResolver {
ObjectArray<ClassDef> readClassDefs = metaContext.readClassDefs;
ClassDef classDef = readClassDefs.get(id);
Tuple2<ClassDef, ClassInfo> classDefTuple =
extRegistry.classIdToDef.get(classDef.getId());
- if (classDefTuple == null || classDefTuple.f1 == null) {
+ if (classDefTuple == null
+ || classDefTuple.f1 == null
+ || classDefTuple.f1.serializer == null) {
classInfo = buildMetaSharedClassInfo(classDefTuple, classDef);
} else {
classInfo = classDefTuple.f1;
@@ -1915,33 +1930,54 @@ public class ClassResolver {
return fury;
}
- private static final ConcurrentMap<Integer, List<ClassResolver>>
GRAALVM_REGISTRY =
+ private static final ConcurrentMap<Integer, GraalvmClassRegistry>
GRAALVM_REGISTRY =
new ConcurrentHashMap<>();
// CHECKSTYLE.OFF:MethodName
public static void _addGraalvmClassRegistry(int furyConfigHash,
ClassResolver classResolver) {
// CHECKSTYLE.ON:MethodName
if (GraalvmSupport.isGraalBuildtime()) {
- List<ClassResolver> resolvers =
- GRAALVM_REGISTRY.computeIfAbsent(
- furyConfigHash, k -> Collections.synchronizedList(new
ArrayList<>()));
- resolvers.add(classResolver);
+ GraalvmClassRegistry registry =
+ GRAALVM_REGISTRY.computeIfAbsent(furyConfigHash, k -> new
GraalvmClassRegistry());
+ registry.resolvers.add(classResolver);
+ }
+ }
+
+ private static class GraalvmClassRegistry {
+ private final List<ClassResolver> resolvers;
+ private final Map<Class<?>, Class<? extends Serializer>>
serializerClassMap;
+ private final Map<Long, Class<? extends Serializer>> deserializerClassMap;
+
+ private GraalvmClassRegistry() {
+ resolvers = Collections.synchronizedList(new ArrayList<>());
+ serializerClassMap = new ConcurrentHashMap<>();
+ deserializerClassMap = new ConcurrentHashMap<>();
}
}
+ private GraalvmClassRegistry getGraalvmClassRegistry() {
+ return GRAALVM_REGISTRY.computeIfAbsent(
+ fury.getConfig().getConfigHash(), k -> new GraalvmClassRegistry());
+ }
+
private Class<? extends Serializer>
getSerializerClassFromGraalvmRegistry(Class<?> cls) {
- List<ClassResolver> classResolvers =
GRAALVM_REGISTRY.get(fury.getConfig().getConfigHash());
+ GraalvmClassRegistry registry = getGraalvmClassRegistry();
+ List<ClassResolver> classResolvers = registry.resolvers;
if (classResolvers == null || classResolvers.isEmpty()) {
return null;
}
for (ClassResolver classResolver : classResolvers) {
if (classResolver != this) {
ClassInfo classInfo = classResolver.classInfoMap.get(cls);
- if (classInfo != null) {
+ if (classInfo != null && classInfo.serializer != null) {
return classInfo.serializer.getClass();
}
}
}
+ Class<? extends Serializer> serializerClass =
registry.serializerClassMap.get(cls);
+ if (serializerClass != null) {
+ return serializerClass;
+ }
if (GraalvmSupport.isGraalRuntime()) {
if (Functions.isLambda(cls) || ReflectionUtils.isJdkProxy(cls)) {
return null;
@@ -1953,7 +1989,8 @@ public class ClassResolver {
private Class<? extends Serializer>
getMetaSharedDeserializerClassFromGraalvmRegistry(
Class<?> cls, ClassDef classDef) {
- List<ClassResolver> classResolvers =
GRAALVM_REGISTRY.get(fury.getConfig().getConfigHash());
+ GraalvmClassRegistry registry = getGraalvmClassRegistry();
+ List<ClassResolver> classResolvers = registry.resolvers;
if (classResolvers == null || classResolvers.isEmpty()) {
return null;
}
@@ -1961,11 +1998,17 @@ public class ClassResolver {
if (classResolver != this) {
Tuple2<ClassDef, ClassInfo> tuple2 =
classResolver.extRegistry.classIdToDef.get(classDef.getId());
- if (tuple2 != null && tuple2.f1 != null) {
+ if (tuple2 != null && tuple2.f1 != null && tuple2.f1.serializer !=
null) {
return tuple2.f1.serializer.getClass();
}
}
}
+ Class<? extends Serializer> deserializerClass =
+ registry.deserializerClassMap.get(classDef.getId());
+ // noinspection Duplicates
+ if (deserializerClass != null) {
+ return deserializerClass;
+ }
if (GraalvmSupport.isGraalRuntime()) {
if (Functions.isLambda(cls) || ReflectionUtils.isJdkProxy(cls)) {
return null;
diff --git
a/java/fury-core/src/main/java/org/apache/fury/util/function/Functions.java
b/java/fury-core/src/main/java/org/apache/fury/util/function/Functions.java
index 3169fb51..55ca8395 100644
--- a/java/fury-core/src/main/java/org/apache/fury/util/function/Functions.java
+++ b/java/fury-core/src/main/java/org/apache/fury/util/function/Functions.java
@@ -26,9 +26,13 @@ import java.lang.invoke.SerializedLambda;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.WeakHashMap;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Predicate;
import org.apache.fury.collection.Tuple2;
import org.apache.fury.reflect.ReflectionUtils;
+import org.apache.fury.util.GraalvmSupport;
import org.apache.fury.util.Preconditions;
import org.apache.fury.util.unsafe._JDKAccess;
@@ -73,27 +77,38 @@ public class Functions {
}
}
+ private static final Map<Tuple2<Method, Class<?>>, Object> map =
+ GraalvmSupport.isGraalBuildtime() ? new ConcurrentHashMap<>() : new
WeakHashMap<>();
+
public static Object makeGetterFunction(Method method) {
- MethodHandles.Lookup lookup =
_JDKAccess._trustedLookup(method.getDeclaringClass());
- try {
- // Why `lookup.findGetter` doesn't work?
- // MethodHandle handle = lookup.findGetter(field.getDeclaringClass(),
field.getName(),
- // field.getType());
- MethodHandle handle = lookup.unreflect(method);
- return _JDKAccess.makeGetterFunction(lookup, handle,
method.getReturnType());
- } catch (IllegalAccessException ex) {
- throw new RuntimeException(ex);
- }
+ return map.computeIfAbsent(
+ Tuple2.of(method, Object.class),
+ k -> {
+ MethodHandles.Lookup lookup =
_JDKAccess._trustedLookup(method.getDeclaringClass());
+ try {
+ // Why `lookup.findGetter` doesn't work?
+ // MethodHandle handle =
lookup.findGetter(field.getDeclaringClass(), field.getName(),
+ // field.getType());
+ MethodHandle handle = lookup.unreflect(method);
+ return _JDKAccess.makeGetterFunction(lookup, handle,
method.getReturnType());
+ } catch (IllegalAccessException ex) {
+ throw new RuntimeException(ex);
+ }
+ });
}
public static Object makeGetterFunction(Method method, Class<?> returnType) {
- MethodHandles.Lookup lookup =
_JDKAccess._trustedLookup(method.getDeclaringClass());
- try {
- MethodHandle handle = lookup.unreflect(method);
- return _JDKAccess.makeGetterFunction(lookup, handle, returnType);
- } catch (IllegalAccessException ex) {
- throw new RuntimeException(ex);
- }
+ return map.computeIfAbsent(
+ Tuple2.of(method, returnType),
+ k -> {
+ MethodHandles.Lookup lookup =
_JDKAccess._trustedLookup(method.getDeclaringClass());
+ try {
+ MethodHandle handle = lookup.unreflect(method);
+ return _JDKAccess.makeGetterFunction(lookup, handle, returnType);
+ } catch (IllegalAccessException ex) {
+ throw new RuntimeException(ex);
+ }
+ });
}
public static Tuple2<Class<?>, String> getterMethodInfo(Class<?> type) {
diff --git
a/java/fury-core/src/main/resources/META-INF/native-image/org.apache.fury/fury-core/native-image.properties
b/java/fury-core/src/main/resources/META-INF/native-image/org.apache.fury/fury-core/native-image.properties
index e9d4a67b..5f3338f5 100644
---
a/java/fury-core/src/main/resources/META-INF/native-image/org.apache.fury/fury-core/native-image.properties
+++
b/java/fury-core/src/main/resources/META-INF/native-image/org.apache.fury/fury-core/native-image.properties
@@ -18,161 +18,758 @@
#
https://www.graalvm.org/latest/reference-manual/native-image/dynamic-features/Reflection/#unsafe-accesses
:
# The unsafe offset get on build time may be different from runtime
Args=--initialize-at-build-time=org.apache.fury.memory.MemoryBuffer,\
- org.apache.fury.util.GraalvmSupport,\
- org.apache.fury.serializer.collection.UnmodifiableSerializers$Offset,\
- org.apache.fury.serializer.collection.SynchronizedSerializers$Offset,\
-
org.apache.fury.serializer.collection.CollectionSerializers$ArraysAsListSerializer,\
-
org.apache.fury.serializer.collection.CollectionSerializers$SetFromMapSerializer,\
- org.apache.fury.serializer.collection.MapSerializers$EnumMapSerializer,\
+ com.google.common.base.Equivalence$Equals,\
+ com.google.common.base.Equivalence$Identity,\
+ com.google.common.base.Equivalence,\
+ com.google.common.base.FinalizableReferenceQueue,\
+ com.google.common.base.Ticker$1,\
+ com.google.common.base.internal.Finalizer,\
+ com.google.common.cache.CacheBuilder$1,\
+ com.google.common.cache.CacheBuilder$2,\
+ com.google.common.cache.CacheBuilder$3,\
+ com.google.common.cache.CacheBuilder$NullListener,\
+ com.google.common.cache.CacheBuilder$OneWeigher,\
+ com.google.common.cache.LocalCache$1,\
+ com.google.common.cache.LocalCache$2,\
+ com.google.common.cache.LocalCache$EntryFactory$1,\
+ com.google.common.cache.LocalCache$EntryFactory$2,\
+ com.google.common.cache.LocalCache$EntryFactory$3,\
+ com.google.common.cache.LocalCache$EntryFactory$4,\
+ com.google.common.cache.LocalCache$EntryFactory$5,\
+ com.google.common.cache.LocalCache$EntryFactory$6,\
+ com.google.common.cache.LocalCache$EntryFactory$7,\
+ com.google.common.cache.LocalCache$EntryFactory$8,\
+ com.google.common.cache.LocalCache$EntrySet,\
+ com.google.common.cache.LocalCache$LocalManualCache,\
+ com.google.common.cache.LocalCache$Segment,\
+ com.google.common.cache.LocalCache$SoftValueReference,\
+ com.google.common.cache.LocalCache$Strength$1,\
+ com.google.common.cache.LocalCache$Strength$2,\
+ com.google.common.cache.LocalCache$Strength$3,\
+ com.google.common.cache.LocalCache$StrongEntry,\
+ com.google.common.cache.LocalCache$StrongValueReference,\
+ com.google.common.cache.LocalCache$WeakEntry,\
+ com.google.common.cache.LocalCache$WeakValueReference,\
+ com.google.common.cache.LocalCache,\
+ com.google.common.collect.AbstractIterator$1,\
+ com.google.common.collect.ImmutableSortedMap,\
+ com.google.common.collect.NaturalOrdering,\
+ com.google.common.collect.Platform,\
+ com.google.common.collect.RegularImmutableBiMap,\
+ com.google.common.collect.RegularImmutableList,\
+ com.google.common.collect.RegularImmutableMap,\
+ com.google.common.collect.RegularImmutableSet,\
+ com.google.common.collect.RegularImmutableSortedSet,\
+ com.google.common.collect.SingletonImmutableBiMap,\
+ com.google.common.collect.SingletonImmutableList,\
+ com.google.common.collect.SingletonImmutableSet,\
+ com.google.common.math.IntMath$1,\
+ com.google.common.primitives.Primitives,\
+ com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper,\
+ com.google.common.util.concurrent.SettableFuture,\
+ java.io.IOException,\
+ java.lang.ArrayIndexOutOfBoundsException,\
+ java.lang.Boolean,\
+ java.lang.Byte,\
+ java.lang.Character,\
+ java.lang.Class,\
+ java.lang.Double,\
+ java.lang.Exception,\
+ java.lang.Float,\
+ java.lang.IllegalArgumentException,\
+ java.lang.IllegalStateException,\
+ java.lang.IndexOutOfBoundsException,\
+ java.lang.Integer,\
+ java.lang.Long,\
+ java.lang.NullPointerException,\
+ java.lang.Object,\
+ java.lang.RuntimeException,\
+ java.lang.Short,\
+ java.lang.StackTraceElement,\
+ java.lang.String,\
+ java.lang.StringBuffer,\
+ java.lang.StringBuilder,\
+ java.lang.Throwable,\
+ java.lang.Void,\
+ java.math.BigDecimal,\
+ java.math.BigInteger,\
+ java.net.URI,\
+ java.nio.DirectByteBuffer,\
+ java.nio.HeapByteBuffer,\
+ java.sql.Date,\
+ java.sql.Time,\
+ java.sql.Timestamp,\
+ java.time.Duration,\
+ java.time.Instant,\
+ java.time.LocalDate,\
+ java.time.LocalDateTime,\
+ java.time.LocalTime,\
+ java.time.MonthDay,\
+ java.time.OffsetDateTime,\
+ java.time.OffsetTime,\
+ java.time.Period,\
+ java.time.Year,\
+ java.time.YearMonth,\
+ java.time.ZoneOffset,\
+ java.time.ZonedDateTime,\
+ java.util.ArrayDeque,\
+ java.util.ArrayList,\
+ java.util.Arrays$ArrayList,\
+ java.util.BitSet,\
+ java.util.Collections$EmptyList,\
+ java.util.Collections$EmptyMap,\
+ java.util.Collections$EmptySet,\
+ java.util.Collections$ReverseComparator,\
+ java.util.Collections$SetFromMap,\
+ java.util.Collections$SingletonList,\
+ java.util.Collections$SingletonMap,\
+ java.util.Collections$SingletonSet,\
+ java.util.Collections$SynchronizedCollection,\
+ java.util.Collections$SynchronizedList,\
+ java.util.Collections$SynchronizedMap,\
+ java.util.Collections$SynchronizedRandomAccessList,\
+ java.util.Collections$SynchronizedSet,\
+ java.util.Collections$SynchronizedSortedMap,\
+ java.util.Collections$SynchronizedSortedSet,\
+ java.util.Collections$UnmodifiableCollection,\
+ java.util.Collections$UnmodifiableList,\
+ java.util.Collections$UnmodifiableMap,\
+ java.util.Collections$UnmodifiableNavigableMap$EmptyNavigableMap,\
+ java.util.Collections$UnmodifiableNavigableSet$EmptyNavigableSet,\
+ java.util.Collections$UnmodifiableRandomAccessList,\
+ java.util.Collections$UnmodifiableSet,\
+ java.util.Collections$UnmodifiableSortedMap,\
+ java.util.Collections$UnmodifiableSortedSet,\
+ java.util.Comparators$NaturalOrderComparator,\
+ java.util.Currency,\
+ java.util.Date,\
+ java.util.EnumMap,\
+ java.util.HashMap,\
+ java.util.HashSet,\
+ java.util.ImmutableCollections$List12,\
+ java.util.ImmutableCollections$ListN,\
+ java.util.ImmutableCollections$Map1,\
+ java.util.ImmutableCollections$MapN,\
+ java.util.ImmutableCollections$Set12,\
+ java.util.ImmutableCollections$SetN,\
+ java.util.ImmutableCollections$SubList,\
+ java.util.LinkedHashMap,\
+ java.util.LinkedHashSet,\
+ java.util.LinkedList,\
+ java.util.Locale,\
+ java.util.Optional,\
+ java.util.OptionalDouble,\
+ java.util.OptionalInt,\
+ java.util.OptionalLong,\
+ java.util.PriorityQueue,\
+ java.util.RegularEnumSet,\
+ java.util.TreeMap,\
+ java.util.TreeSet,\
+ java.util.UUID,\
+ java.util.Vector,\
+ java.util.concurrent.ArrayBlockingQueue,\
+ java.util.concurrent.ConcurrentHashMap$KeySetView,\
+ java.util.concurrent.ConcurrentHashMap,\
+ java.util.concurrent.ConcurrentSkipListMap,\
+ java.util.concurrent.ConcurrentSkipListSet,\
+ java.util.concurrent.CopyOnWriteArrayList,\
+ java.util.concurrent.LinkedBlockingQueue,\
+ java.util.concurrent.atomic.AtomicBoolean,\
+ java.util.concurrent.atomic.AtomicInteger,\
+ java.util.concurrent.atomic.AtomicLong,\
+ java.util.concurrent.atomic.AtomicReference,\
+ java.util.regex.Pattern,\
+ org.apache.fury.Fury,\
+ org.apache.fury.ThreadLocalFury,\
+ org.apache.fury.builder.AccessorHelper,\
+ org.apache.fury.builder.JITContext,\
+ org.apache.fury.builder.ObjectCodecBuilder,\
+ org.apache.fury.codegen.CodeGenerator$DefineState,\
+ org.apache.fury.codegen.CodeGenerator,\
+ org.apache.fury.codegen.CodegenContext,\
+ org.apache.fury.codegen.CompileState,\
+ org.apache.fury.codegen.CompileUnit,\
+ org.apache.fury.codegen.Expression$Literal,\
+ org.apache.fury.codegen.Expression$Reference,\
+ org.apache.fury.codegen.JaninoUtils,\
+ org.apache.fury.collection.FuryObjectMap,\
+ org.apache.fury.collection.IdentityMap,\
+ org.apache.fury.collection.IdentityObjectIntMap,\
+ org.apache.fury.collection.IntArray,\
+ org.apache.fury.collection.LazyMap,\
+ org.apache.fury.collection.LongMap,\
+ org.apache.fury.collection.MapStatistics,\
+ org.apache.fury.collection.MultiKeyWeakMap,\
+ org.apache.fury.collection.ObjectArray,\
+ org.apache.fury.collection.ObjectIntMap,\
+ org.apache.fury.collection.ObjectMap,\
+ org.apache.fury.collection.Tuple2,\
+ org.apache.fury.collection.Tuple3,\
+ org.apache.fury.config.CompatibleMode,\
+ org.apache.fury.config.Config,\
+ org.apache.fury.config.FuryBuilder,\
+ org.apache.fury.config.Language,\
+ org.apache.fury.config.LongEncoding,\
+ org.apache.fury.logging.FuryLogger,\
+ org.apache.fury.logging.LoggerFactory,\
+ org.apache.fury.memory.BoundsChecking,\
+ org.apache.fury.memory.MemoryBuffer,\
+ org.apache.fury.memory.MemoryUtils,\
+ org.apache.fury.memory.Platform,\
+ org.apache.fury.meta.ClassDef$ArrayFieldType,\
+ org.apache.fury.meta.ClassDef$CollectionFieldType,\
+ org.apache.fury.meta.ClassDef$EnumFieldType,\
+ org.apache.fury.meta.ClassDef$FieldInfo,\
+ org.apache.fury.meta.ClassDef$FieldType,\
+ org.apache.fury.meta.ClassDef$MapFieldType,\
+ org.apache.fury.meta.ClassDef$ObjectFieldType,\
+ org.apache.fury.meta.ClassDef$RegisteredFieldType,\
+ org.apache.fury.meta.ClassDef,\
+ org.apache.fury.meta.ClassDefDecoder,\
+ org.apache.fury.meta.ClassDefEncoder,\
+ org.apache.fury.meta.ClassSpec,\
+ org.apache.fury.meta.DeflaterMetaCompressor,\
+ org.apache.fury.meta.Encoders,\
+ org.apache.fury.meta.MetaCompressor,\
+ org.apache.fury.meta.MetaString$Encoding,\
+ org.apache.fury.meta.MetaString,\
+ org.apache.fury.meta.MetaStringDecoder$1,\
+ org.apache.fury.meta.MetaStringDecoder,\
+ org.apache.fury.meta.MetaStringEncoder$1,\
+ org.apache.fury.meta.MetaStringEncoder,\
+ org.apache.fury.meta.TypeEqualMetaCompressor,\
+ org.apache.fury.pool.ClassLoaderFuryPooled,\
+ org.apache.fury.pool.FuryPooledObjectFactory,\
+ org.apache.fury.pool.ThreadPoolFury,\
+ org.apache.fury.reflect.FieldAccessor$GeneratedAccessor,\
+ org.apache.fury.reflect.ReflectionUtils$1,\
+ org.apache.fury.reflect.ReflectionUtils$2,\
+ org.apache.fury.reflect.ReflectionUtils,\
+ org.apache.fury.reflect.TypeRef$ClassOwnership$1,\
+ org.apache.fury.reflect.TypeRef$ClassOwnership$2,\
+ org.apache.fury.reflect.TypeRef$ClassOwnership,\
+ org.apache.fury.reflect.TypeRef$TypeVariableKey,\
+ org.apache.fury.reflect.TypeRef,\
+ org.apache.fury.resolver.ClassChecker,\
+ org.apache.fury.resolver.ClassInfo,\
+ org.apache.fury.resolver.ClassInfoHolder,\
+ org.apache.fury.resolver.ClassResolver$2,\
+ org.apache.fury.resolver.ClassResolver$ExtRegistry,\
+ org.apache.fury.resolver.ClassResolver$GraalvmClassRegistry,\
+ org.apache.fury.resolver.ClassResolver,\
+ org.apache.fury.resolver.DisallowedList,\
+ org.apache.fury.resolver.FieldResolver$CollectionFieldInfo,\
+ org.apache.fury.resolver.FieldResolver$FieldInfo,\
+ org.apache.fury.resolver.FieldResolver$MapFieldInfo,\
+ org.apache.fury.resolver.FieldResolver,\
+ org.apache.fury.resolver.MetaContext,\
+ org.apache.fury.resolver.MetaStringBytes,\
+ org.apache.fury.resolver.MetaStringResolver,\
+ org.apache.fury.resolver.NoRefResolver,\
+ org.apache.fury.resolver.SerializationContext,\
+ org.apache.fury.serializer.ArraySerializers$BooleanArraySerializer,\
+ org.apache.fury.serializer.ArraySerializers$ByteArraySerializer,\
+ org.apache.fury.serializer.ArraySerializers$CharArraySerializer,\
+ org.apache.fury.serializer.ArraySerializers$DoubleArraySerializer,\
+ org.apache.fury.serializer.ArraySerializers$FloatArraySerializer,\
+ org.apache.fury.serializer.ArraySerializers$IntArraySerializer,\
+ org.apache.fury.serializer.ArraySerializers$LongArraySerializer,\
+ org.apache.fury.serializer.ArraySerializers$ObjectArraySerializer,\
+ org.apache.fury.serializer.ArraySerializers$ShortArraySerializer,\
+ org.apache.fury.serializer.ArraySerializers$StringArraySerializer,\
+ org.apache.fury.serializer.ArraySerializers,\
+ org.apache.fury.serializer.JavaSerializer$1,\
+ org.apache.fury.serializer.JavaSerializer$2,\
+ org.apache.fury.serializer.JavaSerializer$3,\
+ org.apache.fury.serializer.JavaSerializer$4,\
+ org.apache.fury.serializer.JavaSerializer,\
+ org.apache.fury.serializer.JdkProxySerializer$ReplaceStub,\
org.apache.fury.serializer.JdkProxySerializer,\
+ org.apache.fury.serializer.LambdaSerializer$ReplaceStub,\
+ org.apache.fury.serializer.LambdaSerializer,\
+ org.apache.fury.serializer.LocaleSerializer,\
+ org.apache.fury.serializer.NonexistentClassSerializers$ClassFieldsInfo,\
+
org.apache.fury.serializer.NonexistentClassSerializers$NonexistentClassSerializer,\
+
org.apache.fury.serializer.NonexistentClassSerializers$NonexistentEnumClassSerializer,\
+ org.apache.fury.serializer.OptionalSerializers$OptionalDoubleSerializer,\
+ org.apache.fury.serializer.OptionalSerializers$OptionalIntSerializer,\
+ org.apache.fury.serializer.OptionalSerializers$OptionalLongSerializer,\
+ org.apache.fury.serializer.OptionalSerializers$OptionalSerializer,\
+ org.apache.fury.serializer.PrimitiveSerializers$1,\
+ org.apache.fury.serializer.PrimitiveSerializers$BooleanSerializer,\
+ org.apache.fury.serializer.PrimitiveSerializers$ByteSerializer,\
+ org.apache.fury.serializer.PrimitiveSerializers$CharSerializer,\
+ org.apache.fury.serializer.PrimitiveSerializers$DoubleSerializer,\
+ org.apache.fury.serializer.PrimitiveSerializers$FloatSerializer,\
+ org.apache.fury.serializer.PrimitiveSerializers$IntSerializer,\
+ org.apache.fury.serializer.PrimitiveSerializers$LongSerializer,\
+ org.apache.fury.serializer.PrimitiveSerializers$ShortSerializer,\
+ org.apache.fury.serializer.ReplaceResolveSerializer$1,\
+ org.apache.fury.serializer.ReplaceResolveSerializer$ReplaceStub,\
+ org.apache.fury.serializer.ReplaceResolveSerializer,\
+ org.apache.fury.serializer.Serializers$AtomicBooleanSerializer,\
+ org.apache.fury.serializer.Serializers$AtomicIntegerSerializer,\
+ org.apache.fury.serializer.Serializers$AtomicLongSerializer,\
+ org.apache.fury.serializer.Serializers$AtomicReferenceSerializer,\
+ org.apache.fury.serializer.Serializers$BigDecimalSerializer,\
+ org.apache.fury.serializer.Serializers$BigIntegerSerializer,\
+ org.apache.fury.serializer.Serializers$ClassSerializer,\
+ org.apache.fury.serializer.Serializers$CurrencySerializer,\
+ org.apache.fury.serializer.Serializers$EmptyObjectSerializer,\
+ org.apache.fury.serializer.Serializers$RegexSerializer,\
+ org.apache.fury.serializer.Serializers$StringBufferSerializer,\
+ org.apache.fury.serializer.Serializers$StringBuilderSerializer,\
+ org.apache.fury.serializer.Serializers$URISerializer,\
+ org.apache.fury.serializer.Serializers$UUIDSerializer,\
+ org.apache.fury.serializer.Serializers,\
org.apache.fury.serializer.StringSerializer$Offset,\
org.apache.fury.serializer.StringSerializer,\
- org.apache.fury.serializer.Serializers,\
+ org.apache.fury.serializer.TimeSerializers$DateSerializer,\
+ org.apache.fury.serializer.TimeSerializers$DurationSerializer,\
+ org.apache.fury.serializer.TimeSerializers$InstantSerializer,\
+ org.apache.fury.serializer.TimeSerializers$LocalDateSerializer,\
+ org.apache.fury.serializer.TimeSerializers$LocalDateTimeSerializer,\
+ org.apache.fury.serializer.TimeSerializers$LocalTimeSerializer,\
+ org.apache.fury.serializer.TimeSerializers$MonthDaySerializer,\
+ org.apache.fury.serializer.TimeSerializers$OffsetDateTimeSerializer,\
+ org.apache.fury.serializer.TimeSerializers$OffsetTimeSerializer,\
+ org.apache.fury.serializer.TimeSerializers$PeriodSerializer,\
+ org.apache.fury.serializer.TimeSerializers$SqlDateSerializer,\
+ org.apache.fury.serializer.TimeSerializers$SqlTimeSerializer,\
+ org.apache.fury.serializer.TimeSerializers$TimestampSerializer,\
+ org.apache.fury.serializer.TimeSerializers$YearMonthSerializer,\
+ org.apache.fury.serializer.TimeSerializers$YearSerializer,\
+ org.apache.fury.serializer.TimeSerializers$ZoneOffsetSerializer,\
+ org.apache.fury.serializer.TimeSerializers$ZonedDateTimeSerializer,\
+ org.apache.fury.serializer.collection.CollectionSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$ArrayDequeSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$ArrayListSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$ArraysAsListSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$BitSetSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$CollectionsSingletonListSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$CollectionsSingletonSetSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$ConcurrentHashMapKeySetViewSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$ConcurrentSkipListSetSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$CopyOnWriteArrayListSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$EmptyListSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$EmptySetSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$EmptySortedSetSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$HashSetSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$LinkedHashSetSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$PriorityQueueSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$SetFromMapSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$SortedSetSerializer,\
+
org.apache.fury.serializer.collection.CollectionSerializers$VectorSerializer,\
+
org.apache.fury.serializer.collection.FuryArrayAsListSerializer$ArrayAsList,\
+ org.apache.fury.serializer.collection.FuryArrayAsListSerializer,\
+ org.apache.fury.serializer.collection.GuavaCollectionSerializers$1,\
+
org.apache.fury.serializer.collection.GuavaCollectionSerializers$1GuavaEmptyBiMap,\
+
org.apache.fury.serializer.collection.GuavaCollectionSerializers$1GuavaEmptySet,\
+
org.apache.fury.serializer.collection.GuavaCollectionSerializers$1GuavaEmptySortedMap,\
+
org.apache.fury.serializer.collection.GuavaCollectionSerializers$1GuavaEmptySortedSet,\
+
org.apache.fury.serializer.collection.GuavaCollectionSerializers$GuavaCollectionSerializer,\
+
org.apache.fury.serializer.collection.GuavaCollectionSerializers$GuavaMapSerializer,\
+
org.apache.fury.serializer.collection.GuavaCollectionSerializers$ImmutableBiMapSerializer,\
+
org.apache.fury.serializer.collection.GuavaCollectionSerializers$ImmutableListSerializer,\
+
org.apache.fury.serializer.collection.GuavaCollectionSerializers$ImmutableMapSerializer,\
+
org.apache.fury.serializer.collection.GuavaCollectionSerializers$ImmutableSetSerializer,\
+
org.apache.fury.serializer.collection.GuavaCollectionSerializers$ImmutableSortedMapSerializer,\
+
org.apache.fury.serializer.collection.GuavaCollectionSerializers$ImmutableSortedSetSerializer,\
+
org.apache.fury.serializer.collection.GuavaCollectionSerializers$RegularImmutableListSerializer,\
+ org.apache.fury.serializer.collection.GuavaCollectionSerializers,\
+
org.apache.fury.serializer.collection.ImmutableCollectionSerializers$ImmutableListSerializer,\
+
org.apache.fury.serializer.collection.ImmutableCollectionSerializers$ImmutableMapSerializer,\
+
org.apache.fury.serializer.collection.ImmutableCollectionSerializers$ImmutableSetSerializer,\
+ org.apache.fury.serializer.collection.ImmutableCollectionSerializers,\
+
org.apache.fury.serializer.collection.MapSerializers$ConcurrentHashMapSerializer,\
+
org.apache.fury.serializer.collection.MapSerializers$ConcurrentSkipListMapSerializer,\
+ org.apache.fury.serializer.collection.MapSerializers$EmptyMapSerializer,\
+
org.apache.fury.serializer.collection.MapSerializers$EmptySortedMapSerializer,\
+ org.apache.fury.serializer.collection.MapSerializers$EnumMapSerializer,\
+ org.apache.fury.serializer.collection.MapSerializers$HashMapSerializer,\
+ org.apache.fury.serializer.collection.MapSerializers$LazyMapSerializer,\
+
org.apache.fury.serializer.collection.MapSerializers$LinkedHashMapSerializer,\
+
org.apache.fury.serializer.collection.MapSerializers$SingletonMapSerializer,\
+ org.apache.fury.serializer.collection.MapSerializers$SortedMapSerializer,\
+ org.apache.fury.serializer.collection.SynchronizedSerializers$Offset,\
+
org.apache.fury.serializer.collection.SynchronizedSerializers$SynchronizedCollectionSerializer,\
+
org.apache.fury.serializer.collection.SynchronizedSerializers$SynchronizedMapSerializer,\
+ org.apache.fury.serializer.collection.SynchronizedSerializers,\
+ org.apache.fury.serializer.collection.UnmodifiableSerializers$Offset,\
+
org.apache.fury.serializer.collection.UnmodifiableSerializers$UnmodifiableCollectionSerializer,\
+
org.apache.fury.serializer.collection.UnmodifiableSerializers$UnmodifiableMapSerializer,\
+ org.apache.fury.serializer.collection.UnmodifiableSerializers,\
org.apache.fury.serializer.shim.ShimDispatcher,\
- org.apache.fury.memory.Platform,\
- org.apache.fury.util.unsafe._Lookup,\
- org.apache.fury.util.unsafe._JDKAccess,\
+ org.apache.fury.shaded.org.codehaus.janino.IClass$1,\
+ org.apache.fury.type.Descriptor$1,\
+ org.apache.fury.type.Descriptor,\
+ org.apache.fury.type.DescriptorGrouper,\
+ org.apache.fury.type.GenericType,\
+ org.apache.fury.type.Generics,\
org.apache.fury.type.Type,\
org.apache.fury.type.TypeUtils,\
- org.apache.fury.Fury,\
- org.apache.fury.type.Type,\
- org.apache.fury.serializer.JavaSerializer,\
- org.apache.fury.reflect.ReflectionUtils,\
- org.apache.fury.builder.ObjectCodecBuilder,\
- org.apache.fury.shaded.org.codehaus.janino.Java$ArrayType,\
- org.apache.fury.serializer.LocaleSerializer,\
-
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit$TypeImportOnDemandDeclaration,\
- org.apache.fury.shaded.org.codehaus.janino.Compiler,\
- org.apache.fury.shaded.org.codehaus.janino.UnitCompiler,\
- com.google.common.util.concurrent.SettableFuture,\
- org.apache.fury.config.FuryBuilder,\
- org.apache.fury.shaded.org.codehaus.janino.Java$MethodInvocation,\
-
org.apache.fury.shaded.org.codehaus.janino.Java$FunctionDeclarator$FormalParameter,\
- org.apache.fury.shaded.org.codehaus.janino.Java$ExpressionStatement,\
-
org.apache.fury.shaded.org.codehaus.janino.Java$FunctionDeclarator$FormalParameters,\
- org.apache.fury.shaded.org.codehaus.janino.Java$Rvalue,\
- org.apache.fury.shaded.javassist.util.proxy.DefineClassHelper,\
- org.apache.fury.shaded.org.codehaus.janino.Java$LocalVariableAccess,\
- org.apache.fury.shaded.org.codehaus.janino.ClassLoaderIClassLoader,\
- org.apache.fury.shaded.org.codehaus.janino.Java$Located$1,\
- org.apache.fury.shaded.org.codehaus.janino.Java$EmptyStatement,\
- org.apache.fury.shaded.org.codehaus.janino.Java$ForStatement,\
- org.apache.fury.shaded.org.codehaus.janino.Java$Type,\
- org.apache.fury.shaded.org.codehaus.janino.Java$Cast,\
- org.apache.fury.shaded.org.codehaus.janino.Java$BooleanRvalue,\
- org.apache.fury.shaded.org.codehaus.janino.IClass$PrimitiveIClass,\
- org.apache.fury.shaded.org.codehaus.janino.Compiler$CompilerIClassLoader,\
- org.apache.fury.shaded.javassist.util.proxy.SecurityActions,\
+ org.apache.fury.util.ClassLoaderUtils$ByteArrayClassLoader,\
+ org.apache.fury.util.ClassLoaderUtils$ParentClassLoader,\
+ org.apache.fury.util.ClassLoaderUtils,\
+ org.apache.fury.util.DelayedRef,\
+ org.apache.fury.util.function.Functions,\
+ org.apache.fury.util.GraalvmSupport,\
+ org.apache.fury.util.LoaderBinding$1,\
+ org.apache.fury.util.LoaderBinding$StagingType,\
+ org.apache.fury.util.LoaderBinding,\
+ org.apache.fury.util.StringUtils,\
+ org.apache.fury.util.record.RecordComponent,\
+ org.apache.fury.util.record.RecordUtils$1,\
+ org.apache.fury.util.record.RecordUtils$2,\
+ org.apache.fury.util.record.RecordUtils$3,\
+ org.apache.fury.util.record.RecordUtils,\
+ org.apache.fury.util.unsafe._JDKAccess$1,\
+ org.apache.fury.util.unsafe._JDKAccess,\
org.apache.fury.util.unsafe._Lookup,\
+ org.apache.fury.codegen.JaninoUtils$CodeStats,\
+ org.apache.fury.shaded.org.codehaus.commons.compiler.Location,\
+
org.apache.fury.shaded.org.codehaus.commons.compiler.util.iterator.Iterables,\
+
org.apache.fury.shaded.org.codehaus.commons.compiler.util.iterator.Iterables$1,\
+
org.apache.fury.shaded.org.codehaus.commons.compiler.util.iterator.Iterables$2,\
+
org.apache.fury.shaded.org.codehaus.commons.compiler.util.iterator.Iterables$3,\
+
org.apache.fury.shaded.org.codehaus.commons.compiler.util.iterator.Iterables$4,\
org.apache.fury.shaded.org.codehaus.commons.compiler.util.iterator.Iterables$5,\
- com.google.common.base.internal.Finalizer,\
- org.apache.fury.serializer.ReplaceResolveSerializer,\
- com.google.common.primitives.Primitives,\
- org.apache.fury.type.GenericType,\
- org.apache.fury.shaded.org.codehaus.janino.Java$BreakableStatement,\
-
org.apache.fury.shaded.org.codehaus.janino.Java$LocalVariableDeclarationStatement,\
- org.apache.fury.shaded.org.codehaus.janino.TokenStreamImpl$1,\
- org.apache.fury.shaded.org.codehaus.janino.Java$ThisReference,\
+ org.apache.fury.shaded.org.codehaus.janino.IType,\
+ org.apache.fury.shaded.org.codehaus.janino.Access,\
+ org.apache.fury.shaded.org.codehaus.janino.ClassFileIClass,\
+ org.apache.fury.shaded.org.codehaus.janino.ClassLoaderIClassLoader,\
+ org.apache.fury.shaded.org.codehaus.janino.CodeContext,\
+ org.apache.fury.shaded.org.codehaus.janino.CodeContext$1,\
+ org.apache.fury.shaded.org.codehaus.janino.CodeContext$BasicBlock,\
+ org.apache.fury.shaded.org.codehaus.janino.CodeContext$Branch,\
+
org.apache.fury.shaded.org.codehaus.janino.CodeContext$ExceptionTableEntry,\
+ org.apache.fury.shaded.org.codehaus.janino.CodeContext$FixUp,\
+ org.apache.fury.shaded.org.codehaus.janino.CodeContext$FourByteOffset,\
+ org.apache.fury.shaded.org.codehaus.janino.CodeContext$Inserter,\
+ org.apache.fury.shaded.org.codehaus.janino.CodeContext$LineNumberOffset,\
+ org.apache.fury.shaded.org.codehaus.janino.CodeContext$LocalScope,\
+ org.apache.fury.shaded.org.codehaus.janino.CodeContext$Offset,\
+ org.apache.fury.shaded.org.codehaus.janino.CodeContext$OffsetBranch,\
+ org.apache.fury.shaded.org.codehaus.janino.CodeContext$Relocatable,\
+ org.apache.fury.shaded.org.codehaus.janino.Compiler,\
+ org.apache.fury.shaded.org.codehaus.janino.Compiler$2,\
+ org.apache.fury.shaded.org.codehaus.janino.Compiler$CompilerIClassLoader,\
+ org.apache.fury.shaded.org.codehaus.janino.Descriptor,\
org.apache.fury.shaded.org.codehaus.janino.IClass,\
- org.apache.fury.shaded.org.codehaus.janino.Java$ClassLiteral,\
- org.apache.fury.resolver.ClassResolver$2,\
- org.apache.fury.meta.ClassDef,\
- org.apache.fury.meta.Encoders,\
- org.apache.fury.shaded.org.codehaus.janino.Parser$1,\
+ org.apache.fury.shaded.org.codehaus.janino.IClass$1,\
+ org.apache.fury.shaded.org.codehaus.janino.IClass$2,\
+ org.apache.fury.shaded.org.codehaus.janino.IClass$IAnnotation,\
+ org.apache.fury.shaded.org.codehaus.janino.IClass$IConstructor,\
+ org.apache.fury.shaded.org.codehaus.janino.IClass$IField,\
+ org.apache.fury.shaded.org.codehaus.janino.IClass$IInvocable,\
+ org.apache.fury.shaded.org.codehaus.janino.IClass$IMember,\
+ org.apache.fury.shaded.org.codehaus.janino.IClass$IMethod,\
+ org.apache.fury.shaded.org.codehaus.janino.IClass$PrimitiveIClass,\
+ org.apache.fury.shaded.org.codehaus.janino.IClassLoader,\
+ org.apache.fury.shaded.org.codehaus.janino.IClassLoader$1,\
+ org.apache.fury.shaded.org.codehaus.janino.IParameterizedType,\
+ org.apache.fury.shaded.org.codehaus.janino.IType,\
+ org.apache.fury.shaded.org.codehaus.janino.ITypeVariable,\
+ org.apache.fury.shaded.org.codehaus.janino.ITypeVariableOrIClass,\
+ org.apache.fury.shaded.org.codehaus.janino.JaninoOption,\
+ org.apache.fury.shaded.org.codehaus.janino.Java,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$AbstractAnnotation,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$AbstractClassDeclaration,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit$ImportDeclaration,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit$SingleStaticImportDeclaration,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit$SingleTypeImportDeclaration,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit$StaticImportOnDemandDeclaration,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit$TypeImportOnDemandDeclaration,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractTypeBodyDeclaration,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$AbstractTypeDeclaration,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$AccessModifier,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$AlternateConstructorInvocation,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$AmbiguousName,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Annotatable,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Annotation,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$AnnotationTypeDeclaration,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$AnonymousClassDeclaration,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ArrayAccessExpression,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ArrayCreationReference,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ArrayInitializerOrRvalue,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ArrayLength,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ArrayType,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$AssertStatement,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Assignment,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Atom,\
org.apache.fury.shaded.org.codehaus.janino.Java$BinaryOperation,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Block,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$BlockStatement,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$BooleanLiteral,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$BooleanRvalue,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$BreakStatement,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$BreakableStatement,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Cast,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$CatchClause,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$CatchParameter,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$CharacterLiteral,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ClassDeclaration,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$ClassInstanceCreationReference,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ClassLiteral,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$CompilationUnit,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ConditionalExpression,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ConstructorDeclarator,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ConstructorInvocation,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ContinuableStatement,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ContinueStatement,\
org.apache.fury.shaded.org.codehaus.janino.Java$Crement,\
- org.apache.fury.shaded.org.codehaus.janino.Java$ReturnStatement,\
- org.apache.fury.shaded.org.codehaus.janino.Java$WhileStatement,\
- org.apache.fury.shaded.org.codehaus.janino.Java$FunctionDeclarator,\
- org.apache.fury.shaded.org.codehaus.janino.Java$Atom,\
- org.apache.fury.shaded.org.codehaus.janino.Java$SimpleType,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$DoStatement,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$DocCommentable,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ElementValue,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$EmptyStatement,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$EnclosingScopeOfTypeDeclaration,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$EnumConstant,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$EnumDeclaration,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ExpressionStatement,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$FieldAccess,\
org.apache.fury.shaded.org.codehaus.janino.Java$FieldAccessExpression,\
-
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractTypeBodyDeclaration,\
- org.apache.fury.shaded.org.codehaus.janino.Parser,\
- org.apache.fury.shaded.org.codehaus.janino.Java$QualifiedThisReference,\
- org.apache.fury.shaded.org.codehaus.janino.Java$Assignment,\
- org.apache.fury.shaded.org.codehaus.janino.Java$NullLiteral,\
- org.apache.fury.shaded.org.codehaus.janino.Java$ParenthesizedExpression,\
- org.apache.fury.shaded.org.codehaus.janino.Java$Statement,\
- org.apache.fury.shaded.org.codehaus.janino.IClassLoader$1,\
- org.apache.fury.shaded.org.codehaus.janino.Java$VariableDeclarator,\
-
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit$SingleTypeImportDeclaration,\
- org.apache.fury.shaded.org.codehaus.janino.Java$MethodDeclarator,\
- com.google.common.base.FinalizableReferenceQueue,\
-
org.apache.fury.shaded.org.codehaus.janino.Java$AbstractCompilationUnit$ImportDeclaration,\
- org.apache.fury.codegen.JaninoUtils,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$FieldDeclaration,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$FieldDeclarationOrInitializer,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$FloatingPointLiteral,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ForEachStatement,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ForStatement,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$FunctionDeclarator,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$FunctionDeclarator$FormalParameter,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$FunctionDeclarator$FormalParameters,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$IfStatement,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Initializer,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$InnerClassDeclaration,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Instanceof,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$IntegerLiteral,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$InterfaceDeclaration,\
org.apache.fury.shaded.org.codehaus.janino.Java$Invocation,\
- org.apache.fury.shaded.org.codehaus.janino.ReflectionIClass,\
- org.apache.fury.util.record.RecordUtils,\
- org.apache.fury.logging.FuryLogger,\
- org.apache.fury.logging.LoggerFactory,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$LabeledStatement,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$LambdaBody,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$LambdaExpression,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$LambdaParameters,\
org.apache.fury.shaded.org.codehaus.janino.Java$Literal,\
- org.apache.fury.shaded.org.codehaus.janino.IClassLoader,\
- org.apache.fury.shaded.org.codehaus.janino.Java$PrimitiveType,\
- org.apache.fury.shaded.org.codehaus.janino.CodeContext,\
- org.apache.fury.serializer.collection.ImmutableCollectionSerializers,\
- org.apache.fury.shaded.org.codehaus.janino.IClass$2,\
- com.google.common.collect.RegularImmutableMap,\
- org.apache.fury.shaded.org.codehaus.janino.Descriptor,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$LocalClassDeclaration,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$LocalClassDeclarationStatement,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$LocalVariable,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$LocalVariableAccess,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$LocalVariableDeclarationStatement,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$LocalVariableSlot,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Locatable,\
org.apache.fury.shaded.org.codehaus.janino.Java$Located,\
- org.apache.fury.shaded.org.codehaus.janino.Java$ReferenceType,\
- org.apache.fury.shaded.org.codehaus.janino.Java$UnaryOperation,\
- org.apache.fury.util.ClassLoaderUtils,\
- org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$39,\
- org.apache.fury.shaded.org.codehaus.janino.Java$IntegerLiteral,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Located$1,\
org.apache.fury.shaded.org.codehaus.janino.Java$Lvalue,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$MarkerAnnotation,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$MemberAnnotationTypeDeclaration,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$MemberClassDeclaration,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$MemberEnumDeclaration,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$MemberInterfaceDeclaration,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$MemberTypeDeclaration,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$MethodDeclarator,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$MethodInvocation,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$MethodReference,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Modifier,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ModularCompilationUnit,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ModuleDirective,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$NamedClassDeclaration,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$NamedTypeDeclaration,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$NewAnonymousClassInstance,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$NewArray,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$NewClassInstance,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$NewInitializedArray,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$NullLiteral,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Package,\
org.apache.fury.shaded.org.codehaus.janino.Java$PackageDeclaration,\
- org.apache.fury.shaded.org.codehaus.janino.Java$FieldAccess,\
- org.apache.fury.shaded.org.codehaus.janino.Java$Block,\
- org.apache.fury.builder.AccessorHelper,\
- org.apache.fury.codegen.Expression$Literal,\
- org.apache.fury.shaded.org.codehaus.janino.Java$ContinuableStatement,\
- org.apache.fury.shaded.org.codehaus.janino.Java$IfStatement,\
- com.google.common.collect.RegularImmutableBiMap,\
- org.apache.fury.shaded.org.codehaus.janino.Java$ConstructorDeclarator,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$PackageMemberAnnotationTypeDeclaration,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$PackageMemberClassDeclaration,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$PackageMemberEnumDeclaration,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$PackageMemberInterfaceDeclaration,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$PackageMemberTypeDeclaration,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ParameterAccess,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ParenthesizedExpression,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Primitive,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$PrimitiveType,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$QualifiedThisReference,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ReferenceType,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ReturnStatement,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Rvalue,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Rvalue$1,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Rvalue$2,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$RvalueMemberType,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Scope,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$SimpleConstant,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$SimpleType,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Statement,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$StringLiteral,\
org.apache.fury.shaded.org.codehaus.janino.Java$SuperConstructorInvocation,\
- org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$44,\
- org.apache.fury.shaded.org.codehaus.janino.Java$AmbiguousName,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$SuperclassFieldAccessExpression,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$SuperclassMethodInvocation,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$SwitchStatement,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$SwitchStatement$SwitchBlockStatementGroup,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$SynchronizedStatement,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ThisReference,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$ThrowStatement,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$TryStatement,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$TryStatement$LocalVariableDeclaratorResource,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$TryStatement$Resource,\
+
org.apache.fury.shaded.org.codehaus.janino.Java$TryStatement$VariableAccessResource,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$Type,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$TypeArgument,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$TypeBodyDeclaration,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$TypeDeclaration,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$UnaryOperation,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$VariableDeclarator,\
+ org.apache.fury.shaded.org.codehaus.janino.Java$WhileStatement,\
+ org.apache.fury.shaded.org.codehaus.janino.MethodDescriptor,\
+ org.apache.fury.shaded.org.codehaus.janino.Mod,\
+ org.apache.fury.shaded.org.codehaus.janino.Parser,\
+ org.apache.fury.shaded.org.codehaus.janino.Parser$1,\
+ org.apache.fury.shaded.org.codehaus.janino.Parser$ClassDeclarationContext,\
+
org.apache.fury.shaded.org.codehaus.janino.Parser$MethodDeclarationContext,\
+ org.apache.fury.shaded.org.codehaus.janino.ReflectionIClass,\
+ org.apache.fury.shaded.org.codehaus.janino.ReflectionIClass$3,\
+
org.apache.fury.shaded.org.codehaus.janino.ReflectionIClass$ReflectionIConstructor,\
+
org.apache.fury.shaded.org.codehaus.janino.ReflectionIClass$ReflectionIField,\
+
org.apache.fury.shaded.org.codehaus.janino.ReflectionIClass$ReflectionIMethod,\
+ org.apache.fury.shaded.org.codehaus.janino.ResourceFinderIClassLoader,\
org.apache.fury.shaded.org.codehaus.janino.Scanner,\
- org.apache.fury.shaded.org.codehaus.janino.Java$FieldDeclaration,\
- org.apache.fury.memory.BoundsChecking,\
- org.apache.fury.shaded.org.codehaus.janino.Java$Package,\
- org.apache.fury.serializer.ArraySerializers,\
- org.apache.fury.serializer.ArraySerializers$ObjectArraySerializer,\
- org.apache.fury.shaded.org.codehaus.janino.Java$AccessModifier,\
- org.apache.fury.util.ClassLoaderUtils$ParentClassLoader,\
- com.google.common.collect.RegularImmutableSortedSet,\
- org.apache.fury.type.Descriptor,\
- org.apache.fury.serializer.PrimitiveSerializers$1,\
- org.apache.fury.collection.MultiKeyWeakMap,\
- org.apache.fury.serializer.collection.UnmodifiableSerializers,\
- org.apache.fury.codegen.CompileUnit,\
- org.apache.fury.serializer.StringSerializer,\
- com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper,\
- org.apache.fury.memory.MemoryBuffer,\
- com.google.common.math.IntMath$1,\
- org.apache.fury.resolver.ClassResolver,\
- org.apache.fury.codegen.CodegenContext,\
- org.apache.fury.serializer.collection.GuavaCollectionSerializers,\
- org.apache.fury.util.unsafe._JDKAccess,\
- org.apache.fury.codegen.CodeGenerator,\
- org.apache.fury.serializer.collection.SynchronizedSerializers,\
- org.apache.fury.util.ClassLoaderUtils$ByteArrayClassLoader,\
- com.google.common.collect.AbstractIterator$1,\
- com.google.common.cache.LocalCache,\
- org.apache.fury.serializer.LambdaSerializer,\
- com.google.common.collect.ImmutableSortedMap,\
- org.apache.fury.memory.MemoryUtils,\
- org.apache.fury.type.DescriptorGrouper,\
- sun.misc.Unsafe,\
- com.google.common.collect.Platform,\
- org.apache.fury.meta.MetaString,\
- org.apache.fury.meta.MetaStringDecoder$1,\
- org.apache.fury.meta.MetaStringEncoder$1,\
- org.apache.fury.meta.MetaString$Encoding,\
- org.apache.fury.meta.Encoders,\
- org.apache.fury.reflect.TypeRef$ClassOwnership,\
- org.apache.fury.reflect.TypeRef$ClassOwnership$1,\
- org.apache.fury.reflect.TypeRef$ClassOwnership$2,\
- org.apache.fury.resolver.DisallowedList,\
- org.apache.fury.util.StringUtils
+ org.apache.fury.shaded.org.codehaus.janino.StackMap,\
+ org.apache.fury.shaded.org.codehaus.janino.Token,\
+ org.apache.fury.shaded.org.codehaus.janino.TokenStream,\
+ org.apache.fury.shaded.org.codehaus.janino.TokenStreamImpl,\
+ org.apache.fury.shaded.org.codehaus.janino.TokenStreamImpl$1,\
+ org.apache.fury.shaded.org.codehaus.janino.TokenType,\
+ org.apache.fury.shaded.org.codehaus.janino.UnicodeUnescapeException,\
+ org.apache.fury.shaded.org.codehaus.janino.UnicodeUnescapeReader,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$11,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$12,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$13,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$14,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$14$1,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$15,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$15$1,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$16,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$16$1,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$17,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$17$1,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$17$2,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$19,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$19$1,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$2,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$20,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$22,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$23,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$24,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$25,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$26,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$28,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$28$1,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$28$2,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$28$2$1,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$29,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$3,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$30,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$32,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$33,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$34,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$35,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$36,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$37,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$38,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$39,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$40,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$41,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$42,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$43,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$44,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$6,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$7,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$8,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$ClassFileConsumer,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$Compilable2,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$SimpleIField,\
+ org.apache.fury.shaded.org.codehaus.janino.UnitCompiler$SwitchKind,\
+
org.apache.fury.shaded.org.codehaus.janino.Visitor$AbstractCompilationUnitVisitor,\
+ org.apache.fury.shaded.org.codehaus.janino.Visitor$AnnotationVisitor,\
+
org.apache.fury.shaded.org.codehaus.janino.Visitor$ArrayInitializerOrRvalueVisitor,\
+ org.apache.fury.shaded.org.codehaus.janino.Visitor$AtomVisitor,\
+ org.apache.fury.shaded.org.codehaus.janino.Visitor$BlockStatementVisitor,\
+
org.apache.fury.shaded.org.codehaus.janino.Visitor$ConstructorInvocationVisitor,\
+ org.apache.fury.shaded.org.codehaus.janino.Visitor$ElementValueVisitor,\
+
org.apache.fury.shaded.org.codehaus.janino.Visitor$FieldDeclarationOrInitializerVisitor,\
+
org.apache.fury.shaded.org.codehaus.janino.Visitor$FunctionDeclaratorVisitor,\
+ org.apache.fury.shaded.org.codehaus.janino.Visitor$ImportVisitor,\
+ org.apache.fury.shaded.org.codehaus.janino.Visitor$LvalueVisitor,\
+ org.apache.fury.shaded.org.codehaus.janino.Visitor$RvalueVisitor,\
+
org.apache.fury.shaded.org.codehaus.janino.Visitor$TryStatementResourceVisitor,\
+
org.apache.fury.shaded.org.codehaus.janino.Visitor$TypeBodyDeclarationVisitor,\
+ org.apache.fury.shaded.org.codehaus.janino.Visitor$TypeDeclarationVisitor,\
+ org.apache.fury.shaded.org.codehaus.janino.Visitor$TypeVisitor,\
+ org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser,\
+ org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$1,\
+ org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$10,\
+ org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$11,\
+ org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$2,\
+ org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$3,\
+ org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$4,\
+ org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$4$1,\
+ org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$5,\
+ org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$6,\
+ org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$7,\
+ org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$7$1,\
+ org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$8,\
+ org.apache.fury.shaded.org.codehaus.janino.util.AbstractTraverser$9,\
+ org.apache.fury.shaded.org.codehaus.janino.util.Annotatable,\
+ org.apache.fury.shaded.org.codehaus.janino.util.ClassFile,\
+ org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$1,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$AnnotationDefaultAttribute,\
+ org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$AttributeInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ClassFileException,\
+ org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$CodeAttribute,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$CodeAttribute$ExceptionTableEntry,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantClassInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantDoubleInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantFieldrefInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantFloatInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantIntegerInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantInterfaceMethodrefInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantInvokeDynamicInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantLongInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantMethodHandleInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantMethodTypeInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantMethodrefInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantNameAndTypeInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantPoolInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantStringInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantUtf8Info,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ConstantValuePoolInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$DeprecatedAttribute,\
+ org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ElementValue,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$ExceptionsAttribute,\
+ org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$FieldInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$LineNumberTableAttribute,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$LineNumberTableAttribute$Entry,\
+ org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$MethodInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$SourceFileAttribute,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$1,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$2,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$3,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$4,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$5,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$6,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$7,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$AppendFrame,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$ChopFrame,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$FullFrame,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$ObjectVariableInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$SameFrame,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$SameFrameExtended,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$SameLocals1StackItemFrame,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$SameLocals1StackItemFrameExtended,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$StackMapFrame,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$UninitializedVariableInfo,\
+
org.apache.fury.shaded.org.codehaus.janino.util.ClassFile$StackMapTableAttribute$VerificationTypeInfo,\
+ org.apache.fury.shaded.org.codehaus.janino.util.Traverser,\
+ sun.misc.Unsafe
diff --git
a/java/fury-core/src/test/java/org/apache/fury/serializer/CodegenSerializerTest.java
b/java/fury-core/src/test/java/org/apache/fury/serializer/CodegenSerializerTest.java
index 862cb434..7da08486 100644
---
a/java/fury-core/src/test/java/org/apache/fury/serializer/CodegenSerializerTest.java
+++
b/java/fury-core/src/test/java/org/apache/fury/serializer/CodegenSerializerTest.java
@@ -66,7 +66,7 @@ public class CodegenSerializerTest extends FuryTestBase {
}
@Test(dataProvider = "furyCopyConfig")
- public void testSimpleBean(Fury fury) {
+ public void testSimpleBeanCopy(Fury fury) {
B b = new B();
b.f1 = "str1";
b.f2 = 1;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]