1. 19 Jun, 2000 1 commit
  2. 19 May, 2000 1 commit
  3. 02 Apr, 2000 1 commit
  4. 30 Mar, 2000 1 commit
  5. 29 Mar, 2000 1 commit
    • Ken Raeburn's avatar
      Stop assuming interval pointers and lisp objects can be distinguished by · e0b8c689
      Ken Raeburn authored
      inspection.  Beginnings of support for expensive internal consistency checks.
      
      * config.in (ENABLE_CHECKING): Undef.
      
      * lisp.h (struct interval): Replace "parent" field with a union of interval
      pointer and Lisp_Object; add new bitfield to use as discriminant.  Change other
      flag fields to bitfields.
      (CHECK): New macro for consistency checking.  If ENABLE_CHECKING is defined and
      the supplied test fails, print a message and abort.
      (eassert): New macro.  Use CHECK to provide an assert-like facility.
      
      * intervals.h (NULL_INTERVAL_P): Now applies only to real interval pointers;
      abort if the value looks like a lisp object.
      (NULL_INTERVAL_P, NULL_PARENT, HAS_PARENT, HAS_OBJECT, SET_PARENT, SET_OBJECT,
      INTERVAL_PARENT, GET_INTERVAL_OBJECT, COPY_PARENT): Modify for new interval
      parent definition.
      
      * alloc.c (mark_interval_tree, MARK_INTERVAL_TREE, UNMARK_BALANCE_INTERVALS):
      Update references that need an addressable lisp object in the interval
      structure.
      (die): New function.
      (suppress_checking): New variable.
      
      * intervals.c (interval_start_pos): Just return 0 if there's no parent object.
      e0b8c689
  6. 28 Mar, 2000 1 commit
  7. 27 Mar, 2000 1 commit
    • Gerd Moellmann's avatar
      (mark_maybe_object): New function. · 182ff242
      Gerd Moellmann authored
      (mark_memory): Use it.
      (SETJMP_WILL_LIKELY_WORK, SETJMP_WILL_NOT_WORK): New macros.
      (setjmp_tested_p, longjmp_done): New variables.
      (test_setjmp): New function.
      (mark_stack) [!GC_SETJMP_WORKS]: Call test_setjmp.
      (init_alloc): Initialize setjmp_tested_p and longjmp_done.
      182ff242
  8. 22 Mar, 2000 1 commit
    • Ken Raeburn's avatar
      Changes towards better type safety regarding intervals, primarily · 439d5cb4
      Ken Raeburn authored
      regarding the "parent" handle.  These just separate out the different
      usages based on the type of parent (interval vs lisp object); later
      changes will do type checking and enforcement.
      
      	* intervals.h (NULL_INTERVAL): Cast to INTERVAL type.
      	(INT_LISPLIKE): New macro.
      	(NULL_INTERVAL_P): Use it.
      	(INTERVAL_HAS_PARENT, INTERVAL_HAS_OBJECT, SET_INTERVAL_PARENT,
      	SET_INTERVAL_OBJECT, INTERVAL_PARENT, COPY_INTERVAL_PARENT,
      	GET_INTERVAL_OBJECT, INTERVAL_PARENT_OR_NULL): New macros.
      
      	* alloc.c (make_interval, gc_sweep): Use new macros; eliminate all
      	explicit references to "parent" field of struct interval and
      	associated unclean type conversions.
      	* intervals.c (create_root_interval, root_interval, rotate_right,
      	rotate_left, balance_possible_root_interval, split_interval_right,
      	split_interval_left, interval_start_pos, find_interval,
      	next_interval, previous_interval, update_interval,
      	adjust_intervals_for_insertion, delete_node, delete_interval,
      	adjust_intervals_for_deletion, merge_interval_right,
      	merge_interval_left, reproduce_tree, graft_intervals_into_buffer,
      	copy_intervals_to_string): Likewise.
      	* intervals.h (AM_LEFT_CHILD, AM_RIGHT_CHILD, RESET_INTERVAL):
      	Likewise.
      	* syntax.c (update_syntax_table): Likewise.
      
      	* intervals.c (reproduce_tree_obj): New function, like
      	reproduce_tree but takes a Lisp_Object for the parent.  Declare
      	with prototype.
      	(graft_intervals_into_buffer): Use it when appropriate.
      	(reproduce_tree): Declare with prototype.
      	(balance_possible_root_interval): Check that the parent is a lisp
      	object before trying to examine its type.
      439d5cb4
  9. 21 Mar, 2000 1 commit
  10. 17 Feb, 2000 3 commits
    • Gerd Moellmann's avatar
      (enum mem_type): Compile unconditionally. · 0b378936
      Gerd Moellmann authored
      0b378936
    • Gerd Moellmann's avatar
      (mark_object): Don't mark symbol names in pure space. · 34400008
      Gerd Moellmann authored
      (gc_sweep): Don't unmark symbol names in pure space.
      
      (toplevel): Include setjmp.h.
      (PURE_POINTER_P): New define.
      (enum mem_type) [GC_MARK_STACK]: New enumeration.
      (Vdead) [GC_MARK_STACK]: New variable.
      (lisp_malloc): Add parameter TYPE, call mem_insert if
      GC_MARK_STACK is defined.
      (allocate_buffer): New function.
      (lisp_free) [GC_MARK_STACK]: Call mem_delete.
      (free_float) [GC_MARK_STACK]: Set type to Vdead.
      (free_cons) [GC_MARK_STACK]: Set car to Vdead.
      (stack_base, mem_root, mem_z) [GC_MARK_STACK]: New variables.
      (MEM_NIL) [GC_MARK_STACK]: New define.
      (struct mem_node) [GC_MARK_STACK]: New structure.
      (mem_init, mem_find, mem_insert, mem_delete, mem_insert_fixup)
      (mem_delete_fixup, mem_rotate_left, mem_rotate_right)
      (live_string_p, live_cons_p, live_symbol_p, live_float_p)
      (live_misc_p, live_vector_p, live_buffer_p, mark_memory)
      (mark_stack) [GC_MARK_STACK]: New functions.
      (Fgarbage_collect) [GC_MARK_STACK]: Call mark_stack.
      (clear_marks): Removed.
      (gc_sweep): Set free conses' car, free floats' type, free
      symbols' function to Vdead.  Use lisp_free to free buffers.
      (init_alloc_once): Initialize Vdead.
      (survives_gc_p): Return non-zero for pure objects.
      
      Add comments throughout the file.
      34400008
    • Gerd Moellmann's avatar
      cc94f3b2
  11. 17 Jan, 2000 1 commit
  12. 04 Jan, 2000 1 commit
    • Gerd Moellmann's avatar
      (Fgarbage_collect): Return number of live and free · 2e471eb5
      Gerd Moellmann authored
      strings.
      
      (mark_buffer): Remove code in #if 0.
      (gc_sweep): Ditto.
      (UNMARK_BALANCE_INTERVALS): Give the macro statement form.
      (strings_consed): New variable.
      (allocate_string): Set it.
      (syms_of_alloc): Add DEFVAR_INT for strings_consed.
      (Fmemory_use_counts): Return strings_consed.  Use Flist.
      
      General cleanup in comments etc.  Remove conditional
      compilation for `standalone'.
      
      (MARK_STRING, UNMARK_STRING, STRING_MARKED_P):
      (GC_STRING_BYTES, GC_STRING_CHARS): New macros.
      (DONT_COPY_FLAG): Removed.
      (SBLOCK_SIZE, LARGE_STRING_BYTES): New macros.
      (struct sdata, struct sblock): New
      (struct string_block): Rewritten.
      (STRINGS_IN_STRING_BLOCK): New macro.
      (oldest_sblock, current_sblock, total_strings, total_free_strings)
      (large_sblocks, string_blocks, string_free_list): New variables.
      (NEXT_FREE_LISP_STRING, SDATA_OF_STRING, SDATA_SIZE): New macros.
      (init_strings): Rewritten.
      (allocate_string, allocate_string_data, compact_small_strings)
      (free_large_strings, sweep_strings): New functions.
      (STRING_BLOCK_SIZE, STRING_BLOCK_OUTSIZE)
      (struct string_block_head, current_string_block)
      (first_string_block, large_string_blocks, STRING_FULLSIZE)
      (STRING_PAD): Removed.
      (make_uninit_multibyte_string, make_pure_string): Rewritten.
      (Fgarbage_collect): Don't set mark bit in large strings.
      (mark_object): Mark strings differently.  Mark symbol names
      differently.
      (survives_gc_p): Test marked strings differently.
      (gc_sweep): Sweep strings differently, unmark strings in
      symbol names.
      (compact_strings): Removed.
      2e471eb5
  13. 28 Dec, 1999 1 commit
  14. 15 Dec, 1999 1 commit
  15. 07 Nov, 1999 2 commits
  16. 05 Nov, 1999 1 commit
  17. 25 Oct, 1999 1 commit
  18. 19 Oct, 1999 1 commit
    • Paul Eggert's avatar
      Add support for large files, 64-bit Solaris, system locale codings. · 68c45bf0
      Paul Eggert authored
      * Makefile.in (emacs): Set the LC_ALL environment variable to "C"
      when dumping, so that the dumped Emacs doesn't have stray locale info.
      (dired.o): Depend on systime.h.
      (editfns.o): Depend on coding.h.
      
      * alloc.c, buffer.c, callproc.c, ccl.c, charset.c, coding.c, data.c,
      dispnew.c, editfns.c, emacs.c, filelock.c, floatfns.c, hftctl.c,
      keyboard.c, process.c, sysdep.c, unexelf.c, unexhp9k800.c,
      unexsunos4.c, vmsfns.c, vmsgmalloc.c, w32faces.c, w32menu.c, w32term.c,
      w32xfns.c, xfaces.c, xfns.c, xmenu.c, xterm.c:
      Include <config.h> before any system include files.
      
      * alloc.c, buffer.c, ccl.c, data.c, editfns.c, emacs.c, eval.c,
      fileio.c, filelock.c, frame.c, insdel.c, keymap.c, lread.c,
      m/alpha.h, print.c, search.c, sysdep.c, xdisp.c, xfaces.c, xfns.c,
      xmenu.c, xterm.c:
      Do not include <stdlib.h>, as <config.h> does this now.
      
      * callproc.c (Fcall_process):
      Synchronize messages locale before invoking strerror.
      Decode resulting string with locale-coding-system.
      
      * coding.c (Vlocale_coding_system): New var.
      (syms_of_coding): Adjust to above change.
      (emacs_strerror): New function.
      
      * coding.h (emacs_strerror, Vlocale_coding_system): New decls.
      
      * config.in (HAVE_STDIO_EXT_H, HAVE_TM_GMTOFF, HAVE___FPENDING,
      HAVE_FTELLO, HAVE_GETLOADAVG, HAVE_MBLEN, HAVE_MBRLEN,
      HAVE_STRSIGNAL): New macros.
      (BITS_PER_LONG): Default to 64 if _LP64 is defined.
      <stdlib.h>: Include if HAVE_STDLIB_H is defined and NOT_C_CODE isn't.
      
      * dired.c: Include "systime.h".
      (Ffile_attributes): Do not cast s.st_size to int; this loses
      information if int is 32 bits but st_size and EMACS_INT are larger.
      Treat large device numbers like large inode numbers.
      
      * dispnew.c (PENDING_OUTPUT_COUNT): Use __fpending if available.
      
      * editfns.c: Include coding.h.
      (emacs_strftime): Remove decl.
      (emacs_strftimeu): New decl.
      (emacs_memftimeu): Renamed from emacs_memftime; new arg UT.
      Use emacs_strftimeu instead of emacs_strftime.
      (Fformat_time_string): Convert format string using
      Vlocale_coding_system, and convert result back.  Synchronize time
      locale before invoking lower level function.  Invoke
      emacs_memftimeu, passing ut, instead of emacs_memftime.
      
      * emacs.c: Include <locale.h> if HAVE_SETLOCALE is defined.
      (Vmessages_locale, Vprevious_messages_locale, Vtime_locale,
      Vprevious_time_locale): New variables.
      (main): Invoke setlocale early, so that initial error messages are
      localized properly.  But skip locale-setting if LC_ALL is "C".
      Fix up locale when it's safe to do so.
      (fixup_locale): Moved here from xterm.c.
      (synchronize_locale, synchronize_time_locale,
      synchronize_messages_locale): New functions.
      (syms_of_emacs): Accommodate above changes.
      
      * fileio.c (report_file_error): Convert strerror output according
      to Vlocale_coding_system.
      (Finsert_file_contents): Check for arithmetic overflow in
      computations that depend on file size.  Report IO errors
      with emacs_strerror, not strerror.
      
      * fns.c (Fgethash): Declare dflt parameter.
      
      * gmalloc.c: Do not define const to nothing if HAVE_CONFIG_H
      is defined; that's config.h's job.
      
      * lisp.h (EMACS_INT, BITS_PER_EMACS_INT, EMACS_UINT): If _LP64,
      default these values to long, BITS_PER_LONG, and unsigned long.
      (VALBITS, MARKBIT, XINT): Do not assume 32-bit EMACS_INT.
      (PNTR_COMPARISON_TYPE): Default to EMACS_UINT, not to unsigned int.
      (code_convert_string_norecord, fixup_locale,
      synchronize_messages_locale, synchronize_time_locale,
      emacs_open, emacs_close, emacs_read, emacs_write): New decls.
      All Emacs callers of open, close, read, write changed to use
      emacs_open, emacs_close, emacs_read, emacs_write.
      
      * lread.c (file_offset, file_tell): New macros.  All uses of ftell
      changed to file_tell.
      (saved_doc_string_position, prev_saved_doc_string_position): Now
      of type file_offset.
      (init_lread): Do not fix locale here; fixup_locale now does this.
      
      * m/amdahl.h, s/usg5-4.h:
      (NSIG): Remove.
      (NSIG_MINIMUM): New macro.
      
      * m/cydra5.h, m/dpx2.h, m/mips.h, m/pfa50.h, m/sps7.h, m/stride.h,
      m/ustation.h, s/gnu-linux.h, s/hpux.h, s/iris3-5.h, s/iris3-6.h,
      s/umips.h, s/usg5-4.h:
      (SIGIO): Do not undef.
      (BROKEN_SIGIO): New macro.
      
      * m/ustation.h:
      (SIGTSTP): Do not undef.
      (BROKEN_SIGTSTP): New macro.
      
      * s/gnu-linux.h:
      (SIGPOLL, SIGURG): Do not undef.
      (BROKEN_SIGPOLL, BROKEN_SIGURG): New macros.
      
      * s/ptx4.h:
      (SIGINFO): Do not undef.
      (BROKEN_SIGINFO): New macros.
      
      * m/delta.h, s/ptx.h, s/template.h: Doc fix.
      
      * mktime.c, strftime.c: Update to glibc 2.1.2 version, with
      some Emacs-related changes merged.
      
      * print.c (float_to_string): Prepend "-" to representation of a
      NaN if the NaN is negative.
      
      * process.c (sys_siglist): Omit if HAVE_STRSIGNAL.
      (wait_reading_process_input): Use emacs_strerror, not strerror.
      
      * process.c (status_message, sigchld_handler): Synchronize locale,
      then use strsignal istead of sys_siglist.
      * w32proc.c (sys_wait): Likewise.
      
      * s/aix3-1.h, s/bsd4-1.h, s/dgux.h, s/gnu-linux.h, s/hiuxmpp.h,
      s/hpux.h, s/iris3-5.h, s/iris3-6.h, s/irix3-3.h, s/osf1.h, s/rtu.h,
      s/sunos4-1.h, s/unipl5-0.h, s/unipl5-2.h, s/usg5-0.h, s/usg5-2-2.h,
      s/usg5-2.h, s/usg5-3.h, s/xenix.h:
      (open, close, read, write, INTERRUPTIBLE_OPEN,
      INTERRUPTIBLE_CLOSE, INTERRUPTIBLE_IO): Remove.
      
      * s/sol2-5.h (_LARGEFILE_SOURCE, _FILE_OFFSET_BITS): New macros.
      * sysdep.c (sys_read, sys_write, read, write, sys_close, close,
      sys_open, open): Remove.
      (emacs_open, emacs_close, emacs_read, emacs_write): Always define;
      the old INTERRUPTIBLE_OPEN, INTERRUPTIBLE_CLOSE, and INTERRUPTIBLE_IO
      macros are no longer used.
      (emacs_open): Renamed from sys_open.  Merge BSD4_1 version.
      (emacs_close): Renamed from sys_close.
      (emacs_read): Renamed from sys_read.
      (emacs_write): Renamed from sys_write.
      (sys_siglist): Do not declare if HAVE_STRSIGNAL.
      (dup2): Do not print error on failure; the real dup2 doesn't.
      (strsignal): New function, defined if !HAVE_STRSIGNAL.
      
      * syssignal.h (SIGINFO): Undef if defined and if BROKEN_SIGINFO
      is defined.
      (SIGIO, SIGPOLL, SIGTSTP, SIGURG): Likewise.
      (NSIG): If less than NSIG_MINIMUM, define to NSIG_MINIMUM.
      (strsignal): Declare if !HAVE_STRSIGNAL.
      
      * unexelf.c (ElfBitsW, ELFSIZE, ElfExpandBitsW): New macros.
      (ElfW): Define in terms of ElfExpandBitsW.
      
      * w32proc.c (sys_siglist): Remove decl.
      
      * xdisp.c (decode_mode_spec): 3rd arg is int, not char, to comply
      with ANSI C.
      (display_string): Declare face_string_pos arg.
      
      * xfns.c (Fx_show_tip): Declare timeout param.
      
      * xterm.c: No need to include locale.h.
      (x_alloc_lighter_color, x_setup_relief_color):
      Pass arg as double, not float, for compatibility with ANSI C.
      (fixup_locale): Move to emacs.c.
      (x_term_init): Do not setlocale or fixup locale; the main program
      does this now.
      68c45bf0
  19. 19 Sep, 1999 1 commit
  20. 12 Sep, 1999 1 commit
  21. 05 Sep, 1999 1 commit
  22. 30 Aug, 1999 1 commit
  23. 23 Aug, 1999 1 commit
  24. 21 Aug, 1999 1 commit
  25. 30 Jul, 1999 1 commit
  26. 21 Jul, 1999 1 commit
    • Gerd Moellmann's avatar
      (gc_sweep): Call sweep_weak_hash_tables. · 41c28a37
      Gerd Moellmann authored
      (survives_gc_p): New.
      (mark_object): Mark objects referenced from glyphs, hash tables,
      toolbar date, toolbar window, face caches, menu bar window.
      Mark windows specially.
      (Fgarbage_collect): Use message3_nolog.
      (mark_face_cache): New.
      (NSTATICS): Increased to 1024.
      (mark_glyph_matrix): New.
      41c28a37
  27. 02 Jan, 1999 1 commit
  28. 30 Dec, 1998 1 commit
    • Richard M. Stallman's avatar
      (lisp_malloc, lisp_free): New functions. · c8099634
      Richard M. Stallman authored
      Use them instead of malloc, xmalloc, and xfree, for Lisp objects.
      Don't set allocating_for_lisp in the callers; let lisp_malloc do it.
      (n_interval_blocks, n_float_blocks): New variable.
      (n_cons_blocks, n_vectors, n_symbol_blocks): New variable.
      (n_marker_blocks, n_string_blocks): New variable.
      (init_intervals, make_interval): Set a count variable.
      Use lisp_malloc instead of setting allocating_for_lisp.
      (init_float, make_float, init_cons, Fcons): Likewise.
      (allocate_vectorlike, init_symbol, Fmake_symbol): Likewise
      (init_marker, allocate_misc, init_strings): Likewise.
      (make_uninit_multibyte_string): Likewise.
      (gc_sweep, compact_strings): Decrement the count variables.
      
      (uninterrupt_malloc): Don't store Emacs's hooks
      into the old_..._hook variables.
      c8099634
  29. 22 Oct, 1998 1 commit
  30. 07 Jun, 1998 2 commits
  31. 24 May, 1998 1 commit
  32. 05 May, 1998 1 commit
  33. 20 Apr, 1998 1 commit
  34. 14 Apr, 1998 1 commit
  35. 06 Apr, 1998 1 commit
  36. 28 Mar, 1998 1 commit