r-lib / cpp11

cpp11 helps you to interact with R objects using C++ code.
https://cpp11.r-lib.org/
Other
193 stars 46 forks source link

avoid need for R_NilValue checks in protect code #285

Closed kevinushey closed 1 year ago

kevinushey commented 1 year ago

This PR provides a minor optimization, that allows us to avoid the need to check the tail in the precious list for R_NilValue. This is done by ensuring that the "tail" of the precious list is itself initialized as a "cell", and so one can always safely access its CAR.

The only downside is that the "empty" precious list now has two cells rather than one, but it should be worth the bit of extra performance (+ the overall code clarity is IMHO improved).

romainfrancois commented 1 year ago

Thanks !