public static void getIteratorJoinCodegen(ResultSetProcessorRowForAllForge forge, CodegenClassScope classScope, CodegenMethod method, CodegenInstanceAux instance) { CodegenMethod select = getSelectListEventsAsArrayCodegen(forge, classScope, instance); method.getBlock() .declareVar(EventBean[].class, "result", localMethod(select, constant(true), constantTrue(), constantTrue())) .methodReturn(newInstance(ArrayEventIterator.class, ref("result"))); }
public static void getIteratorJoinCodegen(ResultSetProcessorAggregateGroupedForge forge, CodegenClassScope classScope, CodegenMethod method, CodegenInstanceAux instance) { CodegenMethod generateGroupKeyArrayJoin = generateGroupKeyArrayJoinCodegen(forge.getGroupKeyNodeExpressions(), classScope, instance); CodegenMethod generateOutputEventsJoin = generateOutputEventsJoinCodegen(forge, classScope, instance); method.getBlock().declareVar(Object[].class, "groupByKeys", localMethod(generateGroupKeyArrayJoin, REF_JOINSET, constantTrue())) .declareVar(EventBean[].class, "result", localMethod(generateOutputEventsJoin, REF_JOINSET, ref("groupByKeys"), constantTrue(), constantTrue())) .methodReturn(newInstance(ArrayEventIterator.class, ref("result"))); }
public void applyEnterCodegen(CodegenMethod method, CodegenClassScope classScope, CodegenNamedMethods namedMethods, AggregationClassNames classNames) { method.getBlock().apply(instblock(classScope, "qAggregationGroupedApplyEnterLeave", constantTrue(), constant(-1), constant(-1), REF_GROUPKEY)); applyCodegen(true, method, classScope, namedMethods, classNames); method.getBlock().apply(instblock(classScope, "aAggregationGroupedApplyEnterLeave", constantTrue())); }
static void getIteratorViewUnboundCodegen(ResultSetProcessorRowPerGroupRollupForge forge, CodegenClassScope classScope, CodegenMethod method, CodegenInstanceAux instance) { CodegenMethod generateOutputEventsView = generateOutputEventsViewCodegen(forge, classScope, instance); method.getBlock().declareVar(EventBean[].class, "output", localMethod(generateOutputEventsView, exprDotMethod(ref(NAME_UNBOUNDHELPER), "getBuffer"), constantTrue(), constantTrue())) .methodReturn(newInstance(ArrayEventIterator.class, ref("output"))); } }
public static void getIteratorJoinCodegen(ResultSetProcessorRowPerGroupForge forge, CodegenClassScope classScope, CodegenMethod method, CodegenInstanceAux instance) { CodegenMethod generateGroupKeyArrayJoin = generateGroupKeyArrayJoinTakingMapCodegen(forge, classScope, instance); CodegenMethod generateOutputEventsJoin = generateOutputEventsJoinCodegen(forge, classScope, instance); method.getBlock() .declareVar(Map.class, "keysAndEvents", newInstance(HashMap.class)) .expression(localMethod(generateGroupKeyArrayJoin, REF_JOINSET, ref("keysAndEvents"), constantTrue())) .declareVar(EventBean[].class, "selectNewEvents", localMethod(generateOutputEventsJoin, ref("keysAndEvents"), constantTrue(), constantTrue())) .methodReturn(newInstance(ArrayEventIterator.class, ref("selectNewEvents"))); }
public void applyEnterCodegen(CodegenMethod method, CodegenClassScope classScope, CodegenNamedMethods namedMethods, AggregationClassNames classNames) { method.getBlock() .apply(instblock(classScope, "qAggregationUngroupedApplyEnterLeave", constantTrue(), constant(rowStateDesc.getNumMethods()), constant(rowStateDesc.getNumAccess()))) .exprDotMethod(REF_ROW, "applyEnter", REF_EPS, REF_EXPREVALCONTEXT) .apply(instblock(classScope, "aAggregationUngroupedApplyEnterLeave", constantTrue())); }
private CodegenMethod isExistsPropertyCodegen(CodegenMethodScope codegenMethodScope, CodegenClassScope codegenClassScope) { CodegenBlock block = codegenMethodScope.makeChild(boolean.class, this.getClass(), codegenClassScope).addParam(Node.class, "value").getBlock(); for (int i = 0; i < domGetterChain.length; i++) { block.assignRef("value", domGetterChain[i].getValueAsNodeCodegen(ref("value"), codegenMethodScope, codegenClassScope)); block.ifRefNullReturnFalse("value"); } return block.methodReturn(constantTrue()); }
private static CodegenMethod obtainIteratorCodegen(ResultSetProcessorRowPerGroupRollupForge forge, CodegenClassScope classScope, CodegenMethod parent, CodegenInstanceAux instance) { CodegenMethod resetEventPerGroupBufView = resetEventPerGroupBufCodegen(NAME_EVENTPERGROUPBUFVIEW, classScope, instance); CodegenMethod generateGroupKeysView = generateGroupKeysViewCodegen(forge, classScope, instance); CodegenMethod generateOutputEventsView = generateOutputEventsViewCodegen(forge, classScope, instance); CodegenMethod iterator = parent.makeChild(Iterator.class, ResultSetProcessorRowPerGroupRollupImpl.class, classScope).addParam(Viewable.class, NAME_VIEWABLE); iterator.getBlock().localMethod(resetEventPerGroupBufView) .declareVar(EventBean[].class, "events", staticMethod(CollectionUtil.class, METHOD_ITERATORTOARRAYEVENTS, exprDotMethod(REF_VIEWABLE, "iterator"))) .localMethod(generateGroupKeysView, ref("events"), ref(NAME_EVENTPERGROUPBUFVIEW), constantTrue()) .declareVar(EventBean[].class, "output", localMethod(generateOutputEventsView, ref(NAME_EVENTPERGROUPBUFVIEW), constantTrue(), constantTrue())) .methodReturn(newInstance(ArrayEventIterator.class, ref("output"))); return iterator; }
public CodegenExpression makeCodegen(CodegenClassScope classScope, CodegenMethodScope parent) { CodegenMethod method = parent.makeChild(double.class, this.getClass(), classScope); CodegenMethod result = CodegenLegoMethodExpression.codegenExpression(runtimeConstant.getForge(), method, classScope); method.getBlock().methodReturn(localMethod(result, constantNull(), constantTrue(), constantNull())); return localMethod(method); }
private static CodegenExpression formatFieldExpr(Class type, ExprForge formatExpr, CodegenClassScope codegenClassScope) { CodegenMethod formatEval = CodegenLegoMethodExpression.codegenExpression(formatExpr, codegenClassScope.getPackageScope().getInitMethod(), codegenClassScope); CodegenExpression formatInit = localMethod(formatEval, constantNull(), constantTrue(), constantNull()); return codegenClassScope.addFieldUnshared(true, type, formatInit); }
public void applyEvalLeaveCodegen(CodegenMethod method, ExprForgeCodegenSymbol symbols, ExprForge[] forges, CodegenClassScope classScope) { if (factory.getAggregationExpression().getPositionalParams().length > 0) { AggregatorCodegenUtil.prefixWithFilterCheck(factory.getAggregationExpression().getPositionalParams()[0].getForge(), method, symbols, classScope); } method.getBlock().assignRef(leaving, constantTrue()); }
public CodegenExpression evaluateMatchesCodegen(CodegenMethodScope parent, ExprSubselectEvalMatchSymbol symbols, CodegenClassScope classScope) { CodegenMethod method = parent.makeChild(boolean.class, this.getClass(), classScope); CodegenMethod havingMethod = CodegenLegoMethodExpression.codegenExpression(havingEval, method, classScope); CodegenExpression having = localMethod(havingMethod, REF_EVENTS_SHIFTED, symbols.getAddIsNewData(method), symbols.getAddExprEvalCtx(method)); method.getBlock().applyTri(DECLARE_EVENTS_SHIFTED, method, symbols); CodegenLegoBooleanExpression.codegenReturnValueIfNullOrNotPass(method.getBlock(), Boolean.class, having, constantFalse()); method.getBlock().methodReturn(constantTrue()); return localMethod(method); } }
public CodegenExpression evaluateCodegenUninstrumented(Class requiredType, CodegenMethodScope codegenMethodScope, ExprForgeCodegenSymbol exprSymbol, CodegenClassScope codegenClassScope) { if (getEvaluationType() == void.class) { return noop(); } CodegenMethod initMethod = codegenClassScope.getPackageScope().getInitMethod(); CodegenMethod evaluate = CodegenLegoMethodExpression.codegenExpression(inner, initMethod, codegenClassScope); return codegenClassScope.addFieldUnshared(true, getEvaluationType(), localMethod(evaluate, constantNull(), constantTrue(), constantNull())); }
public CodegenExpression eventBeanGetCodegen(CodegenExpression beanExpression, CodegenMethodScope parent, CodegenClassScope classScope) { CodegenMethod method = parent.makeChild(Object.class, this.getClass(), classScope).addParam(EventBean.class, "eventBean"); CodegenMethod methodExpr = CodegenLegoMethodExpression.codegenExpression(eval.getForge(), method, classScope); method.getBlock() .declareVar(EventBean[].class, "events", newArrayWithInit(EventBean.class, ref("eventBean"))) .declareVar(Object.class, "code", localMethod(methodExpr, ref("events"), constantTrue(), constantNull())) .methodReturn(staticMethod(ContextControllerHashedGetterHashSingleForge.class, "objectToNativeHash", ref("code"), constant(granularity))); return localMethod(method, beanExpression); } }
protected void assign(CodegenMethod method, CodegenExpressionRef factory, SAIFFInitializeSymbol symbols, CodegenClassScope classScope) { method.getBlock() .declareVar(TimePeriodCompute.class, "eval", new TimePeriodComputeConstGivenDeltaForge(0).makeEvaluator(method, classScope)) .exprDotMethod(factory, "setTimestampEval", codegenEvaluator(timestampExpression.getForge(), method, TimeOrderViewForge.class, classScope)) .exprDotMethod(factory, "setTimePeriodCompute", ref("eval")) .exprDotMethod(factory, "setScheduleCallbackId", constant(scheduleCallbackId)) .exprDotMethod(factory, "setTimeToLive", constantTrue()); }
public CodegenExpression eventBeanGetCodegen(CodegenExpression beanExpression, CodegenMethodScope parent, CodegenClassScope codegenClassScope) { CodegenMethod method = parent.makeChild(exprForge.getEvaluationType(), this.getClass(), codegenClassScope).addParam(EventBean.class, "bean"); CodegenMethod exprMethod = CodegenLegoMethodExpression.codegenExpression(exprForge, method, codegenClassScope); method.getBlock() .declareVar(EventBean[].class, "events", newArrayByLength(EventBean.class, constant(1))) .assignArrayElement(ref("events"), constant(0), ref("bean")) .methodReturn(localMethod(exprMethod, ref("events"), constantTrue(), constantNull())); return localMethod(method, beanExpression); } }
static void applyViewResultUnboundCodegen(ResultSetProcessorRowPerGroupRollupForge forge, CodegenClassScope classScope, CodegenMethod method, CodegenInstanceAux instance) { CodegenMethod generateGroupKeysView = generateGroupKeysViewCodegen(forge, classScope, instance); method.getBlock() .declareVar(Object[][].class, "newDataMultiKey", localMethod(generateGroupKeysView, REF_NEWDATA, exprDotMethod(ref(NAME_UNBOUNDHELPER), "getBuffer"), constantTrue())) .declareVar(Object[][].class, "oldDataMultiKey", localMethod(generateGroupKeysView, REF_OLDDATA, exprDotMethod(ref(NAME_UNBOUNDHELPER), "getBuffer"), constantFalse())) .declareVar(EventBean[].class, "eventsPerStream", newArrayByLength(EventBean.class, constant(1))) .staticMethod(ResultSetProcessorGroupedUtil.class, METHOD_APPLYAGGVIEWRESULTKEYEDVIEW, REF_AGGREGATIONSVC, REF_AGENTINSTANCECONTEXT, REF_NEWDATA, ref("newDataMultiKey"), REF_OLDDATA, ref("oldDataMultiKey"), ref("eventsPerStream")); }
public static CodegenExpression codegen(EnumAllOfEventsForge forge, EnumForgeCodegenParams args, CodegenMethodScope codegenMethodScope, CodegenClassScope codegenClassScope) { ExprForgeCodegenSymbol scope = new ExprForgeCodegenSymbol(false, null); CodegenMethod methodNode = codegenMethodScope.makeChildWithScope(boolean.class, EnumAllOfEventsForgeEval.class, scope, codegenClassScope).addParam(EnumForgeCodegenNames.PARAMS); CodegenBlock block = methodNode.getBlock(); block.ifConditionReturnConst(exprDotMethod(EnumForgeCodegenNames.REF_ENUMCOLL, "isEmpty"), true); CodegenBlock forEach = block.forEach(EventBean.class, "next", EnumForgeCodegenNames.REF_ENUMCOLL) .assignArrayElement(EnumForgeCodegenNames.REF_EPS, constant(forge.streamNumLambda), ref("next")); CodegenLegoBooleanExpression.codegenReturnBoolIfNullOrBool(forEach, forge.innerExpression.getEvaluationType(), forge.innerExpression.evaluateCodegen(Boolean.class, methodNode, scope, codegenClassScope), true, false, false, false); block.methodReturn(constantTrue()); return localMethod(methodNode, args.getEps(), args.getEnumcoll(), args.getIsNewData(), args.getExprCtx()); } }
public static void getValueCodegen(AggregationAccessorFirstLastIndexWEvalForge forge, AggregationAccessorForgeGetCodegenContext context) { AggregationStateLinearForge stateForge = (AggregationStateLinearForge) context.getAccessStateForge(); CodegenMethod getBeanFirstLastIndex = getBeanFirstLastIndexCodegen(forge, context.getColumn(), context.getClassScope(), stateForge, context.getMethod(), context.getNamedMethods()); context.getMethod().getBlock().declareVar(EventBean.class, "bean", localMethod(getBeanFirstLastIndex)) .ifRefNullReturnNull("bean") .declareVar(EventBean[].class, "eventsPerStreamBuf", newArrayByLength(EventBean.class, constant(forge.getStreamNum() + 1))) .assignArrayElement("eventsPerStreamBuf", constant(forge.getStreamNum()), ref("bean")) .methodReturn(localMethod(CodegenLegoMethodExpression.codegenExpression(forge.getChildNode(), context.getMethod(), context.getClassScope()), ref("eventsPerStreamBuf"), constantTrue(), constantNull())); }
public static void getEnumerableScalarCodegen(AggregationAccessorFirstLastIndexWEvalForge forge, AggregationAccessorForgeGetCodegenContext context) { AggregationStateLinearForge stateForge = (AggregationStateLinearForge) context.getAccessStateForge(); CodegenMethod getBeanFirstLastIndex = getBeanFirstLastIndexCodegen(forge, context.getColumn(), context.getClassScope(), stateForge, context.getMethod(), context.getNamedMethods()); context.getMethod().getBlock().declareVar(EventBean.class, "bean", localMethod(getBeanFirstLastIndex)) .ifRefNullReturnNull("bean") .declareVar(EventBean[].class, "eventsPerStreamBuf", newArrayByLength(EventBean.class, constant(forge.getStreamNum() + 1))) .assignArrayElement("eventsPerStreamBuf", constant(forge.getStreamNum()), ref("bean")) .declareVar(Object.class, "value", localMethod(CodegenLegoMethodExpression.codegenExpression(forge.getChildNode(), context.getMethod(), context.getClassScope()), ref("eventsPerStreamBuf"), constantTrue(), constantNull())) .ifRefNullReturnNull("value") .methodReturn(staticMethod(Collections.class, "singletonList", ref("value"))); }