It works this way (doc.c): doc type is (char *). If (EMACS_INT) doc >=
0, it is really a pointer. Otherwise we should use (off_t) (-
(EMACS_INT) doc) for seeking in `DOC' file.
It used to be this way in emacs-18.55, so it worked for all known
platforms for more than 10 yrs, and my ones are no exception. But
what forbids it to stop working? What requires valid pointers to be
non- negative when converted to integer? Once it is not the case, doc
implementation has to be rewritten.
Most surprising is why design its own representation rules for doc?
We just have a way to store both integer and pointer in a single word
distinguishably: Lisp_Object. Why not reuse it for Lisp_Subr.doc?