Details

    • Type: Improvement
    • Status: Scheduled
    • Priority: Not specified
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: Code Generator
    • Labels:
      None

      Description

      This is more heavily used than I expected.  Some optimizations:

      a) Avoid walking some operators:

      no_param, no_internalselect: globalscope(!opt)

      b) Special case some operators with a single input to clone

      no_not, case, negate, no_assign (rhs), no_select if not active root

      c) special case if constant (or arg1 is constant)

      no_selectnth, no_range, no_rangefrom, transform

      Directly clone results from one to another.  Possibly store a pointer to the original, and use that instead.  (Use a top bit on the counts to indicate clone/redirect)

      Allow a clone for any expression that does not merge its results.

      Renamed the newScopeTables as hidden tables - since this it is what it is used for and review how it is used.  Is it possible to avoid calculating them.   Is it possible to short-circuit walking the tree when checking if independent - e.g. no_colon, only walk the rhs.  And check validity elsewhere.

       

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                ghalliday Gavin Halliday
                Reporter:
                ghalliday Gavin Halliday
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated: