I am thinking of code like the following (admittedly a bit artificial): function f(...a) { var b = [...a, ...a]; var c = [...b, 42, ...b] // do stuff with c here without letting it escape } There is no good reason for this code not to be optimized, but currently we only optimize NewArrayWithSpread if its Spread(s) come from a NewArrayBuffer or a CreateRest, and not if they come for example from a NewArrayWithSpread.