Commits

Erik Eckstein committed 4187959e664
GenericSpecializer: When specializing a generic function, convert indirect parameters/result to direct parameters/result. With this re-abstraction a specialized function has the same calling convention as if it would have been written with the specialized types in the first place. In general this results in less alloc_stacks and load/stores. It also can eliminate some re-abstraction thunks, e.g. if a generic closure is used in a non-generic context. It some (hopefully rare) cases it may require to add re-abstraction thunks. In case a function has multiple indirect results, only the first is converted to a direct result. This is an open TODO.