• 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
名称
最后提交
最后更新
attic 正在载入提交数据...
bin 正在载入提交数据...
include 正在载入提交数据...
kernel 正在载入提交数据...
lib 正在载入提交数据...
manuals 正在载入提交数据...
net 正在载入提交数据...
stdinc 正在载入提交数据...
tools 正在载入提交数据...
user 正在载入提交数据...
.cvsignore 正在载入提交数据...
.dir-locals.el 正在载入提交数据...
.gitignore 正在载入提交数据...
BUGS 正在载入提交数据...
LICENSE 正在载入提交数据...
Makefile 正在载入提交数据...
README 正在载入提交数据...
README.josmp 正在载入提交数据...
TODO 正在载入提交数据...
TRICKS 正在载入提交数据...
param.h 正在载入提交数据...