store lisp structures in SCM objects
* src/alloc.c (allocate_string, make_float, Fcons, init_vectors)
(allocate_vectorlike, allocate_buffer, Fmake_symbol, allocate_misc):
Store a smob in the internal structure's self field. Adapted from
Ken Raeburn's Guile-Emacs branch.
(valid_lisp_object_p): Use `SCM_IMP' and `SCM2PTR'.
(init_alloc_once): Initialize smob types.
(lsb_bits): Remove.
* src/emacs.c (gdb_use_lsb, gdb_use_struct, gdb_gctypebits)
(gdb_data_seg_bits): Remove.
* src/font.h (XFONT_SPEC, XFONT_ENTITY, XFONT_OBJECT):
* src/frame.h (XFRAME): Use `SCM_SMOB_DATA'.
* src/lisp.h (EMACS_INT, EMACS_UINT, EMACS_INT_MAX, FIXNUM_BITS)
(INTMASK, Lisp_Object, XHASH, XINT, XUINT, make_number, SXHASH)
(MOST_POSITIVE_FIXNUM, MOST_NEGATIVE_FIXNUM, XTYPE, INTEGERP):
Redefine in terms of libguile's SCM type.
(XCONS, XVECTOR, XSTRING, XSYMBOL, XFLOAT, XMISC, XPROCESS, XWINDOW)
(XTERMINAL, XSUBR, XBUFFER, XCHAR_TABLE, XSUB_CHAR_TABLE)
(XBOOL_VECTOR, XSETPSEUDOVECTOR, XHASH_TABLE, TYPED_PSEUDOVECTORP):
Use `SCM_SMOB_DATA'.
(XSETCONS, XSETVECTOR, XSETSTRING, XSETSYMBOL, XSETFLOAT, XSETMISC):
Use the SCM object from the structure's `self' field.
(XSETSUBR): Use `SCM_NEWSMOB'.
(struct Lisp_Cons, struct Lisp_String, struct vectorlike_header)
(struct Lisp_Subr, struct Lisp_Symbol, struct Lisp_Misc_Any)
(struct Lisp_Marker, struct Lisp_Overlay, struct Lisp_Save_Value)
(struct Lisp_Float): Add a `self' field.
(DEFUN): Initialize the `self' field to `NULL'.
(SYMBOLP, MISCP, VECTORLIKEP, STRINGP, CONSP, FLOATP): Use
`SCM_SMOB_PREDICATE'.
(enum Lisp_Type): Simplify.
(Lisp_Int): New enum value.
(Lisp_Int0, Lisp_Int1): Remove.
(LISP_INT_TAG, case_Lisp_Int): Simplify.
(XTYPE): Use type predicates instead of returning the tag bits.
(pI): Redefine.
(lisp_symbol_tag, lisp_misc_tag, lisp_string_tag, lisp_vectorlike_tag)
(lisp_cons_tag, lisp_float_tag): New variables.
(VALBITS, VALMAX, USE_LSB_TAG, INTTYPEBITS, LISP_INT1_TAG)
(LISP_STRING_TAG, LISP_INT_TAG_P, XLI, XIL, TYPEMASK, XSET, XPNTR)
(XUNTAG, VALMASK): Remove.
* src/vm-limit.c (exceeds_lisp_ptr): Always return false.
* src/w32heap.c (allocate_heap, init_heap): Remove MSB tagging
support, leaving only code that would have been used with
(`USE_LSB_TAG' in effect.