• adamk@chromium.org's avatar
    ES6 Map/Set iterators/forEach improvements · 70c3a714
    adamk@chromium.org authored
    This changes how Map/Set interacts with its iterators. When the
    underlying table is rehashed or cleared, we create a new table (like
    before) but we add a reference from the old table to the new table. We
    also add an array describing how to transition the iterator from the
    old table to the new table.
    
    When Next is called on the iterator it checks if there is a newer table
    that it should transition to. If there is, it updates the index based
    on the previously recorded changes and finally changes itself to point
    at the new table.
    
    With these changes Map/Set no longer keeps the iterators alive. Also,
    as before, the iterators keep the underlying table(s) alive but not the
    actual Map/Set.
    
    BUG=v8:1793
    LOG=Y
    R=mstarzinger@chromium.org, rossberg@chromium.org
    
    Review URL: https://codereview.chromium.org/289503002
    
    Patch from Erik Arvidsson <arv@chromium.org>.
    
    git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21389 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    70c3a714
Name
Last commit
Last update
..
blink_tests Loading commit data...
gcmole Loading commit data...
generate_shim_headers Loading commit data...
gyp Loading commit data...
oom_dump Loading commit data...
perf_tests Loading commit data...
profviz Loading commit data...
push-to-trunk Loading commit data...
sodium Loading commit data...
testrunner Loading commit data...
v8.xcodeproj Loading commit data...
visual_studio Loading commit data...
SourceMap.js Loading commit data...
android-build.sh Loading commit data...
android-ll-prof.sh Loading commit data...
android-run.py Loading commit data...
android-sync.sh Loading commit data...
bash-completion.sh Loading commit data...
check-static-initializers.sh Loading commit data...
codemap.js Loading commit data...
consarray.js Loading commit data...
cross_build_gcc.sh Loading commit data...
csvparser.js Loading commit data...
disasm.py Loading commit data...
draw_instruction_graph.sh Loading commit data...
freebsd-tick-processor Loading commit data...
fuzz-harness.sh Loading commit data...
gc-nvp-trace-processor.py Loading commit data...
gdb-v8-support.py Loading commit data...
gen-postmortem-metadata.py Loading commit data...
generate-runtime-tests.py Loading commit data...
generate-ten-powers.scm Loading commit data...
generate-trig-table.py Loading commit data...
grokdump.py Loading commit data...
js2c.py Loading commit data...
jsmin.py Loading commit data...
lexer-shell.cc Loading commit data...
lexer-shell.gyp Loading commit data...
linux-tick-processor Loading commit data...
ll_prof.py Loading commit data...
logreader.js Loading commit data...
mac-nm Loading commit data...
mac-tick-processor Loading commit data...
mingw-generate-makefiles.sh Loading commit data...
nacl-run.py Loading commit data...
parser-shell.cc Loading commit data...
plot-timer-events Loading commit data...
presubmit.py Loading commit data...
process-heap-prof.py Loading commit data...
profile.js Loading commit data...
profile_view.js Loading commit data...
run-deopt-fuzzer.py Loading commit data...
run-llprof.sh Loading commit data...
run-tests.py Loading commit data...
run-valgrind.py Loading commit data...
shell-utils.h Loading commit data...
splaytree.js Loading commit data...
stats-viewer.py Loading commit data...
test-push-to-trunk.sh Loading commit data...
test-server.py Loading commit data...
tick-processor.html Loading commit data...
tickprocessor-driver.js Loading commit data...
tickprocessor.js Loading commit data...
v8-info.sh Loading commit data...
v8-rolls.sh Loading commit data...
v8heapconst.py Loading commit data...
v8heapconst.py.tmpl Loading commit data...
windows-tick-processor.bat Loading commit data...