you have some 6-7 functions in jsvars.[hc] defined to be force-inlined but the function body is in the .c file instead of the .h file.
I think the INLINE keyword used is defined in jsutils.h so that if there's no LTO they're not inlined? It just seemed tidier - it may also be that given the nature of ESP8266 it's actually faster to not inline them (maybe to just stick them in that first block of flash memory?).
You could look into it, I thought more functions were force-inlined than just 6 or 7, and I think those functions also depend on other functions defined in jsvar.c being inlined into them. There are some in jsvariterator.h too... It just seemed tidier - as the compilers will do it, I though it was better to make use of it.
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
I think the
INLINE
keyword used is defined in jsutils.h so that if there's no LTO they're not inlined? It just seemed tidier - it may also be that given the nature of ESP8266 it's actually faster to not inline them (maybe to just stick them in that first block of flash memory?).You could look into it, I thought more functions were force-inlined than just 6 or 7, and I think those functions also depend on other functions defined in jsvar.c being inlined into them. There are some in jsvariterator.h too... It just seemed tidier - as the compilers will do it, I though it was better to make use of it.