1. 07 9月, 2018 1 次提交
  2. 05 9月, 2018 1 次提交
  3. 16 8月, 2018 1 次提交
    • N
      Speed up NLL with `HybridIdxSetBuf`. · 5745597e
      Nicholas Nethercote 提交于
      `HybridIdxSetBuf` is a sparse-when-small but dense-when-large index set
      that is very efficient for sets that (a) have few elements, (b) have
      large `universe_size` values, and (c) are cleared frequently. Which
      makes it perfect for the `gen_set` and `kill_set` sets used by the new
      borrow checker.
      
      This patch reduces the execution time of the five slowest NLL benchmarks
      by 55%, 21%, 16%, 10% and 9%. It also reduces the max-rss of three
      benchmarks by 53%, 33%, and 9%.
      5745597e
  4. 23 7月, 2018 2 次提交
  5. 01 5月, 2018 1 次提交
  6. 10 3月, 2018 2 次提交
  7. 11 1月, 2018 1 次提交
  8. 13 12月, 2017 1 次提交
  9. 16 8月, 2017 1 次提交
  10. 28 6月, 2017 1 次提交
  11. 18 3月, 2017 1 次提交
  12. 26 12月, 2016 1 次提交
    • F
      Refactor mir::dataflow: remove Ctxt associated type from BitDenotation trait. · a6fe6c9b
      Felix S. Klock II 提交于
      I no longer remember why I needed this (or thought I did). The way
      that the `BitDenotation` is passed around in all existing use cases
      (and planned future ones), the thing that were in the `Ctxt` can just
      be part of `Self` instead.
      
      (I think ariel had been pushing me to do this back when I first put in
      this infrastructure; it took me a while to see how much of pain the
      `Ctxt` was causing.)
      a6fe6c9b
  13. 14 11月, 2016 1 次提交
  14. 28 10月, 2016 1 次提交
  15. 11 10月, 2016 1 次提交
  16. 09 6月, 2016 2 次提交
  17. 25 5月, 2016 2 次提交
  18. 24 5月, 2016 3 次提交
  19. 16 5月, 2016 1 次提交
    • F
      Revised mir-dataflow. · c73f3517
      Felix S. Klock II 提交于
      Incorporates many fixes contributed by arielb1.
      
      ----
      
      revise borrowck::mir::dataflow code to allow varying domain for bitvectors.
      
      This particular code implements the `BitDenotation` trait for three
      analyses:
      
       * `MovingOutStatements`, which, like `borrowck::move_data`, maps each
         bit-index to a move instruction, and a 1 means "the effect of this
         move reaches this point" (and the assigned l-value, if a scoped
         declaration, is still in scope).
      
       * `MaybeInitializedLvals`, which maps each bit-index to an l-value.
         A 1 means "there exists a control flow path to this point that
         initializes the associated l-value."
      
       * `MaybeUninitializedLvals`, which maps each bit-index to an l-value
         A 1 means "there exists a control flow path to this point that
         de-initializes the associated l-value."
      
      ----
      
      Revised `graphviz` dataflow-rendering support in `borrowck::mir`.
      
      One big difference is that this code is now parameterized over the
      `BitDenotation`, so that it can be used to render dataflow results
      independent of how the dataflow bitvectors are interpreted; see where
      reference to `MoveOut` is replaced by the type parameter `D`.
      
      ----
      
      Factor out routine to query subattributes in `#[rustc_mir(..)]`.
      
      (Later commits build upon this for some unit testing and instrumentation.)
      
      ----
      
      thread through a tcx so that I can query types of lvalues as part of analysis.
      
      ----
      
      Revised `BitDenotation::Ctxt`, allowing variation beyond `MoveData`.
      
      The main motivation is to ease threading through a `TyCtxt`.
      
      (In hindsight it might have been better to instead attach the `TyCtxt`
      to each of the different dataflow implementations, but that would
      require e.g. switching away from having a `Default` impl, so I am
      leaving that experiment for another time.)
      c73f3517
  20. 23 3月, 2016 2 次提交
  21. 22 3月, 2016 1 次提交
    • F
      scaffolding for borrowck on MIR. · 5757e65f
      Felix S. Klock II 提交于
      emit (via debug!) scary message from `fn borrowck_mir` until basic
      prototype is in place.
      
      Gather children of move paths and set their kill bits in
      dataflow. (Each node has a link to the child that is first among its
      siblings.)
      
      Hooked in libgraphviz based rendering, including of borrowck dataflow
      state.
      
      doing this well required some refactoring of the code, so I cleaned it
      up more generally (adding comments to explain what its trying to do
      and how it is doing it).
      
      Update: this newer version addresses most review comments (at least
      the ones that were largely mechanical changes), but I left the more
      interesting revisions to separate followup commits (in this same PR).
      5757e65f