Package joust.optimisers.invar

Examples of joust.optimisers.invar.ExpressionComplexityClassifier.visitTree()


            if ((!argEffects.contains(EffectSet.EffectType.READ_ESCAPING)
              || !argEffects.contains(EffectSet.EffectType.WRITE_ESCAPING))
              && !argEffects.contains(EffectSet.EffectType.IO)) {
                 // Since you don't *have* to extract it, check if this one is expensive enough for it to be worth it.
                 ExpressionComplexityClassifier classifier = new ExpressionComplexityClassifier();
                 classifier.visitTree(args[i]);

                 log.info("Score for {} is {}", args[i], classifier.getScore());

                 if (classifier.getScore() < ARGUMENT_EXTRACTION_THRESHOLD) {
                     continue;
View Full Code Here


    public void addUsage(AJCComparableExpressionTree tree) {
        usagesInternal.add(tree);

        ExpressionComplexityClassifier classifier = new ExpressionComplexityClassifier();
        classifier.visitTree(tree.wrappedNode);
        complexityScore += classifier.getScore();
    }

    /**
     * Get the cost of the expressions of interest if CSE were applied here.
View Full Code Here

    /**
     * Get the cost of the expressions of interest if CSE were applied here.
     */
    public int getApplicationCost() {
        ExpressionComplexityClassifier classifier = new ExpressionComplexityClassifier();
        classifier.visitTree(firstInstance.wrappedNode);

        // The cost of introducing the new temporary.
        int initialiserCost = classifier.getScore() + ExpressionComplexityClassifier.ASSIGNMENT_COST;

        int usagesCost = usagesInternal.size() * ExpressionComplexityClassifier.IDENT_COST;
 
View Full Code Here

        Iterator<AJCComparableExpressionTree> iterator = invariantFinder.invariantExpressions.keySet().iterator();
        while (iterator.hasNext()) {
            AJCComparableExpressionTree expr = iterator.next();
            // Discard all expressions that aren't complicated enough to be worth moving..
            ExpressionComplexityClassifier classifier = new ExpressionComplexityClassifier();
            classifier.visitTree(expr.wrappedNode);

            if (classifier.getScore() < INVAR_COMPLEXITY_THRESHOLD) {
                log.info("Ignoring invariant expression {} because score {} is below complexity threshold.", expr.wrappedNode, classifier.getScore());
                iterator.remove();
            }
View Full Code Here

            ExpressionComplexityClassifier classifier1 = new ExpressionComplexityClassifier();
            ExpressionComplexityClassifier classifier2 = new ExpressionComplexityClassifier();

            classifier1.visitTree(o1.wrappedNode);
            classifier2.visitTree(o2.wrappedNode);

            int usagesOne = invariants.get(o1).size();
            int usagesTwo = invariants.get(o2).size();

            int scoreOne = classifier1.getScore() * usagesOne;
 
View Full Code Here

     *         (Used to avoid exploring down trees that are already too inexpensive to be interesting).
     */
    private void visitExpression(AJCComparableExpressionTree<? extends AJCExpressionTree> that) {
        // Determine if this tree is cheap enough that we don't care about it.
        ExpressionComplexityClassifier classifier = new ExpressionComplexityClassifier();
        classifier.visitTree(that.wrappedNode);

        log.debug("Encountered: {}", that);

        int score = classifier.getScore();
        if (score < MINIMUM_CSE_SCORE) {
View Full Code Here

            return;
        }

        // Don't unroll loops with very complicated bodies.
        ExpressionComplexityClassifier classifier = new ExpressionComplexityClassifier();
        classifier.visitTree(tree.body);
        if (classifier.getScore() > UNROLLABLE_BODY_THRESHOLD) {
            log.info("Skipping unrollable loop because complexity {} too high: {}", classifier.getScore(), tree);
            return;
        }
View Full Code Here

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.