more flexibility for opt_maxpage - gcl.git - GNU Common Lisp

index : gcl.git
GNU Common Lisp
summary refs log tree commit diff
diff options
context:
space:
mode:
authorCamm Maguire <camm@debian.org>2015年02月25日 11:59:13 -0500
committerCamm Maguire <camm@debian.org>2015年02月25日 11:59:13 -0500
commit8572dd54e4e2027b830cbe2f99925ba7e9a87347 (patch)
treeeb8faf42a815374d155f0497658fc9d2652bdbc9
parentdbce17edef318e3af2861ff9c932b309a58960fd (diff)
downloadgcl-scale_to_free_phys.tar.gz
more flexibility for opt_maxpagescale_to_free_phys
Diffstat
-rw-r--r--gcl/o/alloc.c 26
1 files changed, 22 insertions, 4 deletions
diff --git a/gcl/o/alloc.c b/gcl/o/alloc.c
index 70de57235..8f8be4305 100644
--- a/gcl/o/alloc.c
+++ b/gcl/o/alloc.c
@@ -425,12 +425,30 @@ rebalance_maxpages(struct typemanager *my_tm,fixnum z) {
if (j+d>phys_pages) {
+ ufixnum k=0;
+
for (i=t_start;i<t_other;i++)
- if (tm_table[i].tm_npage && tm_table[i].tm_npage>((double)phys_pages/(j+d))*(tm_table+i==my_tm ? z : tm_table[i].tm_maxpage))
- return 0;
+ if (tm_table+i!=my_tm)
+ k+=(tm_table[i].tm_maxpage-tm_table[i].tm_npage)*(i==t_relocatable ? 2 : 1);
+
+ if (k<(j+d-phys_pages))
+ return 0;
+
for (i=t_start;i<t_other;i++)
- if (tm_table[i].tm_npage)
- massert(set_tm_maxpage(tm_table+i,((double)phys_pages/(j+d))*(tm_table+i==my_tm ? z : tm_table[i].tm_maxpage)));
+ if (tm_table[i].tm_npage) {
+ if (tm_table+i==my_tm) {
+ massert(set_tm_maxpage(tm_table+i,z));
+ } else {
+ massert(set_tm_maxpage(tm_table+i,tm_table[i].tm_npage+(1.0-(double)(j+d-phys_pages)/k)*(tm_table[i].tm_maxpage-tm_table[i].tm_npage)));
+ }
+ }
+
+ /* for (i=t_start;i<t_other;i++) */
+ /* if (tm_table[i].tm_npage && tm_table[i].tm_npage>((double)phys_pages/(j+d))*(tm_table+i==my_tm ? z : tm_table[i].tm_maxpage)) */
+ /* return 0; */
+ /* for (i=t_start;i<t_other;i++) */
+ /* if (tm_table[i].tm_npage) */
+ /* massert(set_tm_maxpage(tm_table+i,((double)phys_pages/(j+d))*(tm_table+i==my_tm ? z : tm_table[i].tm_maxpage))); */
return 1;
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月01日 17:55:10 +0000

AltStyle によって変換されたページ (->オリジナル) /