Permalink
Commits on Mar 27, 2012
  1. Found the offending code that was causing segfaults, it relates colle…

    thmshrpr committed Mar 27, 2012
    …cting function definitions from inlined code. It has been commented out to provide a working version of everything to start figuring out the bug now that it has been isolated.
Commits on Mar 20, 2012
  1. Added functionality to inline to that it also looks for extra functio…

    thmshrpr committed Mar 20, 2012
    …ns to add to the map for inlining as it goes along.
    
    Inlining is still broken at the moment.  It works on more examples, now, but still causes segfaults/code panics in other situations.  Working on it...
  2. We now rerun RenUniq after the fusion, because inlining can lead to d…

    thmshrpr committed Mar 20, 2012
    …uplicate variable names, which break the invariant at this point that all variable names should be uniq. It doesn't mangle names as much as I was worried about.
  3. Changed the way functions are gathered for inlining -- now *all* func…

    thmshrpr committed Mar 20, 2012
    …tions are added for inlining, but transformations now only occur where functions are fusible, anyway
  4. Removed any circularity; not sure that it was necessary and want to m…

    thmshrpr committed Mar 20, 2012
    …ake sure everything else is running smoothly, first...
  5. Marked Lam's as "Inlinable", since they are (well reducible, but we'r…

    thmshrpr committed Mar 20, 2012
    …e treating this as the same thing)
  6. Removed code that worried about shadows in variable names, as I now k…

    thmshrpr committed Mar 20, 2012
    …now that all variables are unique.
Commits on Mar 12, 2012
  1. Inlining works better now; any time inline is called, it recursively …

    thmshrpr committed Mar 12, 2012
    …calls itself on the result of the inlining to see if it can spot new opportunities. It does this even in let bindings, though, which is not desirable and needs to be tweaked.
  2. In the midst of getting the final stage of inlining to work, requires…

    thmshrpr committed Mar 12, 2012
    … some concept of fixpoint or circular inlining, but it's not quite right, yet.
  3. Added a let_unrec stage before fusing to make sure there were no bind…

    thmshrpr committed Mar 12, 2012
    …ings that were marked recursive unless absolutely necessary.
Commits on Mar 6, 2012
  1. Added code to inline non-recursive fusion transformers. Unfortunately…

    thmshrpr committed Mar 6, 2012
    …, it's not currently working...
Commits on Feb 17, 2012
  1. Small stylistic adjustments.

    thmshrpr committed Feb 17, 2012
  2. Prevent conversion functions from being added the map used for inlini…

    thmshrpr committed Feb 17, 2012
    …ng, or else they might get fused away before they can be removed.
  3. renamed "inlined" to "applied" since I want the name for a later attr…

    thmshrpr committed Feb 17, 2012
    …ibute, and added that attribute, which uses a new AG transformation to inline some functions after rewrites have occured.
Commits on Feb 16, 2012
  1. Small cleanup in Subst.

    thmshrpr committed Feb 16, 2012
  2. Bindings labelled as recursive will not be added to the funcMp now. T…

    thmshrpr committed Feb 16, 2012
    …his will be broken if we can't trust Bind categs.
  3. Added the collection attributes for the next feature; we now collect …

    thmshrpr committed Feb 16, 2012
    …the names of all vars that appear in fusible function bodies push this up the tree. We use this to build a funcMp which stores the bodies of these vars so that we can inline them.
    
    TODO: Need to check if definitions are recursive, as we only want to inline non-recursive functions!
  4. Changed the name of FuseMp to FuncMp, since it's a type that will be …

    thmshrpr committed Feb 16, 2012
    …used for multiple function maps. Also changed some (initially empty) inherited attributes so that the empty value is explicity pushed to the module field of CodeAGItf instead of as an argument of the semantic function for CodeAGItf
  5. Deleted some dead code.

    thmshrpr committed Feb 16, 2012
Commits on Feb 8, 2012
  1. Cleaned up the code by using do notation for Map lookups and some oth…

    thmshrpr committed Feb 8, 2012
    …er code cleanup for readability
  2. Made inline used the "rewritten" version of args, this will eventuall…

    thmshrpr committed Feb 8, 2012
    …y end up being the "fused" version, causing the fusion to occur from the innermost application outward.
Commits on Feb 7, 2012
  1. Fixed a big that was keeping the rewriting from firing properly. Spec…

    thmshrpr committed Feb 7, 2012
    …ifically, the "isRewritable" attribute needs to be passed along by nodes that merely wrap an expr with extra information (Annotations and Let expressions). Also changed some of the code that used Maybes over to using do notation.
Commits on Jan 27, 2012
  1. Small cleanup and added TODOs.

    thmshrpr committed Jan 27, 2012
  2. Added the next phase, removing conversion functions. Not very robust …

    thmshrpr committed Jan 27, 2012
    …right now, as it doesn't remember how functions are paired, but this has to be done in earlier stages, so will leave it for now...
Commits on Jan 24, 2012
  1. Moved the fusion transformation to earlier in the pipeline. The key i…

    thmshrpr committed Jan 24, 2012
    …s to have it after a let-unrec (accuracy in this area will be important when we want to be careful about what we choose to inline), but before any anormal, which introduces extra names that make everything more complicated!
  2. Introduced a trace entry (for now) to know when we are calling cexprS…

    thmshrpr committed Jan 24, 2012
    …ubst on a non-Lamda expression. This shouldn't happen, so we want to know when it does, but still preserving the core.
  3. Try to apply a fusible function regardless of whether its arg is fusi…

    thmshrpr committed Jan 24, 2012
    …ble or not, mostly changed to simplify things for now. Will probably be reintroduced.
  4. Replace the names of fusible functions with their bodies, and make @i…

    thmshrpr committed Jan 24, 2012
    …sFusible a loc attribute so it can be referenced from @inlined