1. 20 Nov, 2000 1 commit
  2. 23 Oct, 2000 1 commit
  3. 20 Oct, 2000 3 commits
  4. 18 Oct, 2000 1 commit
  5. 17 Oct, 2000 2 commits
  6. 10 Oct, 2000 1 commit
  7. 03 Oct, 2000 1 commit
  8. 26 Sep, 2000 1 commit
    • Gerd Moellmann's avatar
      (GC_CHECK_STRING_BYTES): Temporarily define, for bug · 31d929e5
      Gerd Moellmann authored
      hunting.
      (struct sdata) [GC_CHECK_STRING_BYTES]: Always record the string's
      size in the sdata structure.
      (SDATA_NBYTES, SDATA_DATA): New macros.
      (SDATA_OF_STRING, SDATA_SIZE) [GC_CHECK_STRING_BYTES]: Define
      differently for the different layout of the sdata structure.
      (allocate_string_data) [GC_CHECK_STRING_BYTES]: Record string size
      in sdata.
      (sweep_strings, compact_small_strings) [GC_CHECK_STRING_BYTES]:
      Check that size recorded in the string size and size recorded in
      the sdata structure agree.
      31d929e5
  9. 25 Sep, 2000 2 commits
  10. 21 Sep, 2000 1 commit
  11. 13 Sep, 2000 1 commit
  12. 22 Aug, 2000 1 commit
  13. 17 Aug, 2000 1 commit
  14. 15 Aug, 2000 1 commit
  15. 14 Aug, 2000 1 commit
  16. 02 Aug, 2000 1 commit
  17. 19 Jul, 2000 1 commit
  18. 18 Jul, 2000 1 commit
  19. 20 Jun, 2000 1 commit
  20. 19 Jun, 2000 1 commit
  21. 19 May, 2000 1 commit
  22. 02 Apr, 2000 1 commit
  23. 30 Mar, 2000 1 commit
  24. 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
  25. 28 Mar, 2000 1 commit
  26. 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
  27. 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
  28. 21 Mar, 2000 1 commit
  29. 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
  30. 17 Jan, 2000 1 commit
  31. 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
  32. 28 Dec, 1999 1 commit
  33. 15 Dec, 1999 1 commit
  34. 07 Nov, 1999 1 commit