|
|
385abae |
Description: <short summary of the patch>
|
|
|
385abae |
TODO: Put a short summary on the line above and replace this paragraph
|
|
|
385abae |
with a longer explanation of this change. Complete the meta-information
|
|
|
385abae |
with other relevant fields (see below for details). To make it easier, the
|
|
|
385abae |
information below has been extracted from the changelog. Adjust it or drop
|
|
|
385abae |
it.
|
|
|
385abae |
.
|
|
|
385abae |
gcl (2.6.12-12) unstable; urgency=medium
|
|
|
385abae |
.
|
|
|
385abae |
* Version_2_6_13pre13
|
|
|
385abae |
Author: Camm Maguire <camm@debian.org>
|
|
|
385abae |
|
|
|
385abae |
---
|
|
|
385abae |
The information above should follow the Patch Tagging Guidelines, please
|
|
|
385abae |
checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
|
|
|
385abae |
are templates for supplementary fields that you might want to add:
|
|
|
385abae |
|
|
|
385abae |
Origin: <vendor|upstream|other>, <url of original patch>
|
|
|
385abae |
Bug: <url in upstream bugtracker>
|
|
|
385abae |
Bug-Debian: https://bugs.debian.org/<bugnumber>
|
|
|
385abae |
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
|
|
|
385abae |
Forwarded: <no|not-needed|url proving that it has been forwarded>
|
|
|
385abae |
Reviewed-By: <name and email of someone who approved the patch>
|
|
|
385abae |
Last-Update: <YYYY-MM-DD>
|
|
|
385abae |
|
|
|
385abae |
--- gcl-2.6.12.orig/h/protoize.h
|
|
|
385abae |
+++ gcl-2.6.12/h/protoize.h
|
|
|
385abae |
@@ -1918,7 +1918,7 @@ void
|
|
|
385abae |
allocate_code_block_reserve(void);
|
|
|
385abae |
|
|
|
385abae |
void *
|
|
|
385abae |
-alloc_contblock_no_gc(size_t);
|
|
|
385abae |
+alloc_contblock_no_gc(size_t,char *);
|
|
|
385abae |
|
|
|
385abae |
void
|
|
|
385abae |
reset_contblock_freelist(void);
|
|
|
385abae |
--- gcl-2.6.12.orig/o/alloc.c
|
|
|
385abae |
+++ gcl-2.6.12/o/alloc.c
|
|
|
385abae |
@@ -1047,7 +1047,7 @@ alloc_contblock(size_t n) {
|
|
|
385abae |
}
|
|
|
385abae |
|
|
|
385abae |
void *
|
|
|
385abae |
-alloc_contblock_no_gc(size_t n) {
|
|
|
385abae |
+alloc_contblock_no_gc(size_t n,char *limit) {
|
|
|
385abae |
|
|
|
385abae |
struct typemanager *tm=tm_of(t_contiguous);
|
|
|
385abae |
void *p;
|
|
|
385abae |
@@ -1057,7 +1057,7 @@ alloc_contblock_no_gc(size_t n) {
|
|
|
385abae |
if ((p=alloc_from_freelist(tm,n)))
|
|
|
385abae |
return p;
|
|
|
385abae |
|
|
|
385abae |
- if (tpage(tm,n)<(rb_start-heap_end)>>PAGEWIDTH && (p=alloc_after_adding_pages(tm,n)))
|
|
|
385abae |
+ if (tpage(tm,n)<(limit-heap_end)>>PAGEWIDTH && (p=alloc_after_adding_pages(tm,n)))
|
|
|
385abae |
return p;
|
|
|
385abae |
|
|
|
385abae |
return NULL;
|
|
|
385abae |
--- gcl-2.6.12.orig/o/gbc.c
|
|
|
385abae |
+++ gcl-2.6.12/o/gbc.c
|
|
|
385abae |
@@ -431,29 +431,21 @@ collecting(void *p) {
|
|
|
385abae |
|
|
|
385abae |
static ufixnum ngc_thresh;
|
|
|
385abae |
static union {struct dummy d;ufixnum f;} rst={.f=-1};
|
|
|
385abae |
-/* static object lcv=Cnil; */
|
|
|
385abae |
+static void *static_promotion_limit;
|
|
|
385abae |
|
|
|
385abae |
static inline void
|
|
|
385abae |
mark_leaf_data(object x,void **pp,ufixnum s,ufixnum r) {
|
|
|
385abae |
|
|
|
385abae |
- void *p=*pp,*dp/* ,*dpe */;
|
|
|
385abae |
+ void *p=*pp,*dp;
|
|
|
385abae |
|
|
|
385abae |
if (!marking(p)||!collecting(p))
|
|
|
385abae |
return;
|
|
|
385abae |
|
|
|
385abae |
- /* if (lcv!=Cnil && !collecting(lcv->st.st_self) && */
|
|
|
385abae |
- /* (dp=PCEI(lcv->st.st_self,r)) && dp+s<=(dpe=lcv->st.st_self+lcv->st.st_dim) */
|
|
|
385abae |
- /* && x && x->d.st>=ngc_thresh) { */
|
|
|
385abae |
-
|
|
|
385abae |
if (what_to_collect!=t_contiguous &&
|
|
|
385abae |
x && x->d.st>=ngc_thresh &&
|
|
|
385abae |
- (dp=alloc_contblock_no_gc(s))) {
|
|
|
385abae |
+ (dp=alloc_contblock_no_gc(s,static_promotion_limit))) {
|
|
|
385abae |
|
|
|
385abae |
- /* fprintf(stderr,"Promoting %p,%lu to %p\n",p,s,dp); */
|
|
|
385abae |
- /* fflush(stderr); */
|
|
|
385abae |
-
|
|
|
385abae |
*pp=memcpy(dp,p,s);
|
|
|
385abae |
- /* lcv->st.st_fillp=lcv->st.st_dim=(dpe-(void *)(lcv->st.st_self=dp+s)); */
|
|
|
385abae |
x->d.st=0;
|
|
|
385abae |
|
|
|
385abae |
return;
|
|
|
385abae |
@@ -1204,8 +1196,10 @@ GBC(enum type t) {
|
|
|
385abae |
|
|
|
385abae |
if (gc_time >=0 && !gc_recursive++) {gc_start=runtime();}
|
|
|
385abae |
|
|
|
385abae |
- if (COLLECT_RELBLOCK_P)
|
|
|
385abae |
+ if (COLLECT_RELBLOCK_P) {
|
|
|
385abae |
+ static_promotion_limit=rb_start
|
|
|
385abae |
setup_rb();
|
|
|
385abae |
+ }
|
|
|
385abae |
|
|
|
385abae |
#ifdef DEBUG
|
|
|
385abae |
if (debug) {
|