Optimize add/set/delete operations for string keys in Maps and Sets
authoradamk <adamk@chromium.org>
Mon, 8 Dec 2014 18:03:28 +0000 (10:03 -0800)
committerCommit bot <commit-bot@chromium.org>
Mon, 8 Dec 2014 18:03:39 +0000 (18:03 +0000)
commit243764b04b580741774169358d47b63c5a3eed7f
treed79ddcaa206646d804129a15da59a1e06fdc98f0
parentb4f325071271bedcb77969076b089af8a782e548
Optimize add/set/delete operations for string keys in Maps and Sets

This was previously landed in commit 8599f5f, but failed the
collections mjsunit test on ia32 with --deopt-every-n=1. The fixed
patch adds a ClearFlag(HValue::kCanOverflow) call after every
arithmetic operation, which should remove all the deopt points in these
intrinsics.

Ideally, it seems like there should be a way to verify that there are
no deopt points for these inline optimized functions, since there's
nothing to deopt to. But I don't currently know of such a thing.

Review URL: https://codereview.chromium.org/782073002

Cr-Commit-Position: refs/heads/master@{#25715}
src/collection.js
src/hydrogen-instructions.h
src/hydrogen.cc
src/hydrogen.h
src/objects.h
src/runtime/runtime.h