v8/test
Benedikt Meurer 426ae4265e [csa] Extend TryToName to also implicitly convert Oddball keys.
Previously TryToName bailed out for Oddball keys (i.e. when passing true
or false as the key), which meant that for example the generic
KeyedLoadIC would always bail out to the %KeyedGetProperty runtime
function. But handling Oddball keys is fairly easy, since every oddball
value carries it's unique string representation. Adding just this case
to the CodeStubAssembler::TryToName method boosts this simple
micro-benchmark by a factor of 4x:

  const n = 1e7;
  const obj = {};
  const key = true;

  console.time('foo');
  for (let i = 0; i < n; ++i) {
    if (obj[key] === undefined) {
      obj[key] = key;
    }
  }
  console.timeEnd('foo');

It also shows on the ARES-6 ML benchmark and on several Speedometer
tests, where objects are being used as dictionaries and the developers
rely on the implicit ToString conversions on the property accesses.
In the ARES-6 ML benchmark, the number of calls to %KeyedGetProperty
is reduced by 137,758.

Bug: v8:6278, v8:6344, v8:6670
Change-Id: Iaa965e30be4c247682a67ec09543655df9b761d2
Reviewed-on: https://chromium-review.googlesource.com/599527
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47105}
2017-08-03 06:13:13 +00:00
..
benchmarks Use --opt instead of --crankshaft in tests. 2017-04-28 14:20:39 +00:00
cctest [csa] Extend TryToName to also implicitly convert Oddball keys. 2017-08-03 06:13:13 +00:00
common [wasm] Extract WasmVal to own header and rename to WasmValue 2017-07-18 13:12:56 +00:00
debugger [inspector] move breakpoint management to native 2017-08-02 19:20:26 +00:00
fuzzer [wasm] Extract WasmVal to own header and rename to WasmValue 2017-07-18 13:12:56 +00:00
inspector [inspector] remove breakpoints when agent is disabled 2017-08-03 01:54:33 +00:00
intl Fix common misspellings 2017-08-02 09:35:28 +00:00
js-perf-test [inspector] added Debugger.getPossibleBreakpoints perf test 2017-07-31 08:05:29 +00:00
memory
message [test] Add call-undeclared-constructor message test. 2017-08-02 07:31:31 +00:00
mjsunit [wasm] Implement atomic add/sub operations. 2017-08-02 22:59:18 +00:00
mkgrokdump Fix compilation failure due to overload of virtual function 2017-05-24 21:19:48 +00:00
mozilla Enable --harmony-strict-legacy-accessor-builtins by default 2017-08-02 21:30:57 +00:00
preparser
promises-aplus Fix common misspellings 2017-08-02 09:35:28 +00:00
test262 Fix common misspellings 2017-08-02 09:35:28 +00:00
unittests Reland "Start migration of try/throw/catch to match proposal." 2017-08-02 22:35:07 +00:00
wasm-spec-tests [wasm] Update spec tests 2017-07-25 14:55:07 +00:00
webkit Fix common misspellings 2017-08-02 09:35:28 +00:00
bot_default.gyp [wasm] Add wasm spec tests to the v8 test runner 2017-04-27 13:00:13 +00:00
bot_default.isolate [wasm] Add wasm spec tests to the v8 test runner 2017-04-27 13:00:13 +00:00
BUILD.gn [wasm] Remove the wasm-asmjs fuzzer 2017-06-21 10:59:35 +00:00
default.gyp [wasm] Add wasm spec tests to the v8 test runner 2017-04-27 13:00:13 +00:00
default.isolate [wasm] Add wasm spec tests to the v8 test runner 2017-04-27 13:00:13 +00:00
optimize_for_size.gyp
optimize_for_size.isolate [debugger] basic test infrastructure for new debugger test api. 2016-10-21 06:38:05 +00:00
perf.gyp
perf.isolate Remove SIMD.js from V8. 2017-02-14 06:57:25 +00:00