I've not been playing close attention to parrot recently
[Been busy hacking for the dark side :-)]
I've just noticed that Leo added a check for whether the C compiler supports
the inline keyword:

http://nntp.x.perl.org/group/perl.cvs.parrot/5176

PARROT_INLINE conditionally becomes either inline or "".

A few parrot C files now have PARROT_INLINE static functions, which means
that the inline is acting as a compiler optimiser hint, but only within
the single source file.

I was wondering whether it would be feasible to replace macros (some, most
or even all) conditionally with inline functions if the inline keyword is
available. This ought to make symbolic debugging easier. Debuggers don't
understand macros, but ought to understand inline functions.

("ought" because I'm pretty sure it's not perfect yet, probably due to
inline functions not having stack frames, and the debugging info expecting
stack frames to hang off)

But:

1: I'm not sure how easy this is logistically. We'd have to have some way
   of munging the C source to give one or the other
2: I'm not sure if inline functions have any downsides compared with macros,
   such as not always giving as good optimisations as macro-re-written code.

Is this something worth taking further?

(Ulterior motive - I'm curious whether doing this would also help perl 5)

Nicholas Clark

Reply via email to