{"push_id":629612345,"size":7,"distinct_size":7,"ref":"refs/heads/pattern-matcher","head":"68a6a924bd2f3f1c7f35d3e19ce8a8c3f44958b7","before":"fd7797fd0e25e78ec99efb209b7cc23ffa426c8d","commits":[{"sha":"216ceaf3ece62cc4ff9e03ffbf122216b2e50d0f","author":{"email":"ea5d1b8faaf708b65698a4c6e66d64a7ffaac9a2@gmail.com","name":"Ryan Cumming"},"message":"compiler: Better planning of terminating branches\n\n- Create a special UnreachableValue subclass of\n  ps.SingleValue(iv.UnitValue). This indicates that the value is result\n  of an expression that unconditionally terminated.\n\n- Flatten out conditionals where one branch terminates so the continuing\n  branch is after the conditional. This lets us avoid a phi and\n  calculate a proper result type by ignoring the terminating branch.\n\n- If a lambda returns an UnreachableValue annotate it as NoReturn. This\n  indicates to the rest of the planner that the lambda does not\n  terminate.","distinct":true,"url":"https://api.github.com/repos/etaoins/llambda/commits/216ceaf3ece62cc4ff9e03ffbf122216b2e50d0f"},{"sha":"b0cdbdfbfc86ab62a745839ad34958e55b967a50","author":{"email":"ea5d1b8faaf708b65698a4c6e66d64a7ffaac9a2@gmail.com","name":"Ryan Cumming"},"message":"Rename LiveValuesAtBarrier{=>Suite}.scala\n\nThis matches the class name and the convention for our test filenames","distinct":true,"url":"https://api.github.com/repos/etaoins/llambda/commits/b0cdbdfbfc86ab62a745839ad34958e55b967a50"},{"sha":"cc403e6f7a5990dd5daed44d78f13481749d72d3","author":{"email":"ea5d1b8faaf708b65698a4c6e66d64a7ffaac9a2@gmail.com","name":"Ryan Cumming"},"message":"compiler: Add ps.Step.alwaysTerminates\n\nThis factors the code out of LiveValeusAtBarrier","distinct":true,"url":"https://api.github.com/repos/etaoins/llambda/commits/cc403e6f7a5990dd5daed44d78f13481749d72d3"},{"sha":"4888187b69bc9c3f7ca0c257500dbfeecd9b12d6","author":{"email":"ea5d1b8faaf708b65698a4c6e66d64a7ffaac9a2@gmail.com","name":"Ryan Cumming"},"message":"compiler: Inline procedures only used once\n\nThis is motivated by the single-use lambdas generated by pattern match\nclauses that can only fail one way. However, this is a generally useful\noptimisation.\n\n- In AnalyseExprs track the number of usages of a variable instead if\n  tracking if its used at all. This doesn't work correctly if a usage is\n  later optimised out but it's good enough for heuristics.\n\n- If a procedure is only used once and it doesn't have a self argument\n  then unconditionally inline its application if possible. This prevents\n  us from having to plan an out-of-line version and lets us useful the\n  ambient value information from the call site.","distinct":true,"url":"https://api.github.com/repos/etaoins/llambda/commits/4888187b69bc9c3f7ca0c257500dbfeecd9b12d6"},{"sha":"4da8e7b47bc354153412c48ccaa9b5aa0248d284","author":{"email":"ea5d1b8faaf708b65698a4c6e66d64a7ffaac9a2@gmail.com","name":"Ryan Cumming"},"message":"compiler: Remove unused located parameter\n\nThis is completely unused by PolymorphicProcedureType.typeForArgs","distinct":true,"url":"https://api.github.com/repos/etaoins/llambda/commits/4da8e7b47bc354153412c48ccaa9b5aa0248d284"},{"sha":"d4ec1f352c8a7d419b482a4a955f6a29462089b1","author":{"email":"ea5d1b8faaf708b65698a4c6e66d64a7ffaac9a2@gmail.com","name":"Ryan Cumming"},"message":"compiler: Move misplaced brace","distinct":true,"url":"https://api.github.com/repos/etaoins/llambda/commits/d4ec1f352c8a7d419b482a4a955f6a29462089b1"},{"sha":"68a6a924bd2f3f1c7f35d3e19ce8a8c3f44958b7","author":{"email":"ea5d1b8faaf708b65698a4c6e66d64a7ffaac9a2@gmail.com","name":"Ryan Cumming"},"message":"Move WeakListof to (llambda typed), fix (list)\n\nThis is still undocumented for the moment but it's generally useful.\nThis is specifically being exported so that (list) can have a proper\npolymorphic type annotation in R7RS.","distinct":true,"url":"https://api.github.com/repos/etaoins/llambda/commits/68a6a924bd2f3f1c7f35d3e19ce8a8c3f44958b7"}]}