public boolean getUseAsmEnabled () { return config.isUseAsm(); }
public boolean getUseAsmEnabled () { return config.isUseAsm(); }
/** @deprecated Use {@link #getFieldSerializerConfig()} to change the default {@link FieldSerializer} configuration. */ @Deprecated public boolean getAsmEnabled () { return fieldSerializerConfig.isUseAsm(); }
/** @deprecated Use {@link #getFieldSerializerConfig()} to change the default {@link FieldSerializer} configuration. */ @Deprecated public boolean getAsmEnabled () { return fieldSerializerConfig.isUseAsm(); }
private void createCachedFields (IntArray useAsm, List<Field> validFields, List<CachedField> cachedFields, int baseIndex) { if (config.isUseAsm() || !useMemRegions) { for (int i = 0, n = validFields.size(); i < n; i++) { Field field = validFields.get(i); int accessIndex = -1; if (access != null && useAsm.get(baseIndex + i) == 1) accessIndex = ((FieldAccess)access).getIndex(field.getName()); cachedFields.add(newCachedField(field, cachedFields.size(), accessIndex)); } } else { unsafeUtil.createUnsafeCacheFieldsAndRegions(validFields, cachedFields, baseIndex, useAsm); } }
private void createCachedFields (IntArray useAsm, List<Field> validFields, List<CachedField> cachedFields, int baseIndex) { if (config.isUseAsm() || !useMemRegions) { for (int i = 0, n = validFields.size(); i < n; i++) { Field field = validFields.get(i); int accessIndex = -1; if (access != null && useAsm.get(baseIndex + i) == 1) accessIndex = ((FieldAccess)access).getIndex(field.getName()); cachedFields.add(newCachedField(field, cachedFields.size(), accessIndex)); } } else { unsafeUtil.createUnsafeCacheFieldsAndRegions(validFields, cachedFields, baseIndex, useAsm); } }
CachedField newCachedField (Field field, int fieldIndex, int accessIndex) { Class[] fieldClass = new Class[] {field.getType()}; Type fieldGenericType = (config.isOptimizedGenerics()) ? field.getGenericType() : null; CachedField cachedField; if (!config.isOptimizedGenerics() || fieldGenericType == fieldClass[0]) { // For optimized generics this is a field without generic type parameters if (TRACE) trace("kryo", "Field " + field.getName() + ": " + fieldClass[0]); cachedField = newMatchingCachedField(field, accessIndex, fieldClass[0], fieldGenericType, null); } else { cachedField = genericsUtil.newCachedFieldOfGenericType(field, accessIndex, fieldClass, fieldGenericType); } if (cachedField instanceof ObjectField) { hasObjectFields = true; } cachedField.field = field; cachedField.varIntsEnabled = varIntsEnabled; if (!config.isUseAsm()) { cachedField.offset = unsafeUtil.getObjectFieldOffset(field); } cachedField.access = (FieldAccess)access; cachedField.accessIndex = accessIndex; cachedField.canBeNull = config.isFieldsCanBeNull() && !fieldClass[0].isPrimitive() && !field.isAnnotationPresent(NotNull.class); // Always use the same serializer for this field if the field's class is final. if (kryo.isFinal(fieldClass[0]) || config.isFixedFieldTypes()) cachedField.valueClass = fieldClass[0]; return cachedField; }
CachedField newCachedField (Field field, int fieldIndex, int accessIndex) { Class[] fieldClass = new Class[] {field.getType()}; Type fieldGenericType = (config.isOptimizedGenerics()) ? field.getGenericType() : null; CachedField cachedField; if (!config.isOptimizedGenerics() || fieldGenericType == fieldClass[0]) { // For optimized generics this is a field without generic type parameters if (TRACE) trace("kryo", "Field " + field.getName() + ": " + fieldClass[0]); cachedField = newMatchingCachedField(field, accessIndex, fieldClass[0], fieldGenericType, null); } else { cachedField = genericsUtil.newCachedFieldOfGenericType(field, accessIndex, fieldClass, fieldGenericType); } if (cachedField instanceof ObjectField) { hasObjectFields = true; } cachedField.field = field; cachedField.varIntsEnabled = varIntsEnabled; if (!config.isUseAsm()) { cachedField.offset = unsafeUtil.getObjectFieldOffset(field); } cachedField.access = (FieldAccess)access; cachedField.accessIndex = accessIndex; cachedField.canBeNull = config.isFieldsCanBeNull() && !fieldClass[0].isPrimitive() && !field.isAnnotationPresent(NotNull.class); // Always use the same serializer for this field if the field's class is final. if (kryo.isFinal(fieldClass[0]) || config.isFixedFieldTypes()) cachedField.valueClass = fieldClass[0]; return cachedField; }
if (useMemRegions && !config.isUseAsm() && unsafeAvailable) { try { Field[] allFieldsArray = (Field[])sortFieldsByOffsetMethod.invoke(null, allFields); if (config.isUseAsm() && !Util.IS_ANDROID && Modifier.isPublic(type.getModifiers()) && useAsm.indexOf(1) != -1) { try { access = FieldAccess.get(type);
if (useMemRegions && !config.isUseAsm() && unsafeAvailable) { try { Field[] allFieldsArray = (Field[])sortFieldsByOffsetMethod.invoke(null, allFields); if (config.isUseAsm() && !Util.IS_ANDROID && Modifier.isPublic(type.getModifiers()) && useAsm.indexOf(1) != -1) { try { access = FieldAccess.get(type);
CachedField newMatchingCachedField (Field field, int accessIndex, Class fieldClass, Type fieldGenericType, Class[] fieldGenerics) { CachedField cachedField; if (accessIndex != -1) { cachedField = getAsmFieldFactory().createCachedField(fieldClass, field, this); } else if (!config.isUseAsm()) { cachedField = getUnsafeFieldFactory().createCachedField(fieldClass, field, this); } else { cachedField = getObjectFieldFactory().createCachedField(fieldClass, field, this); if (config.isOptimizedGenerics()) { if (fieldGenerics != null) ((ObjectField)cachedField).generics = fieldGenerics; else if (fieldGenericType != null) { Class[] cachedFieldGenerics = FieldSerializerGenericsUtil.getGenerics(fieldGenericType, kryo); ((ObjectField)cachedField).generics = cachedFieldGenerics; if (TRACE) trace("kryo", "Field generics: " + Arrays.toString(cachedFieldGenerics)); } } } return cachedField; }
CachedField newMatchingCachedField (Field field, int accessIndex, Class fieldClass, Type fieldGenericType, Class[] fieldGenerics) { CachedField cachedField; if (accessIndex != -1) { cachedField = getAsmFieldFactory().createCachedField(fieldClass, field, this); } else if (!config.isUseAsm()) { cachedField = getUnsafeFieldFactory().createCachedField(fieldClass, field, this); } else { cachedField = getObjectFieldFactory().createCachedField(fieldClass, field, this); if (config.isOptimizedGenerics()) { if (fieldGenerics != null) ((ObjectField)cachedField).generics = fieldGenerics; else if (fieldGenericType != null) { Class[] cachedFieldGenerics = FieldSerializerGenericsUtil.getGenerics(fieldGenericType, kryo); ((ObjectField)cachedField).generics = cachedFieldGenerics; if (TRACE) trace("kryo", "Field generics: " + Arrays.toString(cachedFieldGenerics)); } } } return cachedField; }