On 22/06/18 22:49, [email protected] wrote:
On 22.06.2018 21:42, Jonas Maebe wrote:

The rationale for the above is that they need symbols that are longer than 255 characters.

And such symbols could not be shortened by hashing heads or tails?

The type information must be fully encoded in the symbol names on those platforms. You could of course rewrite the assembler symbol dictionary and assembler writers to keep that type information and the base name separate, and then write them piece by piece every time they're needed. That would just complicate things though.

I would propose to switch all targets to use use ansistrings for symbol names.

Is this the consensus?

Personally, if I had any stake in this, I would be against it. I mean, FPC is already slower than DCC.

I doubt this is a major contributor to that fact (especially since implicit exception frames are disabled for the compiler binary, so ansistrings don't result in extra exception frames). Additionally, this hashing makes it impossible to provide debuggers with a function to reverse-map function symbol names onto class/method/type-overload, which is a pain.

In theory, you could probably add support to debuggers to ignore the symbol names and have them concatenate the class name, method name, and parameter types, reproducing all the same hashing done by the compiler, but in general debuggers don't do this for performance reasons (so you can set breakpoints without parsing the debug information of the entire binary up front).


Jonas
_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to