Annotation of OpenXM_contrib2/asir2000/gc-7.0-risa.diff, Revision 1.1
1.1 ! ohara 1: %% $OpenXM$
! 2: %% This patch is based on gc6.5-risa.diff.
! 3: diff -urN gc-7.0.orig/alloc.c gc-7.0/alloc.c
! 4: --- gc-7.0.orig/alloc.c 2007-06-22 11:40:30.000000000 +0900
! 5: +++ gc-7.0/alloc.c 2007-11-09 17:29:38.000000000 +0900
! 6: @@ -100,6 +100,7 @@
! 7: GC_bool GC_dont_expand = 0;
! 8:
! 9: word GC_free_space_divisor = 3;
! 10: +word GC_free_space_numerator = 1;
! 11:
! 12: extern GC_bool GC_collection_in_progress();
! 13: /* Collection is in progress, or was abandoned. */
! 14: @@ -160,9 +161,9 @@
! 15: scan_size = 2 * GC_composite_in_use + GC_atomic_in_use
! 16: + total_root_size;
! 17: if (TRUE_INCREMENTAL) {
! 18: - return scan_size / (2 * GC_free_space_divisor);
! 19: + return scan_size * GC_free_space_numerator / (2 * GC_free_space_divisor);
! 20: } else {
! 21: - return scan_size / GC_free_space_divisor;
! 22: + return scan_size * GC_free_space_numerator / GC_free_space_divisor;
! 23: }
! 24: }
! 25:
! 26: @@ -451,6 +452,7 @@
! 27: # if defined(REGISTER_LIBRARIES_EARLY)
! 28: GC_cond_register_dynamic_libraries();
! 29: # endif
! 30: + GC_timerstart();
! 31: STOP_WORLD();
! 32: IF_THREADS(GC_world_stopped = TRUE);
! 33: if (GC_print_stats) {
! 34: @@ -479,6 +481,7 @@
! 35: GC_deficit = i; /* Give the mutator a chance. */
! 36: IF_THREADS(GC_world_stopped = FALSE);
! 37: START_WORLD();
! 38: + GC_timerstop();
! 39: return(FALSE);
! 40: }
! 41: if (GC_mark_some((ptr_t)(&dummy))) break;
! 42: @@ -503,6 +506,7 @@
! 43:
! 44: IF_THREADS(GC_world_stopped = FALSE);
! 45: START_WORLD();
! 46: + GC_timerstop();
! 47: if (GC_print_stats) {
! 48: GET_TIME(current_time);
! 49: GC_log_printf("World-stopped marking took %lu msecs\n",
! 50: @@ -603,6 +607,7 @@
! 51: /* FIXME: Add more checks. */
! 52: GC_check_tls();
! 53: # endif
! 54: + GC_timerstart();
! 55:
! 56: if (GC_print_stats)
! 57: GET_TIME(start_time);
! 58: @@ -722,6 +727,7 @@
! 59: MS_TIME_DIFF(finalize_time,start_time),
! 60: MS_TIME_DIFF(done_time,finalize_time));
! 61: }
! 62: + GC_timerstop();
! 63: }
! 64:
! 65: /* Externally callable routine to invoke full, stop-world collection */
! 66: @@ -908,6 +914,9 @@
! 67: if (GC_collect_at_heapsize < GC_heapsize /* wrapped */)
! 68: GC_collect_at_heapsize = (word)(-1);
! 69: # endif
! 70: +#if defined(VISUAL_LIB)
! 71: + SendHeapSize();
! 72: +#endif
! 73: return(TRUE);
! 74: }
! 75:
! 76: @@ -991,6 +1000,22 @@
! 77:
! 78: if (gran == 0) return(0);
! 79:
! 80: +#if defined(VISUAL)
! 81: + {
! 82: +#include <signal.h>
! 83: + extern int recv_intr;
! 84: + if ( recv_intr ) {
! 85: + if ( recv_intr == 1 ) {
! 86: + recv_intr = 0;
! 87: + int_handler();
! 88: + } else {
! 89: + recv_intr = 0;
! 90: + ox_usr1_handler(0);
! 91: + }
! 92: + }
! 93: + }
! 94: +#endif
! 95: +
! 96: while (*flh == 0) {
! 97: ENTER_GC();
! 98: /* Do our share of marking work */
! 99: diff -urN gc-7.0.orig/include/private/gc_priv.h gc-7.0/include/private/gc_priv.h
! 100: --- gc-7.0.orig/include/private/gc_priv.h 2007-06-24 11:01:15.000000000 +0900
! 101: +++ gc-7.0/include/private/gc_priv.h 2007-11-09 17:24:21.000000000 +0900
! 102: @@ -161,6 +161,10 @@
! 103: # define MAX_EXTRA_BYTES 0
! 104: #endif
! 105:
! 106: +/* Added by ohara */
! 107: +# ifndef LARGE_CONFIG
! 108: +# define LARGE_CONFIG
! 109: +# endif
! 110:
! 111: # ifndef LARGE_CONFIG
! 112: # define MINHINCR 16 /* Minimum heap increment, in blocks of HBLKSIZE */
! 113: diff -urN gc-7.0.orig/include/private/gcconfig.h gc-7.0/include/private/gcconfig.h
! 114: --- gc-7.0.orig/include/private/gcconfig.h 2007-06-29 09:00:09.000000000 +0900
! 115: +++ gc-7.0/include/private/gcconfig.h 2007-11-09 17:24:21.000000000 +0900
! 116: @@ -62,6 +62,13 @@
! 117: # endif
! 118:
! 119: /* Determine the machine type: */
! 120: +/* T.Saito */
! 121: +# if defined(FREEBSD) && defined(__amd64__)
! 122: +# define X86_64
! 123: +# define mach_type_known
! 124: +# endif
! 125: +
! 126: +/* Determine the machine type: */
! 127: # if defined(__arm__) || defined(__thumb__)
! 128: # define ARM32
! 129: # if !defined(LINUX) && !defined(NETBSD)
! 130: @@ -1975,6 +1982,28 @@
! 131: # endif
! 132: # define DATAEND /* not needed */
! 133: # endif
! 134: +# ifdef FREEBSD /* T.Saito */
! 135: +# define OS_TYPE "FREEBSD"
! 136: +# ifndef GC_FREEBSD_THREADS
! 137: +# define MPROTECT_VDB
! 138: +# endif
! 139: +# define SIG_SUSPEND SIGUSR1
! 140: +# define SIG_THR_RESTART SIGUSR2
! 141: +# define FREEBSD_STACKBOTTOM
! 142: +# ifdef __ELF__
! 143: +# define DYNAMIC_LOADING
! 144: +# endif
! 145: + extern int _etext[];
! 146: + extern char etext[];
! 147: + extern char edata[];
! 148: + extern char end[];
! 149: + extern char * GC_FreeBSDGetDataStart();
! 150: +# define DATASTART ((ptr_t)((((word) (_etext)) + 0xfff) & ~0xfff))
! 151: +# define NEED_FIND_LIMIT
! 152: +# define DATAEND (GC_find_limit (DATASTART, TRUE))
! 153: +# define DATASTART2 ((ptr_t)(&edata))
! 154: +# define DATAEND2 ((ptr_t)(&end))
! 155: +# endif /* end T.Saito */
! 156: # endif
! 157:
! 158: #if defined(LINUX) && defined(USE_MMAP)
! 159: diff -urN gc-7.0.orig/reclaim.c gc-7.0/reclaim.c
! 160: --- gc-7.0.orig/reclaim.c 2007-06-07 09:24:17.000000000 +0900
! 161: +++ gc-7.0/reclaim.c 2007-11-09 17:32:31.000000000 +0900
! 162: @@ -577,7 +577,7 @@
! 163:
! 164: if (GC_print_stats == VERBOSE)
! 165: GET_TIME(start_time);
! 166: -
! 167: + GC_timerstart();
! 168: for (kind = 0; kind < GC_n_kinds; kind++) {
! 169: ok = &(GC_obj_kinds[kind]);
! 170: rlp = ok -> ok_reclaim_list;
! 171: @@ -599,6 +599,7 @@
! 172: }
! 173: }
! 174: }
! 175: + GC_timerstop();
! 176: if (GC_print_stats == VERBOSE) {
! 177: GET_TIME(done_time);
! 178: GC_log_printf("Disposing of reclaim lists took %lu msecs\n",
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>