А по поводу проблем с производительностью спред оператора есть такие баги:
https://bugs.chromium.org/p/v8/issues/detail?id=10763
https://bugs.chromium.org/p/chromium/issues/detail?id=1204540
Выдержка от @cevek:
видимо проблема в том что спред создает новый объект не соответветсвующей мапе к оригинальному
The problem is that the CloneObjectIC creates local copies of object literal maps instead of reusing the shared trees from the cache. The following should be true but isn't:
от этого случается мегаморфизм и прощай перформанс
https://bugs.chromium.org/p/v8/issues/detail?id=10763
https://bugs.chromium.org/p/chromium/issues/detail?id=1204540
Выдержка от @cevek:
видимо проблема в том что спред создает новый объект не соответветсвующей мапе к оригинальному
The problem is that the CloneObjectIC creates local copies of object literal maps instead of reusing the shared trees from the cache. The following should be true but isn't:
~/v8$ v8 --allow-natives-syntax --nolazy-feedback-allocation
d8> o = {a:1, b:2}; %HaveSameMap({...o}, {...o})
false
от этого случается мегаморфизм и прощай перформанс