summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES2
-rw-r--r--emu/port/dis.c3
-rw-r--r--include/version.h2
-rw-r--r--os/port/dis.c3
4 files changed, 7 insertions, 3 deletions
diff --git a/CHANGES b/CHANGES
index d6653e2b..3e737607 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,5 @@
+20091213
+ temper the tendancy of port/dis.c to yield during idle gc: it's compensating for os scheduling, but yield less often
20091208
add mkdir -p to makemk.sh to ensure output directories exist [issue 213]
20091127
diff --git a/emu/port/dis.c b/emu/port/dis.c
index 7f8db7b2..881bd81f 100644
--- a/emu/port/dis.c
+++ b/emu/port/dis.c
@@ -104,7 +104,8 @@ execatidle(void)
}
rungc(isched.head);
gcidlepass++;
- osyield();
+ if(((ulong)gcidlepass&0xFF) == 0)
+ osyield();
}
up->type = Interp;
delrunq(up->prog);
diff --git a/include/version.h b/include/version.h
index 9f1e021d..7579ef5a 100644
--- a/include/version.h
+++ b/include/version.h
@@ -1 +1 @@
-#define VERSION "Fourth Edition (20091208)"
+#define VERSION "Fourth Edition (20091213)"
diff --git a/os/port/dis.c b/os/port/dis.c
index 8859a1b9..0eb2d190 100644
--- a/os/port/dis.c
+++ b/os/port/dis.c
@@ -119,7 +119,8 @@ execatidle(void)
}
rungc(isched.head);
gcidlepass++;
- sched();
+ if(((ulong)gcidlepass&0xFF) == 0)
+ sched();
}
up->type = Interp;