This is an automated email from the ASF dual-hosted git repository.

amashenkov pushed a commit to branch gg-13618-asm
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/gg-13618-asm by this push:
     new a61b6b9  Drop generated serialized compiled with JDK.
a61b6b9 is described below

commit a61b6b90e48f8efb226420eb5b81ae1d21fb0116
Author: Andrew Mashenkov <[email protected]>
AuthorDate: Thu Dec 31 17:15:46 2020 +0300

    Drop generated serialized compiled with JDK.
---
 .../schema/marshaller/SerializerFactory.java       |   4 +-
 .../IdentityObjectMarshallerExprGenerator.java     |  66 ----
 .../codegen/MarshallerCodeGenerator.java           |  58 ---
 .../codegen/ObjectMarshallerCodeGenerator.java     | 114 ------
 .../marshaller/codegen/SerializerGenerator.java    | 387 ---------------------
 .../codegen/TupleColumnAccessCodeGenerator.java    | 159 ---------
 .../benchmarks/SerializerBenchmarkTest.java        |   4 +-
 .../schema/marshaller/JavaSerializerTest.java      |   2 -
 8 files changed, 3 insertions(+), 791 deletions(-)

diff --git 
a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/SerializerFactory.java
 
b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/SerializerFactory.java
index 77b784c..4c28f4b 100644
--- 
a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/SerializerFactory.java
+++ 
b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/SerializerFactory.java
@@ -18,7 +18,7 @@
 package org.apache.ignite.internal.schema.marshaller;
 
 import org.apache.ignite.internal.schema.SchemaDescriptor;
-import 
org.apache.ignite.internal.schema.marshaller.codegen.SerializerGenerator;
+import org.apache.ignite.internal.schema.marshaller.asm.AsmSerializerGenerator;
 import 
org.apache.ignite.internal.schema.marshaller.reflection.JavaSerializerFactory;
 import org.apache.ignite.lang.IgniteExperimental;
 
@@ -31,7 +31,7 @@ public interface SerializerFactory {
      * @return Serializer factory back by code generator.
      */
     public static SerializerFactory createGeneratedSerializerFactory() {
-        return new SerializerGenerator();
+        return new AsmSerializerGenerator();
     }
 
     /**
diff --git 
a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/codegen/IdentityObjectMarshallerExprGenerator.java
 
b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/codegen/IdentityObjectMarshallerExprGenerator.java
deleted file mode 100644
index 975599b..0000000
--- 
a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/codegen/IdentityObjectMarshallerExprGenerator.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.schema.marshaller.codegen;
-
-import com.squareup.javapoet.CodeBlock;
-import com.squareup.javapoet.TypeSpec;
-import org.apache.ignite.internal.schema.marshaller.Serializer;
-
-/**
- * Generate {@link Serializer} method's bodies for simple types.
- */
-class IdentityObjectMarshallerExprGenerator implements MarshallerCodeGenerator 
{
-    /** Tuple column accessor. */
-    private final TupleColumnAccessCodeGenerator columnAccessor;
-
-    /**
-     * Constructor.
-     *
-     * @param columnAccessor Tuple column code generator.
-     */
-    IdentityObjectMarshallerExprGenerator(TupleColumnAccessCodeGenerator 
columnAccessor) {
-        this.columnAccessor = columnAccessor;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isSimpleType() {
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public CodeBlock unmarshallObjectCode(String tupleExpr) {
-        return CodeBlock.builder()
-            .addStatement("return $L", columnAccessor.read(tupleExpr))
-            .build();
-    }
-
-    /** {@inheritDoc} */
-    @Override public CodeBlock marshallObjectCode(String asm, String objVar) {
-        return columnAccessor.write(asm, objVar);
-    }
-
-    /** {@inheritDoc} */
-    @Override public CodeBlock getValueCode(String objVar, int colIdx) {
-        return CodeBlock.of(objVar);
-    }
-
-    /** {@inheritDoc} */
-    @Override public void initStaticHandlers(TypeSpec.Builder builder, String 
tClassExpr, CodeBlock.Builder staticBuilder) {
-        throw new UnsupportedOperationException("Static handlers are not 
applicable to simple types.");
-    }
-}
diff --git 
a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/codegen/MarshallerCodeGenerator.java
 
b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/codegen/MarshallerCodeGenerator.java
deleted file mode 100644
index b2547d0..0000000
--- 
a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/codegen/MarshallerCodeGenerator.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.schema.marshaller.codegen;
-
-import com.squareup.javapoet.CodeBlock;
-import com.squareup.javapoet.TypeSpec;
-
-/**
- * Marshaller code generator.
- */
-interface MarshallerCodeGenerator {
-    /**
-     * @return {@code true} if it is simple object marshaller, {@code false} 
otherwise.
-     */
-    boolean isSimpleType();
-
-    /**
-     * @param tupleExpr Tuple to read from.
-     * @return Unmarshall object code.
-     */
-    CodeBlock unmarshallObjectCode(String tupleExpr);
-
-    /**
-     * @param asm Tuple assembler to write to.
-     * @param objVar Object to serialize.
-     * @return Marshall object code.
-     */
-    CodeBlock marshallObjectCode(String asm, String objVar);
-
-    /**
-     * @param objVar Object var.
-     * @param colIdx Column index.
-     * @return Object field value for given column.
-     */
-    CodeBlock getValueCode(String objVar, int colIdx);
-
-    /**
-     * @param classBuilder Class builder.
-     * @param tClassExpr Target class expression.
-     * @param staticInitBuilder Static initializer builder.
-     */
-    void initStaticHandlers(TypeSpec.Builder classBuilder, String tClassExpr, 
CodeBlock.Builder staticInitBuilder);
-}
diff --git 
a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/codegen/ObjectMarshallerCodeGenerator.java
 
b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/codegen/ObjectMarshallerCodeGenerator.java
deleted file mode 100644
index 0330075..0000000
--- 
a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/codegen/ObjectMarshallerCodeGenerator.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.schema.marshaller.codegen;
-
-import com.squareup.javapoet.CodeBlock;
-import com.squareup.javapoet.FieldSpec;
-import com.squareup.javapoet.TypeSpec;
-import java.lang.invoke.VarHandle;
-import java.lang.reflect.Field;
-import javax.lang.model.element.Modifier;
-import org.apache.ignite.internal.schema.Columns;
-import org.apache.ignite.internal.schema.marshaller.MarshallerUtil;
-import org.apache.ignite.internal.schema.marshaller.Serializer;
-
-/**
- * Generates {@link Serializer} methods code.
- */
-class ObjectMarshallerCodeGenerator implements MarshallerCodeGenerator {
-    /** Target object factory var. */
-    private final String objectFactoryVar;
-
-    /** Mapped columns. */
-    private final Columns columns;
-
-    /** Object field access expression generators. */
-    private final TupleColumnAccessCodeGenerator[] columnAccessessors;
-
-    /**
-     * Constructor.
-     *
-     * @param tClass Target object class.
-     * @param objectFactoryVar Target object factory var.
-     * @param columns Column object is mapped to.
-     * @param firstColIdx Column index offset.
-     */
-    public ObjectMarshallerCodeGenerator(Class<?> tClass, String 
objectFactoryVar, Columns columns, int firstColIdx) {
-        this.objectFactoryVar = objectFactoryVar;
-
-        this.columns = columns;
-        columnAccessessors = new 
TupleColumnAccessCodeGenerator[this.columns.length()];
-        try {
-            for (int i = 0; i < columns.length(); i++) {
-                final Field field = 
tClass.getDeclaredField(columns.column(i).name());
-
-                columnAccessessors[i] = 
TupleColumnAccessCodeGenerator.createAccessor(MarshallerUtil.mode(field.getType()),
 i + firstColIdx);
-            }
-        }
-        catch (NoSuchFieldException ex) {
-            throw new IllegalStateException(ex);
-        }
-    }
-    /** {@inheritDoc} */
-    @Override public boolean isSimpleType() {
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override public CodeBlock unmarshallObjectCode(String tupleExpr) {
-        final CodeBlock.Builder builder = CodeBlock.builder()
-            .addStatement("Object obj = $L.create()", objectFactoryVar);
-
-        for (int i = 0; i < columnAccessessors.length; i++)
-            builder.addStatement("FIELD_HANDLE_$L.set(obj, $L)", 
columnAccessessors[i].columnIdx(), columnAccessessors[i].read(tupleExpr));
-
-        builder.addStatement("return obj");
-        return builder.build();
-    }
-
-    /** {@inheritDoc} */
-    @Override public CodeBlock getValueCode(String objVar, int i) {
-        return CodeBlock.of("($T)FIELD_HANDLE_$L.get($L)", 
columnAccessessors[i].mappedType(), columnAccessessors[i].columnIdx(), objVar);
-    }
-
-    /** {@inheritDoc} */
-    @Override public CodeBlock marshallObjectCode(String asm, String objVar) {
-        final CodeBlock.Builder builder = CodeBlock.builder();
-
-        for (int i = 0; i < columnAccessessors.length; i++)
-            builder.add(columnAccessessors[i].write(asm, getValueCode(objVar, 
i).toString()));
-
-        return builder.build();
-    }
-
-    /** {@inheritDoc} */
-    @Override public void initStaticHandlers(TypeSpec.Builder builder, String 
tClassExpr, CodeBlock.Builder staticBuilder) {
-        for (int i = 0; i < columnAccessessors.length; i++) {
-            builder.addField(FieldSpec.builder(
-                VarHandle.class,
-                CodeBlock.of("FIELD_HANDLE_$L", 
columnAccessessors[i].columnIdx()).toString(),
-                Modifier.PRIVATE,
-                Modifier.FINAL,
-                Modifier.STATIC)
-                .build());
-
-            staticBuilder.addStatement("FIELD_HANDLE_$L = 
lookup.unreflectVarHandle($L.getDeclaredField($S))",
-                columnAccessessors[i].columnIdx(), tClassExpr, 
columns.column(i).name());
-        }
-    }
-}
diff --git 
a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/codegen/SerializerGenerator.java
 
b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/codegen/SerializerGenerator.java
deleted file mode 100644
index d37bd0c..0000000
--- 
a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/codegen/SerializerGenerator.java
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.schema.marshaller.codegen;
-
-import com.squareup.javapoet.AnnotationSpec;
-import com.squareup.javapoet.ArrayTypeName;
-import com.squareup.javapoet.CodeBlock;
-import com.squareup.javapoet.FieldSpec;
-import com.squareup.javapoet.JavaFile;
-import com.squareup.javapoet.MethodSpec;
-import com.squareup.javapoet.ParameterizedTypeName;
-import com.squareup.javapoet.TypeName;
-import com.squareup.javapoet.TypeSpec;
-import java.lang.invoke.MethodHandles;
-import java.lang.reflect.InvocationTargetException;
-import java.util.concurrent.TimeUnit;
-import javax.annotation.processing.Generated;
-import javax.lang.model.element.Modifier;
-import jdk.jfr.Experimental;
-import org.apache.ignite.internal.schema.Columns;
-import org.apache.ignite.internal.schema.SchemaDescriptor;
-import org.apache.ignite.internal.schema.Tuple;
-import org.apache.ignite.internal.schema.TupleAssembler;
-import org.apache.ignite.internal.schema.marshaller.AbstractSerializer;
-import org.apache.ignite.internal.schema.marshaller.BinaryMode;
-import org.apache.ignite.internal.schema.marshaller.CompilerUtils;
-import org.apache.ignite.internal.schema.marshaller.MarshallerUtil;
-import org.apache.ignite.internal.schema.marshaller.SerializationException;
-import org.apache.ignite.internal.schema.marshaller.Serializer;
-import org.apache.ignite.internal.schema.marshaller.SerializerFactory;
-import org.apache.ignite.internal.util.ObjectFactory;
-import org.jetbrains.annotations.Nullable;
-
-/**
- * {@link Serializer} code generator.
- */
-@Experimental
-public class SerializerGenerator implements SerializerFactory {
-    /** Serializer package name. */
-    public static final String SERIALIZER_PACKAGE_NAME = 
"org.apache.ignite.internal.schema.marshaller";
-
-    /** Serializer package name prefix. */
-    public static final String SERIALIZER_CLASS_NAME_PREFIX = 
"SerializerForSchema_";
-
-    /** {@inheritDoc} */
-    @Override public Serializer create(
-        SchemaDescriptor schema,
-        Class<?> keyClass,
-        Class<?> valClass
-    ) {
-        final boolean isDebugEnabled = false; // log.isDebugEnabled();
-        final String className = SERIALIZER_CLASS_NAME_PREFIX + 
schema.version();
-
-        try {
-            // Generate Serializer code.
-            long generated = System.nanoTime();
-            JavaFile javaFile = generateSerializerClassCode(className, schema, 
keyClass, valClass);
-            generated = System.nanoTime() - generated;
-
-            if (isDebugEnabled)
-                System.out.println(javaFile.toString());
-
-            // Compile.
-            long compilation = System.nanoTime();
-            ClassLoader loader = CompilerUtils.compileCode(javaFile);
-            compilation = System.nanoTime() - compilation;
-
-            //TODO: pass code to logger on trace level.
-            if (isDebugEnabled)
-                System.out.println("Serializer created: generated=" + 
TimeUnit.NANOSECONDS.toMicros(generated) + "us" +
-                    ", compiled=" + TimeUnit.NANOSECONDS.toMicros(compilation) 
+ "us." /*+ javaFile.toString()*/);
-
-            // Instantiate serializer.
-            return (Serializer)loader.loadClass(javaFile.packageName + '.' + 
className)
-                .getDeclaredConstructor(SchemaDescriptor.class)
-                .newInstance(schema);
-
-        }
-        catch (InstantiationException | ClassNotFoundException | 
NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
-            throw new IllegalStateException("Failed to create serializer for 
key-value pair: schemaVer=" + schema.version() +
-                ", keyClass=" + keyClass.getSimpleName() + ", valueClass=" + 
valClass.getSimpleName(), e);
-        }
-    }
-
-    /**
-     * Generates serializer code.
-     *
-     * @param className Serializer class name.
-     * @param schema Schema descriptor.
-     * @param keyClass Key class.
-     * @param valClass Value class.
-     * @return Generated java file representation.
-     */
-    private JavaFile generateSerializerClassCode(String className, 
SchemaDescriptor schema, Class<?> keyClass,
-        Class<?> valClass) {
-        try {
-            // Build code generators.
-            final MarshallerCodeGenerator keyMarsh = 
createObjectMarshaller(keyClass, "keyFactory", schema.keyColumns(), 0);
-            final MarshallerCodeGenerator valMarsh = 
createObjectMarshaller(valClass, "valFactory", schema.valueColumns(), 
schema.keyColumns().length());
-
-            final TypeSpec.Builder classBuilder = 
TypeSpec.classBuilder(className)
-                .superclass(AbstractSerializer.class)
-                .addModifiers(Modifier.PUBLIC, Modifier.FINAL)
-                
.addAnnotation(AnnotationSpec.builder(Generated.class).addMember("value", "$S", 
getClass().getName()).build());
-
-            initStaticFields(keyMarsh, valMarsh, keyClass, valClass, 
classBuilder);
-
-            classBuilder
-                .addField(ParameterizedTypeName.get(ObjectFactory.class), 
"keyFactory", Modifier.PRIVATE, Modifier.FINAL)
-                .addField(ParameterizedTypeName.get(ObjectFactory.class), 
"valFactory", Modifier.PRIVATE, Modifier.FINAL)
-                .addMethod(
-                    // Constructor.
-                    MethodSpec.constructorBuilder()
-                        .addModifiers(Modifier.PUBLIC)
-                        .addParameter(SchemaDescriptor.class, "schema")
-                        .addStatement("super(schema)")
-                        .addStatement("this.keyFactory = 
$T.factoryForClass(KEY_CLASS)", MarshallerUtil.class)
-                        .addStatement("this.valFactory = 
$T.factoryForClass(VALUE_CLASS)", MarshallerUtil.class)
-                        .build()
-                )
-                .addMethod(generateTupleAsseblerFactoryMethod(schema, 
keyMarsh, valMarsh))
-                .addMethod(generateSerializeMethod(keyMarsh, valMarsh))
-                .addMethod(generateDeserializeKeyMethod(keyMarsh))
-                .addMethod(generateDeserializeValueMethod(valMarsh));
-
-            return JavaFile
-                .builder(SERIALIZER_PACKAGE_NAME, classBuilder.build())
-                .addStaticImport(MethodHandles.class, "Lookup")
-                .skipJavaLangImports(true)
-                .indent("    ")
-                .build();
-        }
-        catch (Exception ex) {
-            throw new IllegalStateException(ex);
-        }
-    }
-
-    /**
-     * @param keyMarsh Key marshaller code generator.
-     * @param valMarsh Value marshaller code generator.
-     * @param classBuilder Serializer class builder.
-     */
-    private void initStaticFields(
-        MarshallerCodeGenerator keyMarsh,
-        MarshallerCodeGenerator valMarsh,
-        Class<?> keyClass,
-        Class<?> valueClass,
-        TypeSpec.Builder classBuilder
-    ) {
-        classBuilder.addField(FieldSpec.builder(
-            Class.class,
-            "KEY_CLASS",
-            Modifier.PRIVATE,
-            Modifier.FINAL,
-            Modifier.STATIC)
-            .build());
-
-        classBuilder.addField(FieldSpec.builder(
-            Class.class,
-            "VALUE_CLASS",
-            Modifier.PRIVATE,
-            Modifier.FINAL,
-            Modifier.STATIC)
-            .build());
-
-        final CodeBlock.Builder staticInitBuilder = CodeBlock.builder()
-            .addStatement("$T.Lookup lookup", MethodHandles.class)
-            .beginControlFlow("try");
-
-        // Avoid direct class name usage in code to avoid potential linkage 
errors.
-        staticInitBuilder.addStatement("KEY_CLASS = $T.forName($S)", 
Class.class, keyClass.getName());
-        staticInitBuilder.addStatement("VALUE_CLASS = $T.forName($S)", 
Class.class, valueClass.getName());
-
-        if (!keyMarsh.isSimpleType()) {
-            staticInitBuilder.addStatement(
-                "lookup = $T.privateLookupIn(KEY_CLASS, $T.lookup())",
-                MethodHandles.class,
-                MethodHandles.class
-            );
-
-            keyMarsh.initStaticHandlers(classBuilder, "KEY_CLASS", 
staticInitBuilder);
-        }
-
-        if (!valMarsh.isSimpleType()) {
-            staticInitBuilder.addStatement(
-                "lookup = $T.privateLookupIn(VALUE_CLASS, $T.lookup())",
-                MethodHandles.class,
-                MethodHandles.class
-            );
-
-            valMarsh.initStaticHandlers(classBuilder, "VALUE_CLASS", 
staticInitBuilder);
-        }
-
-        staticInitBuilder
-            .nextControlFlow(
-                "catch ($T | $T ex)",
-                ReflectiveOperationException.class,
-                SecurityException.class
-            )
-            .addStatement("throw new $T(ex)", IllegalStateException.class)
-            .endControlFlow();
-
-        classBuilder.addStaticBlock(staticInitBuilder.build());
-    }
-
-    /**
-     * @param schema Schema descriptor.
-     * @param keyMarsh Key marshaller code generator.
-     * @param valMarsh Value marshaller code generator.
-     * @return Tuple accembler factory method spec.
-     */
-    private MethodSpec generateTupleAsseblerFactoryMethod(SchemaDescriptor 
schema, MarshallerCodeGenerator keyMarsh,
-        MarshallerCodeGenerator valMarsh) {
-        final MethodSpec.Builder builder = MethodSpec
-            .methodBuilder("createAssembler")
-            .addAnnotation(Override.class)
-            .addModifiers(Modifier.PROTECTED, Modifier.FINAL)
-            .addParameter(Object.class, "key", Modifier.FINAL)
-            .addParameter(Object.class, "val", Modifier.FINAL)
-            .returns(TupleAssembler.class)
-
-            .addStatement("int varlenKeyCols = 0; int varlenValueCols = 0")
-            .addStatement("int varlenKeyColsSize = 0; int varlenValueColsSize 
= 0")
-            .addStatement("$T keyCols = schema.keyColumns()", Columns.class)
-            .addStatement("$T valCols = schema.valueColumns()", Columns.class);
-
-        Columns keyCols = schema.keyColumns();
-        if (keyCols.firstVarlengthColumn() >= 0) {
-            final CodeBlock.Builder block = CodeBlock.builder().indent()
-                .addStatement("$T fVal", Object.class);// Temporary vars.
-
-            for (int i = keyCols.firstVarlengthColumn(); i < keyCols.length(); 
i++) {
-                assert !keyCols.column(i).type().spec().fixedLength();
-
-                block.addStatement("fVal = $L", keyMarsh.getValueCode("key", 
i).toString());
-
-                block.beginControlFlow("if (fVal != null)")
-                    .addStatement("varlenKeyColsSize += $T.getValueSize(fVal, 
keyCols.column($L).type())", MarshallerUtil.class, i)
-                    .addStatement("varlenKeyCols++")
-                    .endControlFlow();
-            }
-            block.unindent();
-
-            builder
-                .addCode("{\n")
-                .addCode(block.build())
-                .addCode("}\n");
-        }
-
-        Columns valCols = schema.valueColumns();
-        if (valCols.firstVarlengthColumn() >= 0) {
-            final CodeBlock.Builder block = CodeBlock.builder().indent()
-                .addStatement("$T fVal", Object.class);// Temporary vars.
-
-            for (int i = valCols.firstVarlengthColumn(); i < valCols.length(); 
i++) {
-                assert !valCols.column(i).type().spec().fixedLength();
-
-                block.addStatement("fVal = $L", valMarsh.getValueCode("val", 
i).toString());
-
-                block.beginControlFlow("if (fVal != null)")
-                    .addStatement("varlenValueColsSize += 
$T.getValueSize(fVal, valCols.column($L).type())", MarshallerUtil.class, i)
-                    .addStatement("varlenValueCols++")
-                    .endControlFlow();
-            }
-            block.unindent();
-
-            builder
-                .addCode("{\n")
-                .addCode(block.build())
-                .addCode("}\n");
-        }
-
-        builder.addStatement("int size = $T.tupleSize(keyCols, varlenKeyCols, 
varlenKeyColsSize," +
-            "valCols, varlenValueCols, varlenValueColsSize)", 
TupleAssembler.class);
-
-        builder.addStatement("return new $T(schema, size, varlenKeyCols, 
varlenValueCols)", TupleAssembler.class);
-
-        return builder.build();
-    }
-
-    /**
-     * @param valMarsh Value marshaller code generator.
-     * @return Deserialize value method spec.
-     */
-    private MethodSpec generateDeserializeValueMethod(MarshallerCodeGenerator 
valMarsh) {
-        return MethodSpec
-            .methodBuilder("deserializeValue0")
-            .addAnnotation(Override.class)
-            .addModifiers(Modifier.PROTECTED, Modifier.FINAL)
-            .addParameter(Tuple.class, "tuple", Modifier.FINAL)
-            .addException(SerializationException.class)
-            .returns(TypeName.OBJECT)
-
-            .beginControlFlow("try")
-            .addCode(valMarsh.unmarshallObjectCode("tuple"))
-            .nextControlFlow("catch($T th)", Throwable.class)
-            .addStatement("throw new $T(th)", SerializationException.class)
-            .endControlFlow()
-            .build();
-    }
-
-    /**
-     * @param keyMarsh Key marshaller code generator.
-     * @return Deserialize key method spec.
-     */
-    private MethodSpec generateDeserializeKeyMethod(MarshallerCodeGenerator 
keyMarsh) {
-        return MethodSpec
-            .methodBuilder("deserializeKey0")
-            .addAnnotation(Override.class)
-            .addModifiers(Modifier.PROTECTED, Modifier.FINAL)
-            .addParameter(Tuple.class, "tuple", Modifier.FINAL)
-            .addException(SerializationException.class)
-            .returns(TypeName.OBJECT)
-
-            .beginControlFlow("try")
-            .addCode(keyMarsh.unmarshallObjectCode("tuple"))
-            .nextControlFlow("catch($T th)", Throwable.class)
-            .addStatement("throw new $T(th)", SerializationException.class)
-            .endControlFlow()
-            .build();
-    }
-
-    /**
-     * @param keyMarsh Key marshaller code generator.
-     * @param valMarsh Value marshaller code generator.
-     * @return Serialize method spec.
-     */
-    private MethodSpec generateSerializeMethod(MarshallerCodeGenerator 
keyMarsh, MarshallerCodeGenerator valMarsh) {
-        return MethodSpec.
-            methodBuilder("serialize0")
-            .addAnnotation(Override.class)
-            .addModifiers(Modifier.PROTECTED, Modifier.FINAL)
-            .addParameter(TupleAssembler.class, "asm", Modifier.FINAL)
-            .addParameter(TypeName.OBJECT, "key", Modifier.FINAL)
-            .addParameter(TypeName.OBJECT, "val", Modifier.FINAL)
-            .addException(SerializationException.class)
-            .returns(ArrayTypeName.of(TypeName.BYTE))
-
-            .beginControlFlow("try")
-            .addCode(keyMarsh.marshallObjectCode("asm", "key"))
-            .addCode(valMarsh.marshallObjectCode("asm", "val"))
-            .addStatement("return asm.build()")
-
-            .nextControlFlow("catch($T th)", Throwable.class)
-            .addStatement("throw new $T(th)", SerializationException.class)
-            .endControlFlow()
-            .build();
-    }
-
-    /**
-     * Creates marshaller code generator for given class.
-     *
-     * @param tClass Target class.
-     * @param factoryRefVar Object factory variable.
-     * @param columns Columns that tClass mapped to.
-     * @param firstColIdx First column absolute index in schema.
-     * @return Marshaller code generator.
-     */
-    private MarshallerCodeGenerator createObjectMarshaller(
-        Class<?> tClass,
-        @Nullable String factoryRefVar,
-        Columns columns,
-        int firstColIdx
-    ) {
-        BinaryMode mode = MarshallerUtil.mode(tClass);
-
-        if (mode != null) // Simple type.
-            return new 
IdentityObjectMarshallerExprGenerator(TupleColumnAccessCodeGenerator.createAccessor(mode,
 firstColIdx));
-        else
-            return new ObjectMarshallerCodeGenerator(tClass, factoryRefVar, 
columns, firstColIdx);
-    }
-}
diff --git 
a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/codegen/TupleColumnAccessCodeGenerator.java
 
b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/codegen/TupleColumnAccessCodeGenerator.java
deleted file mode 100644
index 3d7607f..0000000
--- 
a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/codegen/TupleColumnAccessCodeGenerator.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.schema.marshaller.codegen;
-
-import com.squareup.javapoet.CodeBlock;
-import java.util.BitSet;
-import java.util.UUID;
-import org.apache.ignite.internal.schema.marshaller.BinaryMode;
-
-/**
- * Tuple access code generator.
- */
-public class TupleColumnAccessCodeGenerator {
-    /**
-     * @param mode Binary mode.
-     * @param colIdx Column index in schema.
-     * @return Tuple column access code generator.
-     */
-    static TupleColumnAccessCodeGenerator createAccessor(BinaryMode mode, int 
colIdx) {
-        switch (mode) {
-            case P_BYTE:
-                return new TupleColumnAccessCodeGenerator("byteValue", 
"appendByte", byte.class, colIdx);
-            case P_SHORT:
-                return new TupleColumnAccessCodeGenerator("shortValue", 
"appendShort", short.class, colIdx);
-            case P_INT:
-                return new TupleColumnAccessCodeGenerator("intValue", 
"appendInt", int.class, colIdx);
-            case P_LONG:
-                return new TupleColumnAccessCodeGenerator("longValue", 
"appendLong", long.class, colIdx);
-            case P_FLOAT:
-                return new TupleColumnAccessCodeGenerator("floatValue", 
"appendFloat", float.class, colIdx);
-            case P_DOUBLE:
-                return new TupleColumnAccessCodeGenerator("doubleValue", 
"appendDouble", double.class, colIdx);
-            case BYTE:
-                return new TupleColumnAccessCodeGenerator("byteValueBoxed", 
"appendByte", Byte.class, byte.class, colIdx);
-            case SHORT:
-                return new TupleColumnAccessCodeGenerator("shortValueBoxed", 
"appendShort", Short.class, short.class, colIdx);
-            case INT:
-                return new TupleColumnAccessCodeGenerator("intValueBoxed", 
"appendInt", Integer.class, int.class, colIdx);
-            case LONG:
-                return new TupleColumnAccessCodeGenerator("longValueBoxed", 
"appendLong", Long.class, long.class, colIdx);
-            case FLOAT:
-                return new TupleColumnAccessCodeGenerator("floatValueBoxed", 
"appendFloat", Float.class, float.class, colIdx);
-            case DOUBLE:
-                return new TupleColumnAccessCodeGenerator("doubleValueBoxed", 
"appendDouble", Double.class, double.class, colIdx);
-            case STRING:
-                return new TupleColumnAccessCodeGenerator("stringValue", 
"appendString", String.class, colIdx);
-            case UUID:
-                return new TupleColumnAccessCodeGenerator("uuidValue", 
"appendUuid", UUID.class, colIdx);
-            case BYTE_ARR:
-                return new TupleColumnAccessCodeGenerator("bytesValue", 
"appendBytes", byte[].class, colIdx);
-            case BITSET:
-                return new TupleColumnAccessCodeGenerator("bitmaskValue", 
"appendBitmask", BitSet.class, colIdx);
-        }
-
-        throw new IllegalStateException("Unsupported binary mode: " + mode);
-    }
-
-    /** Reader handle name. */
-    private final String readMethodName;
-
-    /** Writer handle name. */
-    private final String writeMethodName;
-
-    /** Mapped value type. */
-    private final Class<?> mappedType;
-
-    /** Write method argument type. */
-    private final Class<?> writeArgType;
-
-    /** Column index in schema. */
-    private final int colIdx;
-
-    /**
-     * Constructor.
-     *
-     * @param readMethodName Reader handle name.
-     * @param writeMethodName Writer handle name.
-     * @param mappedType Mapped value type.
-     * @param colIdx Column index in schema.
-     */
-    TupleColumnAccessCodeGenerator(String readMethodName, String 
writeMethodName, Class<?> mappedType, int colIdx) {
-        this(readMethodName, writeMethodName, mappedType, mappedType, colIdx);
-    }
-
-    /**
-     * Constructor.
-     *
-     * @param readMethodName Reader handle name.
-     * @param writeMethodName Writer handle name.
-     * @param mappedType Mapped value type.
-     * @param writeArgType Write method argument type.
-     * @param colIdx Column index in schema.
-     */
-    TupleColumnAccessCodeGenerator(String readMethodName, String 
writeMethodName, Class<?> mappedType,
-        Class<?> writeArgType, int colIdx) {
-        this.readMethodName = readMethodName;
-        this.writeMethodName = writeMethodName;
-        this.colIdx = colIdx;
-        this.mappedType = mappedType;
-        this.writeArgType = writeArgType;
-    }
-
-    /**
-     * @return Column index in schema.
-     */
-    public int columnIdx() {
-        return colIdx;
-    }
-
-    /**
-     * @param tuple Tuple.
-     * @return Code that reads column value from tuple.
-     */
-    public CodeBlock read(String tuple) {
-        return CodeBlock.of("($T)$L.$L($L)", mappedType, tuple, 
readMethodName, colIdx);
-    }
-
-    /**
-     * @param asmVar Tuple assembler var.
-     * @param valExpr Value expression.
-     * @return Code that writes value to tuple column.
-     */
-    public CodeBlock write(String asmVar, String valExpr) {
-        if (mappedType.isPrimitive())
-            return CodeBlock.builder().addStatement("$L.$L(($T)$L)", asmVar, 
writeMethodName, writeArgType, valExpr).build();
-        else {
-            return CodeBlock.builder()
-                .add("{\n").indent()
-                .addStatement("Object fVal")
-                .beginControlFlow("if((fVal = $L) == null)", valExpr)
-                .addStatement("$L.appendNull()", asmVar)
-                .nextControlFlow("else")
-                .addStatement("$L.$L(($T)fVal)", asmVar, writeMethodName, 
writeArgType)
-                .endControlFlow()
-                .unindent()
-                .add("}\n")
-                .build();
-        }
-    }
-
-    public Class<?> mappedType() {
-        return mappedType;
-    }
-}
diff --git 
a/modules/commons/src/test/java/org/apache/ignite/internal/benchmarks/SerializerBenchmarkTest.java
 
b/modules/commons/src/test/java/org/apache/ignite/internal/benchmarks/SerializerBenchmarkTest.java
index cd56f99..af60cae 100644
--- 
a/modules/commons/src/test/java/org/apache/ignite/internal/benchmarks/SerializerBenchmarkTest.java
+++ 
b/modules/commons/src/test/java/org/apache/ignite/internal/benchmarks/SerializerBenchmarkTest.java
@@ -76,7 +76,7 @@ public class SerializerBenchmarkTest {
     public int fieldsCount;
 
     /** Serializer. */
-    @Param({"Generated", "ASM", "Java"})
+    @Param({"ASM", "Java"})
     public String serializerName;
 
     /**
@@ -118,8 +118,6 @@ public class SerializerBenchmarkTest {
 
         if ("Java".equals(serializerName))
             serializer = 
SerializerFactory.createJavaSerializerFactory().create(schema, Long.class, 
valClass);
-        else if ("ASM".equals(serializerName))
-            serializer = new AsmSerializerGenerator().create(schema, 
Long.class, valClass);
         else
             serializer = 
SerializerFactory.createGeneratedSerializerFactory().create(schema, Long.class, 
valClass);
     }
diff --git 
a/modules/commons/src/test/java/org/apache/ignite/internal/schema/marshaller/JavaSerializerTest.java
 
b/modules/commons/src/test/java/org/apache/ignite/internal/schema/marshaller/JavaSerializerTest.java
index 8547c8e..082b047 100644
--- 
a/modules/commons/src/test/java/org/apache/ignite/internal/schema/marshaller/JavaSerializerTest.java
+++ 
b/modules/commons/src/test/java/org/apache/ignite/internal/schema/marshaller/JavaSerializerTest.java
@@ -36,7 +36,6 @@ import org.apache.ignite.internal.schema.NativeTypeSpec;
 import org.apache.ignite.internal.schema.SchemaDescriptor;
 import org.apache.ignite.internal.schema.TestUtils;
 import org.apache.ignite.internal.schema.marshaller.asm.AsmSerializerGenerator;
-import 
org.apache.ignite.internal.schema.marshaller.codegen.SerializerGenerator;
 import 
org.apache.ignite.internal.schema.marshaller.reflection.JavaSerializerFactory;
 import org.apache.ignite.internal.util.ObjectFactory;
 import org.junit.jupiter.api.BeforeEach;
@@ -71,7 +70,6 @@ public class JavaSerializerTest {
     private static List<SerializerFactory> serializerFactoryProvider() {
         return Arrays.asList(
             new JavaSerializerFactory(),
-            new SerializerGenerator(),
             new AsmSerializerGenerator()
         );
     }

Reply via email to