Maybe it's possible to represent each (non-singleton?) canonical function as a FunctionObjectGroup (later FunctionShuple) that has the Class/realm/prototype fields from ObjectGroup and a pointer to the JSScript/LazyScript? Then lambda cloning would allocate a new JSFunction pointing to this group/shuple and its script/lazyscript). Variable-size tuples (layout based on Class for example) was part of the original tuples idea and maybe it would work well for functions?
Bug 1590198 Comment 13 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
Maybe it's possible to represent each (non-singleton?) canonical function as a FunctionObjectGroup (later FunctionShuple) that has the Class/realm/prototype fields from ObjectGroup and a pointer to the JSScript/LazyScript? Then lambda cloning would allocate a new JSFunction pointing to this group/shuple and its script/lazyscript) and we don't need the canonical JSFunction anymore. Variable-size tuples (layout based on Class for example) was part of the original tuples idea and maybe it would work well for functions?