public static BytecodeNode unboxPrimitive(Class<?> unboxedType) { BytecodeBlock block = new BytecodeBlock().comment("unbox primitive"); if (unboxedType == long.class) { return block.invokeVirtual(Long.class, "longValue", long.class); } if (unboxedType == double.class) { return block.invokeVirtual(Double.class, "doubleValue", double.class); } if (unboxedType == boolean.class) { return block.invokeVirtual(Boolean.class, "booleanValue", boolean.class); } throw new UnsupportedOperationException("not yet implemented: " + unboxedType); }
.append(page) .invokeStatic(type(AggregationUtils.class), "pageBlockGetter", type(Function.class, Integer.class, Block.class), type(Page.class)) .invokeVirtual(Optional.class, "map", Optional.class, Function.class) .pushNull() .invokeVirtual(Optional.class, "orElse", Object.class, Object.class) .checkCast(Block.class) .putVariable(masksBlock); .invokeInterface(List.class, "get", Object.class, int.class) .checkCast(Integer.class) .invokeVirtual(Integer.class, "intValue", int.class) .invokeVirtual(Page.class, "getBlock", Block.class, int.class) .putVariable(parameterVariables.get(i));
.getVariable(session) .getVariable(cursor) .invokeVirtual(classDefinition.getType(), "filter", type(boolean.class), type(ConnectorSession.class), type(RecordCursor.class)); .invokeVirtual(PageBuilder.class, "declarePosition", void.class); .getVariable(pageBuilder) .push(projectionIndex) .invokeVirtual(PageBuilder.class, "getBlockBuilder", BlockBuilder.class, int.class); .invokeVirtual(classDefinition.getType(), "project_" + projectionIndex, type(void.class),
private static FieldDefinition generateInstanceSize(ClassDefinition definition) { // Store instance size in static field FieldDefinition instanceSize = definition.declareField(a(PRIVATE, STATIC, FINAL), "INSTANCE_SIZE", long.class); definition.getClassInitializer() .getBody() .comment("INSTANCE_SIZE = ClassLayout.parseClass(%s.class).instanceSize()", definition.getName()) .push(definition.getType()) .invokeStatic(ClassLayout.class, "parseClass", ClassLayout.class, Class.class) .invokeVirtual(ClassLayout.class, "instanceSize", int.class) .intToLong() .putStaticField(instanceSize); return instanceSize; }
private static FieldDefinition generateInstanceSize(ClassDefinition definition) { // Store instance size in static field FieldDefinition instanceSize = definition.declareField(a(PRIVATE, STATIC, FINAL), "INSTANCE_SIZE", long.class); definition.getClassInitializer() .getBody() .comment("INSTANCE_SIZE = ClassLayout.parseClass(%s.class).instanceSize()", definition.getName()) .push(definition.getType()) .invokeStatic(ClassLayout.class, "parseClass", ClassLayout.class, Class.class) .invokeVirtual(ClassLayout.class, "instanceSize", int.class) .intToLong() .putStaticField(instanceSize); return instanceSize; }
.push(pageBuilderOutputChannel++) .append(OpCode.IADD) .invokeVirtual(PageBuilder.class, "getBlockBuilder", BlockBuilder.class, int.class) .invokeInterface(Type.class, "appendTo", void.class, Block.class, int.class, BlockBuilder.class);
.invokeVirtual(Page.class, "getPositionCount", int.class) .putVariable(rowsVariable) .initializeVariable(positionVariable);
public static BytecodeNode unboxPrimitive(Class<?> unboxedType) { BytecodeBlock block = new BytecodeBlock().comment("unbox primitive"); if (unboxedType == long.class) { return block.invokeVirtual(Long.class, "longValue", long.class); } if (unboxedType == double.class) { return block.invokeVirtual(Double.class, "doubleValue", double.class); } if (unboxedType == boolean.class) { return block.invokeVirtual(Boolean.class, "booleanValue", boolean.class); } throw new UnsupportedOperationException("not yet implemented: " + unboxedType); }
public static BytecodeNode unboxPrimitive(Class<?> unboxedType) { BytecodeBlock block = new BytecodeBlock().comment("unbox primitive"); if (unboxedType == long.class) { return block.invokeVirtual(Long.class, "longValue", long.class); } if (unboxedType == double.class) { return block.invokeVirtual(Double.class, "doubleValue", double.class); } if (unboxedType == boolean.class) { return block.invokeVirtual(Boolean.class, "booleanValue", boolean.class); } throw new UnsupportedOperationException("not yet implemented: " + unboxedType); }
@Override public BytecodeNode getBytecode(MethodGenerationContext generationContext) { BytecodeBlock block = new BytecodeBlock(); if (instance != null) { block.append(instance); } for (BytecodeExpression parameter : parameters) { block.append(parameter); } if (instance == null) { return block.invokeStatic(methodTargetType, methodName, returnType, parameterTypes); } else if (instance.getType().isInterface()) { return block.invokeInterface(methodTargetType, methodName, returnType, parameterTypes); } else { return block.invokeVirtual(methodTargetType, methodName, returnType, parameterTypes); } }
case PRIMITIVE: checkArgument(unwrapPrimitiveType(sourceType) == targetType.getPrimitiveType(), "Type %s can not be cast to %s", sourceType, targetType); return block.invokeVirtual(sourceType, targetType.getPrimitiveType().getSimpleName() + "Value", targetType); case BOXED_PRIMITVE: checkArgument(sourceType.equals(targetType), "Type %s can not be cast to %s", sourceType, targetType); return block .checkCast(wrap(targetType.getPrimitiveType())) .invokeVirtual(wrap(targetType.getPrimitiveType()), targetType.getPrimitiveType().getSimpleName() + "Value", targetType.getPrimitiveType()); case BOXED_PRIMITVE: case OTHER:
.getVariable(session) .getVariable(cursor) .invokeVirtual(classDefinition.getType(), "filter", type(boolean.class), type(ConnectorSession.class), type(RecordCursor.class)); .invokeVirtual(PageBuilder.class, "declarePosition", void.class); .getVariable(pageBuilder) .push(projectionIndex) .invokeVirtual(PageBuilder.class, "getBlockBuilder", BlockBuilder.class, int.class); .invokeVirtual(classDefinition.getType(), "project_" + projectionIndex, type(void.class),
.getVariable(session) .getVariable(cursor) .invokeVirtual(classDefinition.getType(), "filter", type(boolean.class), type(ConnectorSession.class), type(RecordCursor.class)); .invokeVirtual(PageBuilder.class, "declarePosition", void.class); .getVariable(pageBuilder) .push(projectionIndex) .invokeVirtual(PageBuilder.class, "getBlockBuilder", BlockBuilder.class, int.class); .invokeVirtual(classDefinition.getType(), "project_" + projectionIndex, type(void.class),
read.invokeVirtual(methodInjection.getMethod());
private static FieldDefinition generateInstanceSize(ClassDefinition definition) { // Store instance size in static field FieldDefinition instanceSize = definition.declareField(a(PRIVATE, STATIC, FINAL), "INSTANCE_SIZE", long.class); definition.getClassInitializer() .getBody() .comment("INSTANCE_SIZE = ClassLayout.parseClass(%s.class).instanceSize()", definition.getName()) .push(definition.getType()) .invokeStatic(ClassLayout.class, "parseClass", ClassLayout.class, Class.class) .invokeVirtual(ClassLayout.class, "instanceSize", int.class) .intToLong() .putStaticField(instanceSize); return instanceSize; }
private static FieldDefinition generateInstanceSize(ClassDefinition definition) { // Store instance size in static field FieldDefinition instanceSize = definition.declareField(a(PRIVATE, STATIC, FINAL), "INSTANCE_SIZE", long.class); definition.getClassInitializer() .getBody() .comment("INSTANCE_SIZE = ClassLayout.parseClass(%s.class).instanceSize()", definition.getName()) .push(definition.getType()) .invokeStatic(ClassLayout.class, "parseClass", ClassLayout.class, Class.class) .invokeVirtual(ClassLayout.class, "instanceSize", int.class) .intToLong() .putStaticField(instanceSize); return instanceSize; }
private static FieldDefinition generateInstanceSize(ClassDefinition definition) { // Store instance size in static field FieldDefinition instanceSize = definition.declareField(a(PRIVATE, STATIC, FINAL), "INSTANCE_SIZE", long.class); definition.getClassInitializer() .getBody() .comment("INSTANCE_SIZE = ClassLayout.parseClass(%s.class).instanceSize()", definition.getName()) .push(definition.getType()) .invokeStatic(ClassLayout.class, "parseClass", ClassLayout.class, Class.class) .invokeVirtual(ClassLayout.class, "instanceSize", int.class) .intToLong() .putStaticField(instanceSize); return instanceSize; }
private static FieldDefinition generateInstanceSize(ClassDefinition definition) { // Store instance size in static field FieldDefinition instanceSize = definition.declareField(a(PRIVATE, STATIC, FINAL), "INSTANCE_SIZE", long.class); definition.getClassInitializer() .getBody() .comment("INSTANCE_SIZE = ClassLayout.parseClass(%s.class).instanceSize()", definition.getName()) .push(definition.getType()) .invokeStatic(ClassLayout.class, "parseClass", ClassLayout.class, Class.class) .invokeVirtual(ClassLayout.class, "instanceSize", int.class) .intToLong() .putStaticField(instanceSize); return instanceSize; }
.push(pageBuilderOutputChannel++) .append(OpCode.IADD) .invokeVirtual(PageBuilder.class, "getBlockBuilder", BlockBuilder.class, int.class) .invokeInterface(Type.class, "appendTo", void.class, Block.class, int.class, BlockBuilder.class);
.push(pageBuilderOutputChannel++) .append(OpCode.IADD) .invokeVirtual(PageBuilder.class, "getBlockBuilder", BlockBuilder.class, int.class) .invokeInterface(Type.class, "appendTo", void.class, Block.class, int.class, BlockBuilder.class);