/[gcl]/gcl/o/gbc.c
ViewVC logotype

Diff of /gcl/o/gbc.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.13.4.2.2.1 by camm, Thu Sep 4 02:17:56 2003 UTC revision 1.13.4.2.2.2 by camm, Fri Sep 5 21:31:43 2003 UTC
# Line 107  static int gc_time = -1; Line 107  static int gc_time = -1;
107  static int gc_start = 0;  static int gc_start = 0;
108  static int gc_recursive = 0;  static int gc_recursive = 0;
109  int runtime(void);  int runtime(void);
110    #ifdef SGC
111  int sgc_enabled=0;  int sgc_enabled=0;
112    #endif
113  int  first_protectable_page =0;  int  first_protectable_page =0;
114    
115    
# Line 1061  GBC(enum type t) { Line 1063  GBC(enum type t) {
1063    
1064    int i, j;    int i, j;
1065    struct apage *pp, *qq;    struct apage *pp, *qq;
1066    #ifdef SGC
1067    int in_sgc = sgc_enabled;    int in_sgc = sgc_enabled;
1068    #endif
1069  #ifdef DEBUG  #ifdef DEBUG
1070    int tm=0;    int tm=0;
1071  #endif  #endif
# Line 1078  GBC(enum type t) { Line 1082  GBC(enum type t) {
1082        
1083    if (saving_system)    if (saving_system)
1084      {t = t_contiguous; gc_time = -1;      {t = t_contiguous; gc_time = -1;
1085    #ifdef SGC
1086      if(sgc_enabled) sgc_quit();      if(sgc_enabled) sgc_quit();
1087        #endif    
1088      }      }
1089    
1090    
# Line 1095  GBC(enum type t) { Line 1100  GBC(enum type t) {
1100    if (debug || (sSAnotify_gbcA->s.s_dbind != Cnil)) {    if (debug || (sSAnotify_gbcA->s.s_dbind != Cnil)) {
1101            
1102      if (gc_time < 0) gc_time=0;      if (gc_time < 0) gc_time=0;
1103    #ifdef SGC
1104      printf("[%s for %d %s pages..",      printf("[%s for %d %s pages..",
1105             (sgc_enabled ? "SGC" : "GC"),             (sgc_enabled ? "SGC" : "GC"),
1106             (sgc_enabled ? sgc_count_type(t) : tm_of(t)->tm_npage),             (sgc_enabled ? sgc_count_type(t) : tm_of(t)->tm_npage),
1107             (tm_table[(int)t].tm_name)+1);             (tm_table[(int)t].tm_name)+1);
1108    #else
1109        printf("[%s for %d %s pages..",
1110               ("GC"),
1111               (tm_of(t)->tm_npage),
1112               (tm_table[(int)t].tm_name)+1);
1113    #endif
1114  #ifdef SGC  #ifdef SGC
1115      if(sgc_enabled)      if(sgc_enabled)
1116        printf("(%d writable)..",sgc_count_writable(page(core_end)));        printf("(%d writable)..",sgc_count_writable(page(core_end)));
# Line 1123  GBC(enum type t) { Line 1135  GBC(enum type t) {
1135        j = 0;        j = 0;
1136      /* if in sgc we don't need more pages below hole      /* if in sgc we don't need more pages below hole
1137         just more relocatable or cleaning it */         just more relocatable or cleaning it */
1138      if (sgc_enabled ==0 && holepage < new_holepage)  #ifdef SGC
1139        holepage = new_holepage;      if (sgc_enabled==0)
1140    #endif
1141          if (holepage < new_holepage)
1142            holepage = new_holepage;
1143            
1144    #ifdef SGC
1145      i = rb_pointer - (sgc_enabled ? old_rb_start : rb_start);      i = rb_pointer - (sgc_enabled ? old_rb_start : rb_start);
1146        #else
1147        i = rb_pointer - rb_start;
1148    #endif    
1149    
1150      if (nrbpage > (real_maxpage-page(heap_end)      if (nrbpage > (real_maxpage-page(heap_end)
1151                     -holepage-real_maxpage/32)/2) {                     -holepage-real_maxpage/32)/2) {
1152        if (i > nrbpage*PAGESIZE)        if (i > nrbpage*PAGESIZE)
# Line 1141  GBC(enum type t) { Line 1160  GBC(enum type t) {
1160      if (saving_system)      if (saving_system)
1161        rb_start = heap_end;        rb_start = heap_end;
1162      else      else
1163    #ifdef SGC
1164        if (sgc_enabled==0)        if (sgc_enabled==0)
1165    #endif
1166          {rb_start = heap_end + PAGESIZE*holepage;}          {rb_start = heap_end + PAGESIZE*holepage;}
1167            
1168      rb_end = heap_end + (holepage + nrbpage) *PAGESIZE;      rb_end = heap_end + (holepage + nrbpage) *PAGESIZE;
# Line 1292  GBC(enum type t) { Line 1313  GBC(enum type t) {
1313        
1314    interrupt_enable = TRUE;    interrupt_enable = TRUE;
1315        
1316    #ifdef SGC
1317    if (in_sgc && sgc_enabled==0)    if (in_sgc && sgc_enabled==0)
1318      sgc_start();      sgc_start();
1319    #endif
1320        
1321    if (saving_system) {    if (saving_system) {
1322      j = (rb_pointer-rb_start+PAGESIZE-1) / PAGESIZE;      j = (rb_pointer-rb_start+PAGESIZE-1) / PAGESIZE;
# Line 1325  GBC(enum type t) { Line 1348  GBC(enum type t) {
1348      ncb = 0;      ncb = 0;
1349            
1350      /* hmm.... why is this test necessary.*/      /* hmm.... why is this test necessary.*/
1351      if (sgc_enabled==0) {holepage = new_holepage;  #ifdef SGC
1352      nrbpage = INIT_NRBPAGE;}      if (sgc_enabled==0)
1353    #endif
1354          {holepage = new_holepage;
1355          nrbpage = INIT_NRBPAGE;}
1356            
1357      if (nrbpage < 0)      if (nrbpage < 0)
1358        error("no relocatable pages left");        error("no relocatable pages left");

Legend:
Removed from v.1.13.4.2.2.1  
changed lines
  Added in v.1.13.4.2.2.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26