Search in sources :

Example 26 with BytecodeExpression

use of com.facebook.presto.bytecode.expression.BytecodeExpression in project presto by prestodb.

the class AccumulatorCompiler method generateSetGroupIdFromGroupIdsBlock.

private static void generateSetGroupIdFromGroupIdsBlock(Scope scope, FieldDefinition stateField, BytecodeBlock block) {
    Variable groupIdsBlock = scope.getVariable("groupIdsBlock");
    Variable position = scope.getVariable("position");
    BytecodeExpression state = scope.getThis().getField(stateField);
    block.append(state.invoke("setGroupId", void.class, groupIdsBlock.invoke("getGroupId", long.class, position)));
}
Also used : Variable(com.facebook.presto.bytecode.Variable) BytecodeExpression(com.facebook.presto.bytecode.expression.BytecodeExpression)

Example 27 with BytecodeExpression

use of com.facebook.presto.bytecode.expression.BytecodeExpression in project presto by prestodb.

the class AccumulatorCompiler method generateEvaluateIntermediate.

private static void generateEvaluateIntermediate(ClassDefinition definition, FieldDefinition stateSerializerField, FieldDefinition stateField) {
    Parameter out = arg("out", BlockBuilder.class);
    MethodDefinition method = definition.declareMethod(a(PUBLIC), "evaluateIntermediate", type(void.class), out);
    Variable thisVariable = method.getThis();
    BytecodeExpression stateSerializer = thisVariable.getField(stateSerializerField);
    BytecodeExpression state = thisVariable.getField(stateField);
    method.getBody().append(stateSerializer.invoke("serialize", void.class, state.cast(Object.class), out)).ret();
}
Also used : Variable(com.facebook.presto.bytecode.Variable) MethodDefinition(com.facebook.presto.bytecode.MethodDefinition) Parameter(com.facebook.presto.bytecode.Parameter) BytecodeExpression(com.facebook.presto.bytecode.expression.BytecodeExpression)

Example 28 with BytecodeExpression

use of com.facebook.presto.bytecode.expression.BytecodeExpression in project presto by prestodb.

the class AccumulatorCompiler method generateGroupedEvaluateIntermediate.

private static void generateGroupedEvaluateIntermediate(ClassDefinition definition, FieldDefinition stateSerializerField, FieldDefinition stateField) {
    Parameter groupId = arg("groupId", int.class);
    Parameter out = arg("out", BlockBuilder.class);
    MethodDefinition method = definition.declareMethod(a(PUBLIC), "evaluateIntermediate", type(void.class), groupId, out);
    Variable thisVariable = method.getThis();
    BytecodeExpression state = thisVariable.getField(stateField);
    BytecodeExpression stateSerializer = thisVariable.getField(stateSerializerField);
    method.getBody().append(state.invoke("setGroupId", void.class, groupId.cast(long.class))).append(stateSerializer.invoke("serialize", void.class, state.cast(Object.class), out)).ret();
}
Also used : Variable(com.facebook.presto.bytecode.Variable) MethodDefinition(com.facebook.presto.bytecode.MethodDefinition) Parameter(com.facebook.presto.bytecode.Parameter) BytecodeExpression(com.facebook.presto.bytecode.expression.BytecodeExpression)

Example 29 with BytecodeExpression

use of com.facebook.presto.bytecode.expression.BytecodeExpression in project presto by prestodb.

the class AccumulatorCompiler method generateGetEstimatedSize.

private static void generateGetEstimatedSize(ClassDefinition definition, FieldDefinition stateField) {
    MethodDefinition method = definition.declareMethod(a(PUBLIC), "getEstimatedSize", type(long.class));
    BytecodeExpression state = method.getThis().getField(stateField);
    method.getBody().append(state.invoke("getEstimatedSize", long.class).ret());
}
Also used : MethodDefinition(com.facebook.presto.bytecode.MethodDefinition) BytecodeExpression(com.facebook.presto.bytecode.expression.BytecodeExpression)

Aggregations

BytecodeExpression (com.facebook.presto.bytecode.expression.BytecodeExpression)29 Variable (com.facebook.presto.bytecode.Variable)24 MethodDefinition (com.facebook.presto.bytecode.MethodDefinition)23 Parameter (com.facebook.presto.bytecode.Parameter)21 BytecodeBlock (com.facebook.presto.bytecode.BytecodeBlock)18 IfStatement (com.facebook.presto.bytecode.control.IfStatement)14 Block (com.facebook.presto.spi.block.Block)9 Scope (com.facebook.presto.bytecode.Scope)7 LabelNode (com.facebook.presto.bytecode.instruction.LabelNode)5 BlockBuilder (com.facebook.presto.spi.block.BlockBuilder)5 DictionaryBlock (com.facebook.presto.spi.block.DictionaryBlock)5 LazyBlock (com.facebook.presto.spi.block.LazyBlock)5 RunLengthEncodedBlock (com.facebook.presto.spi.block.RunLengthEncodedBlock)5 Type (com.facebook.presto.spi.type.Type)5 ImmutableList (com.google.common.collect.ImmutableList)5 ForLoop (com.facebook.presto.bytecode.control.ForLoop)4 SqlTypeBytecodeExpression.constantType (com.facebook.presto.sql.gen.SqlTypeBytecodeExpression.constantType)4 ClassDefinition (com.facebook.presto.bytecode.ClassDefinition)3 PageBuilder (com.facebook.presto.spi.PageBuilder)3 BytecodeNode (com.facebook.presto.bytecode.BytecodeNode)2