use BDW-GC
authorRobin Templeton <robin@terpri.org>
Mon, 30 Jun 2014 07:25:39 +0000 (03:25 -0400)
committerRobin Templeton <robin@terpri.org>
Sat, 18 Apr 2015 22:49:06 +0000 (18:49 -0400)
commitb782773b44634aa94bdcdb356ffee9c434003ac9
treed1f98c0512e6e2932f30cdc8003d7faad9758052
parentc274e96987182042e6dce35e4404bb3eb792fff0
use BDW-GC

* alloc.c (xmalloc, xrealloc): Use BDW-GC allocation functions.
  (memory_full, refill_memory_reserve): Likewise.

  (xfree): Make this function a no-op.

  (Fgarbage_collect): Use `GC_gcollect'. Return true.

  (Fcons, Fmake_symbol, allocate_buffer, allocate_misc)
  (allocate_pseudovector, allocate_string, allocate_string_data)
  (allocate_vectorlike, make_float, make_interval): Simplify.

  (which_symbols): Return nil. Comment out original implementation.

  (ABLOCKS_BASE, ABLOCKS_BUSY, ABLOCKS_BYTES, ABLOCKS_SIZE)
  (ABLOCK_ABASE, ADVANCE, BLOCK_ALIGN, BLOCK_BYTES, BLOCK_PADDING)
  (COMMON_MULTIPLE, CONS_BLOCK, CONS_BLOCK_SIZE, CONS_INDEX, CONS_MARK)
  (CONS_MARKED_P, CONS_UNMARK, DEADP, FLOAT_BLOCK, FLOAT_BLOCK_SIZE)
  (FLOAT_INDEX, FLOAT_MARK, FLOAT_MARKED_P, FLOAT_UNMARK, Fgc_status)
  (Fmemory_limit, Fmemory_use_counts, GC_POINTER_ALIGNMENT)
  (GC_STRING_BYTES, GETMARKBIT, INTERVAL_BLOCK_SIZE, LARGE_STRING_BYTES)
  (LAST_MARKED_SIZE, MARKER_BLOCK_SIZE, MARK_INTERVAL_TREE, MARK_STRING)
  (MAX_SAVE_STACK, MAX_ZOMBIES, MEM_NIL, MEM_TYPE_BUFFER, MEM_TYPE_CONS)
  (MEM_TYPE_FLOAT, MEM_TYPE_MISC, MEM_TYPE_NON_LISP, MEM_TYPE_STRING)
  (MEM_TYPE_SYMBOL, MEM_TYPE_VECTORLIKE, MEM_TYPE_VECTOR_BLOCK)
  (MMAP_MAX_AREAS, NEXT_FREE_LISP_STRING)
  (POINTERS_MIGHT_HIDE_IN_OBJECTS, SBLOCK_SIZE, SDATA_DATA)
  (SDATA_DATA_OFFSET, SDATA_NBYTES, SDATA_OF_STRING, SDATA_SELECTOR)
  (SDATA_SIZE, SETJMP_WILL_LIKELY_WORK, SETJMP_WILL_NOT_WORK)
  (SETMARKBIT, SETUP_ON_FREE_LIST, STRING_BLOCK_SIZE, STRING_BYTES_MAX)
  (STRING_MARKED_P, SYMBOL_BLOCK_SIZE, UNMARK_BALANCE_INTERVALS)
  (UNMARK_STRING, UNSETMARKBIT, USE_POSIX_MEMALIGN, VBLOCK_BYTES_MAX)
  (VBLOCK_BYTES_MIN, VECTOR_BLOCK_BYTES, VECTOR_BLOCK_SIZE)
  (VECTOR_FREE_LIST_FLAG, VECTOR_IN_BLOCK, VECTOR_MARK, VECTOR_MARKED_P)
  (VECTOR_MAX_FREE_LIST_INDEX, VECTOR_SIZE, VECTOR_UNMARK, VINDEX)
  (Vdead, abort_on_gc, allocate_vector_block)
  (allocate_vector_from_block, allocated_mem_type, avg_live)
  (avg_zombies, check_gcpros, compact_small_strings, cons_block)
  (cons_block_index, cons_free_list, consing_since_gc, current_sblock)
  (dump_zombies, enum mem_type, float_block, float_block_index)
  (float_free_list, free_ablock, free_cons, free_large_strings)
  (free_marker, free_misc, gc_in_progress, gc_relative_threshold)
  (gc_sweep, ignore_warnings, inhibit_garbage_collection, init_cons)
  (init_float, init_intervals, init_marker, init_symbol, interval_block)
  (interval_block_index, interval_free_list, large_sblocks)
  (large_vectors, last_marked, last_marked_index, lisp_align_free)
  (lisp_align_malloc, lisp_free, lisp_malloc, lisp_malloc_loser)
  (live_buffer_p, live_cons_p, live_float_p, live_misc_p, live_string_p)
  (live_symbol_p, live_vector_p, longjmps_done, mark_buffer)
  (mark_char_table, mark_face_cache, mark_glyph_matrix, mark_interval)
  (mark_interval_tree, mark_maybe_object, mark_maybe_pointer)
  (mark_memory, mark_object, mark_object_loop_halt, mark_stack)
  (mark_terminals, mark_vectorlike, marker_block, marker_block_index)
  (marker_free_list, max_heap_address, max_live, max_zombies)
  (mem_delete, mem_delete_fixup, mem_find, mem_init, mem_insert)
  (mem_insert_fixup, mem_root, mem_rotate_left, mem_rotate_right, mem_z)
  (memory_full_cons_threshold, min_heap_address, ngcs, nzombies)
  (oldest_sblock, setjmp_tested_p, stack_base, stack_copy)
  (stack_copy_size, string_blocks, string_free_list, struct ablock)
  (struct ablocks, struct cons_block, struct float_block)
  (struct interval_block, struct marker_block, struct mem_node)
  (struct sblock, struct sdata, struct string_block)
  (struct symbol_block, struct vector_block, survives_gc_p)
  (sweep_strings, sweep_vectors, symbol_block, symbol_block_index)
  (symbol_free_list, test_setjmp, total_conses, total_floats)
  (total_free_conses, total_free_floats, total_free_intervals)
  (total_free_markers, total_free_strings, total_free_symbols)
  (total_intervals, total_markers, total_string_size, total_strings)
  (total_symbols, total_vector_size, union aligned_Lisp_Misc)
  (union aligned_Lisp_Symbol, vector_blocks, vector_free_lists)
  (vroundup, zombies): Remove. All references changed.

* bytecode.c (BYTE_MAINTAIN_TOP): Remove. All references changed.
  (mark_byte_stack, unmark_byte_stack): Remove.
  (MAYBE_GC): Make this a no-op.
  (byte_stack_list): Remove. All references changed.

* eval.c (eval_sub, Ffuncall): Remove calls to `Fgarbage_collect'.
  (mark_backtrace): Remove.

* fns.c (make_hash_table, copy_hash_table): Ignore hash table weakness.
  (weak_hash_tables, init_weak_hash_tables, sweep_weak_table)
  (sweep_weak_hash_tables): Remove.

* fringe.c (mark_fringe_data): Remove.

* gtkutil.c (xg_mark_data): Remove.

* image.c (mark_image, mark_image_cache): Remove.

* keyboard.c (read_char): Call `GC_collect_a_little' when idle.

  (mark_kboards): Remove.

* s/aix4-2.h (GC_MARK_STACK):
* s/gnu-linux.h (GC_SETJMP_WORKS, GC_MARK_SECONDARY_STACK)
  (GC_MARK_STACK):
* s/hpux10-20.h (GC_MARK_STACK):
* s/unixware.h (GC_MARK_STACK): Remove.

* sysdep.c (init_signals): Do not set a handler for SIGXCPU, since
  BDW-GC uses it internally.

* term.c (mark_ttys): Remove.

* alloc.c (Qautomatic_gc): Move declaration and DEFSYM call...
* profiler.c (Qautomatic_gc): ...here.
* lisp.h (Qautomatic_gc): Remove declaration.

Conflicts:
src/alloc.c
src/emacs.c
src/eval.c
src/fns.c
src/lisp.h
src/bytecode.c
src/eval.c
22 files changed:
src/alloc.c
src/bytecode.c
src/dispextern.h
src/editfns.c
src/emacs.c
src/eval.c
src/fns.c
src/fringe.c
src/gtkutil.c
src/image.c
src/insdel.c
src/keyboard.c
src/lisp.h
src/lread.c
src/print.c
src/profiler.c
src/sysdep.c
src/term.c
src/undo.c
src/window.h
src/xdisp.c
src/xmenu.c