Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions java/fury-core/src/main/java/io/fury/Fury.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import io.fury.memory.MemoryUtils;
import io.fury.pool.ThreadPoolFury;
import io.fury.resolver.ClassInfo;
import io.fury.resolver.ClassInfoCache;
import io.fury.resolver.ClassInfoHolder;
import io.fury.resolver.ClassResolver;
import io.fury.resolver.EnumStringResolver;
import io.fury.resolver.MapRefResolver;
Expand Down Expand Up @@ -287,9 +287,9 @@ public void writeRef(MemoryBuffer buffer, Object obj) {
}
}

public void writeRef(MemoryBuffer buffer, Object obj, ClassInfoCache classInfoCache) {
public void writeRef(MemoryBuffer buffer, Object obj, ClassInfoHolder classInfoHolder) {
if (!refResolver.writeRefOrNull(buffer, obj)) {
ClassInfo classInfo = classResolver.getClassInfo(obj.getClass(), classInfoCache);
ClassInfo classInfo = classResolver.getClassInfo(obj.getClass(), classInfoHolder);
classResolver.writeClass(buffer, classInfo);
writeData(buffer, classInfo, obj);
}
Expand Down Expand Up @@ -347,12 +347,12 @@ public void writeNullable(MemoryBuffer buffer, Object obj) {
}

/** Write object class and data without tracking ref. */
public void writeNullable(MemoryBuffer buffer, Object obj, ClassInfoCache classInfoCache) {
public void writeNullable(MemoryBuffer buffer, Object obj, ClassInfoHolder classInfoHolder) {
if (obj == null) {
buffer.writeByte(Fury.NULL_FLAG);
} else {
buffer.writeByte(Fury.NOT_NULL_VALUE_FLAG);
writeNonRef(buffer, obj, classResolver.getClassInfo(obj.getClass(), classInfoCache));
writeNonRef(buffer, obj, classResolver.getClassInfo(obj.getClass(), classInfoHolder));
}
}

Expand Down Expand Up @@ -740,20 +740,20 @@ public Object readRef(MemoryBuffer buffer) {
int nextReadRefId = refResolver.tryPreserveRefId(buffer);
if (nextReadRefId >= NOT_NULL_VALUE_FLAG) {
// ref value or not-null value
Object o = readDataInternal(buffer, classResolver.readAndUpdateClassInfoCache(buffer));
Object o = readDataInternal(buffer, classResolver.readAndUpdateClassInfoHolder(buffer));
refResolver.setReadObject(nextReadRefId, o);
return o;
} else {
return refResolver.getReadObject();
}
}

public Object readRef(MemoryBuffer buffer, ClassInfoCache classInfoCache) {
public Object readRef(MemoryBuffer buffer, ClassInfoHolder classInfoHolder) {
RefResolver refResolver = this.refResolver;
int nextReadRefId = refResolver.tryPreserveRefId(buffer);
if (nextReadRefId >= NOT_NULL_VALUE_FLAG) {
// ref value or not-null value
Object o = readDataInternal(buffer, classResolver.readClassInfo(buffer, classInfoCache));
Object o = readDataInternal(buffer, classResolver.readClassInfo(buffer, classInfoHolder));
refResolver.setReadObject(nextReadRefId, o);
return o;
} else {
Expand Down Expand Up @@ -785,11 +785,11 @@ public <T> T readRef(MemoryBuffer buffer, Serializer<T> serializer) {

/** Deserialize not-null and non-reference object from <code>buffer</code>. */
public Object readNonRef(MemoryBuffer buffer) {
return readDataInternal(buffer, classResolver.readAndUpdateClassInfoCache(buffer));
return readDataInternal(buffer, classResolver.readAndUpdateClassInfoHolder(buffer));
}

public Object readNonRef(MemoryBuffer buffer, ClassInfoCache classInfoCache) {
return readDataInternal(buffer, classResolver.readClassInfo(buffer, classInfoCache));
public Object readNonRef(MemoryBuffer buffer, ClassInfoHolder classInfoHolder) {
return readDataInternal(buffer, classResolver.readClassInfo(buffer, classInfoHolder));
}

/** Read object class and data without tracking ref. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
import io.fury.collection.Tuple2;
import io.fury.memory.MemoryBuffer;
import io.fury.resolver.ClassInfo;
import io.fury.resolver.ClassInfoCache;
import io.fury.resolver.ClassInfoHolder;
import io.fury.resolver.ClassResolver;
import io.fury.resolver.RefResolver;
import io.fury.serializer.CollectionSerializers;
Expand Down Expand Up @@ -275,7 +275,7 @@ protected void registerJITNotifyCallback() {
protected void addCommonImports() {
ctx.addImports(List.class, Map.class, Set.class);
ctx.addImports(Fury.class, MemoryBuffer.class, fury.getRefResolver().getClass());
ctx.addImports(ClassInfo.class, ClassInfoCache.class, ClassResolver.class);
ctx.addImports(ClassInfo.class, ClassInfoHolder.class, ClassResolver.class);
ctx.addImport(Generated.class);
ctx.addImports(LazyInitBeanSerializer.class, Serializers.EnumSerializer.class);
ctx.addImports(Serializer.class, StringSerializer.class);
Expand Down Expand Up @@ -570,7 +570,7 @@ protected Tuple2<Reference, Boolean> addClassInfoField(Class<?> cls) {
return classInfoRef;
}

protected Reference addClassInfoCacheField(Class<?> cls) {
protected Reference addClassInfoHolderField(Class<?> cls) {
// Final type need to write classinfo when meta share enabled.
String key;
if (Modifier.isFinal(cls.getModifiers())) {
Expand All @@ -582,12 +582,12 @@ protected Reference addClassInfoCacheField(Class<?> cls) {
if (reference != null) {
return reference;
}
Expression classInfoCacheExpr =
inlineInvoke(classResolverRef, "nilClassInfoCache", classInfoCacheTypeToken);
String name = ctx.newName(cls, "ClassInfoCache");
ctx.addField(ctx.type(ClassInfoCache.class), name, classInfoCacheExpr, true);
Expression classInfoHolderExpr =
inlineInvoke(classResolverRef, "nilClassInfoHolder", classInfoHolderTypeToken);
String name = ctx.newName(cls, "ClassInfoHolder");
ctx.addField(ctx.type(ClassInfoHolder.class), name, classInfoHolderExpr, true);
// The class info field read only once, no need to shallow.
reference = new Reference(name, classInfoCacheTypeToken);
reference = new Reference(name, classInfoHolderTypeToken);
sharedFieldMap.put(key, reference);
return reference;
}
Expand All @@ -607,13 +607,13 @@ protected Expression readClassInfo(Class<?> cls, Expression buffer, boolean inli
classResolverRef, "readClassInfo", classInfoTypeToken, buffer, classInfoRef);
}
}
Reference classInfoCacheRef = addClassInfoCacheField(cls);
Reference classInfoHolderRef = addClassInfoHolderField(cls);
if (inlineReadClassInfo) {
return inlineInvoke(
classResolverRef, "readClassInfo", classInfoTypeToken, buffer, classInfoCacheRef);
classResolverRef, "readClassInfo", classInfoTypeToken, buffer, classInfoHolderRef);
} else {
return new Invoke(
classResolverRef, "readClassInfo", classInfoTypeToken, buffer, classInfoCacheRef);
classResolverRef, "readClassInfo", classInfoTypeToken, buffer, classInfoHolderRef);
}
}

Expand Down Expand Up @@ -814,7 +814,7 @@ private Tuple2<Expression, Invoke> writeElementsHeader(
return Tuple2.of(bitmap, null);
} else {
Expression elementTypeExpr = getClassExpr(elementType);
Expression classInfoHolder = addClassInfoCacheField(elementType);
Expression classInfoHolder = addClassInfoHolderField(elementType);
Expression bitmap;
if (trackingRef) {
if (elementType == Object.class) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
import io.fury.collection.Tuple2;
import io.fury.memory.MemoryBuffer;
import io.fury.resolver.ClassInfo;
import io.fury.resolver.ClassInfoCache;
import io.fury.resolver.ClassInfoHolder;
import io.fury.type.Descriptor;
import io.fury.util.Platform;
import io.fury.util.ReflectionUtils;
Expand Down Expand Up @@ -80,7 +80,7 @@ public abstract class CodecBuilder {
static TypeToken<Object[]> objectArrayTypeToken = TypeToken.of(Object[].class);
static TypeToken<MemoryBuffer> bufferTypeToken = TypeToken.of(MemoryBuffer.class);
static TypeToken<ClassInfo> classInfoTypeToken = TypeToken.of(ClassInfo.class);
static TypeToken<ClassInfoCache> classInfoCacheTypeToken = TypeToken.of(ClassInfoCache.class);
static TypeToken<ClassInfoHolder> classInfoHolderTypeToken = TypeToken.of(ClassInfoHolder.class);

protected final CodegenContext ctx;
protected final TypeToken<?> beanType;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@
import io.fury.serializer.Serializer;

/**
* A helper class for caching {@link ClassInfo} to reduce map loop up.
* A helper class for holding and update {@link ClassInfo} to reduce map look-up.
*
* @author chaokunyang
*/
@SuppressWarnings("rawtypes")
public class ClassInfoCache {
public class ClassInfoHolder {
public ClassInfo classInfo;

public ClassInfoCache(ClassInfo classInfo) {
public ClassInfoHolder(ClassInfo classInfo) {
this.classInfo = classInfo;
}

Expand All @@ -37,6 +37,6 @@ public Serializer getSerializer() {

@Override
public String toString() {
return "ClassInfoCache{" + classInfo + '}';
return "Holder{" + classInfo + '}';
}
}
Loading