1. 2012年 4月 26日 1 次提交
  2. 2012年 4月 25日 14 次提交
  3. 2012年 4月 24日 6 次提交
    • Austin Clements's avatar
      radix: Add a method to skip nulls and use it when initializing · c3856fc7
      Austin Clements 提交于
      I think the semantics used to be that the iterator would always start
      at the first non-null element, which I broke when I switched to the
      iterative implementation.  This fixes that and introduces a method
      that will be useful once iterators can point to null elements.
      c3856fc7
    • Austin Clements's avatar
      radix: Make radix_iterator fields private · e00b4d6c
      Austin Clements 提交于
      e00b4d6c
    • Austin Clements's avatar
      radix: Let the compiler inline and deduplicate radix{_range}.end() · 73eaacd0
      Austin Clements 提交于
      This puts the trivial part of the radix_iterator constructor used by
      end() in the class definition, so the compiler can see the full
      definition of end().  This should let it inline it and, hopefully,
      constant-eliminate it so it doesn't get called repeatedly.
      73eaacd0
    • Austin Clements's avatar
      radix: Normal beign/end interface · 53ec8ed9
      Austin Clements 提交于
      In standard collection types, begin and end are methods of the
      collection.  The global begin and end are defined in <iterator> and
      simply call these methods.
      53ec8ed9
    • Austin Clements's avatar
      Simpler, iterative, and bounded radix_iterator · b1bdb3f4
      Austin Clements 提交于
      Previously, the radix iterator unconditionally found the next non-null
      leaf node, even if it fell outside of the range the iterator was
      derived from.  This was obviously an efficiency issue, but it also
      introduced unnecessary sharing because of the reads outside of the
      iterator's range.  Now it takes an explicit upper bound and will stop
      resolving elements when it reaches that bound.  The end() iterator is
      now naturally represented in terms of this bound, rather than in terms
      of a special-case key.
      
      For asharing vm, this eliminates all violations of the commutativity
      rule.
      
      Since I couldn't figure out how to nicely work this bound into the
      existing recursive traversal implementation, I reworked it to be
      iterative and, I think, made it much simpler in the process.  This
      does make one notable semantic change: previously the radix iterator
      cached the element it pointed to, so an update to that element would
      not affect the value returned by the iterator.  It no longer caches
      it, which makes it behave more like a regular collection iterator.
      b1bdb3f4
    • Austin Clements's avatar
      Switch to radix as the default VM system · 6eabada8
      Austin Clements 提交于
      6eabada8
  4. 2012年 4月 22日 2 次提交
  5. 2012年 4月 21日 17 次提交