1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-14 15:40:19 +02:00

for mmap objcodes, store the fd in the third word, as a scheme int

This leaves space for native code.

* libguile/objcodes.h (SCM_OBJCODE_NATIVE_CODE)
  (SCM_SET_OBJCODE_NATIVE_CODE): Reserve the fourth word of objcode for
  "native code", whatever that means.

* libguile/objcodes.c: Update a comment.
  (make_objcode_by_mmap): Put the fd in the third word.
This commit is contained in:
Andy Wingo 2011-01-27 13:11:02 +01:00
parent f9654187b1
commit 6ce3666ff2
2 changed files with 8 additions and 6 deletions

View file

@ -45,11 +45,11 @@ verify (((sizeof (SCM_OBJCODE_COOKIE) - 1) & 7) == 0);
*/
/* The words in an objcode SCM object are as follows:
- scm_tc7_objcode | the flags for this objcode
- scm_tc7_objcode | type | flags
- the struct scm_objcode C object
- the parent of this objcode, if this is a slice, or #f if none
- the file descriptor this objcode came from if this was mmaped,
or 0 if none
- the parent of this objcode: either another objcode, a bytevector,
or, in the case of mmap types, file descriptors (as an inum)
- "native code" -- not currently used.
*/
static SCM
@ -100,8 +100,7 @@ make_objcode_by_mmap (int fd)
sret = scm_double_cell (SCM_MAKE_OBJCODE_TAG (SCM_OBJCODE_TYPE_MMAP, 0),
(scm_t_bits)(addr + strlen (SCM_OBJCODE_COOKIE)),
SCM_UNPACK (SCM_BOOL_F),
(scm_t_bits)fd);
SCM_UNPACK (scm_from_int (fd)), 0);
/* FIXME: we leak ourselves and the file descriptor. but then again so does
dlopen(). */