v8/test/mjsunit/es9
Benedikt Meurer 92c6af8a2d [interpreter] Do ToObject implicitly as part of CloneObject.
The CloneObject bytecode was only able to handle objects, null and
undefined, and explicit bytecode had to be generated to perform the
ToObject outside the bytecode (unlike the other IC bytecodes that
just perform the ToObject implicitly). That means the simplest possible
object cloning would also generate a sequence of 5 bytecodes (at least):

```
   Mov <register>, a0
   JumpIfNull @1
   JumpIfUndefined @1
   ToObject <register>
1: CloneObject <register>
```

That is quite wasteful and unnecessary, since the core logic in the
runtime already does the ToObject properly anyways. This change
refactors the CloneObjectIC slightly to behave more like the other ICs
and do the ToObject implicitly when necessary.

Bug: v8:7611, v8:9114, v8:9183, v8:9343
Change-Id: I11973e90bf875f154a5a7739287bee17041e4a7a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1649554
Reviewed-by: Mythri Alle <mythria@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62064}
2019-06-08 17:42:12 +00:00
..
regress [Test] Add PrepareForOptimization to some mjsunit tests. 2019-05-03 13:32:32 +00:00
object-rest-basic.js
object-spread-basic.js [interpreter] Do ToObject implicitly as part of CloneObject. 2019-06-08 17:42:12 +00:00
object-spread-ic-dontenum-transition.js [CloneObjectIC] add CSA implementation of slow case 2018-09-11 20:43:53 +00:00
object-spread-ic-multiple-transitions.js [CloneObjectIC] add CSA implementation of slow case 2018-09-11 20:43:53 +00:00
object-spread-ic.js [CloneObjectIC] clone MutableHeapNumbers instead of referencing them 2018-11-07 03:15:45 +00:00
regexp-lookbehind.js [regexp] make lookbehind assertions non-quantifiable. 2018-02-20 11:24:32 +00:00
template-escapes.js Remove always-on --harmony-template-escapes flag 2017-11-28 18:36:41 +00:00