[fpc-devel] Streamlining TVMTBuilder.generate_vmt after r41716 & r41884

Sven Barth pascaldragon at googlemail.com
Sun Aug 11 19:31:03 CEST 2019


Am 02.08.2019 um 21:27 schrieb Blaise at blaise.ru:
> On 02.08.2019 21:36, Blaise at blaise.ru wrote:
>> embed a copy of the body of insert_struct_hidden_paras into 
>> TVMTBuilder.generate_vmt, then merge those two procdef-member 
>> traversals into one (hey, performance!)
>
> Would you guys oppose such a change? Then we could rename 
> insert_struct_hidden_paras back to insert_record_hidden_paras :)
>
> Aside from performance, I would like it for closures (for their 
> nameless methods, the insertion of hidden parameters cannot be 
> deferred until the VMT generation).

I raised this on core and it was rejected. Maintainability is more 
important than performance as it could easily be that something else is 
added to insert_struct_hidden_paras and then that is forgotten to be 
added in TVMTBuilder.generate_vmt.

>
> Also, handle_calling_convention would need to be changed not to 
> indirectly rely on current_filepos, but I see that as a bonus: the 
> trick of swapping current_filepos could be removed from its callers 
> (namely, insert_record_hidden_paras).
>

That proposal is accepted. However without an overload as I suggested, 
instead all callsites of handle_calling_convention will need to be 
adjusted. Feel free to draw up a patch for this.

Regards,
Sven


More information about the fpc-devel mailing list