Revision: 6870
Author: [email protected]
Date: Mon Feb 21 08:11:46 2011
Log: Heap::gc_count_, last_gc_count, and kGCsBetweenCleanup should be
unsigned
in order to not be vulnerable to overflow issues.
Patch by Mark Lam of Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/5966001
http://code.google.com/p/v8/source/detail?r=6870
Modified:
/branches/bleeding_edge/src/heap.cc
/branches/bleeding_edge/src/heap.h
=======================================
--- /branches/bleeding_edge/src/heap.cc Fri Feb 18 02:53:38 2011
+++ /branches/bleeding_edge/src/heap.cc Mon Feb 21 08:11:46 2011
@@ -134,7 +134,7 @@
int Heap::mc_count_ = 0;
int Heap::ms_count_ = 0;
-int Heap::gc_count_ = 0;
+unsigned int Heap::gc_count_ = 0;
GCTracer* Heap::tracer_ = NULL;
@@ -3796,9 +3796,9 @@
static const int kIdlesBeforeMarkSweep = 7;
static const int kIdlesBeforeMarkCompact = 8;
static const int kMaxIdleCount = kIdlesBeforeMarkCompact + 1;
- static const int kGCsBetweenCleanup = 4;
+ static const unsigned int kGCsBetweenCleanup = 4;
static int number_idle_notifications = 0;
- static int last_gc_count = gc_count_;
+ static unsigned int last_gc_count = gc_count_;
bool uncommit = true;
bool finished = false;
@@ -3807,7 +3807,7 @@
// GCs have taken place. This allows another round of cleanup based
// on idle notifications if enough work has been carried out to
// provoke a number of garbage collections.
- if (gc_count_ < last_gc_count + kGCsBetweenCleanup) {
+ if (gc_count_ - last_gc_count < kGCsBetweenCleanup) {
number_idle_notifications =
Min(number_idle_notifications + 1, kMaxIdleCount);
} else {
=======================================
--- /branches/bleeding_edge/src/heap.h Mon Feb 14 13:21:33 2011
+++ /branches/bleeding_edge/src/heap.h Mon Feb 21 08:11:46 2011
@@ -1180,7 +1180,7 @@
static int mc_count_; // how many mark-compact collections happened
static int ms_count_; // how many mark-sweep collections happened
- static int gc_count_; // how many gc happened
+ static unsigned int gc_count_; // how many gc happened
// Total length of the strings we failed to flatten since the last GC.
static int unflattened_strings_length_;
@@ -1907,7 +1907,7 @@
void set_collector(GarbageCollector collector) { collector_ = collector;
}
// Sets the GC count.
- void set_gc_count(int count) { gc_count_ = count; }
+ void set_gc_count(unsigned int count) { gc_count_ = count; }
// Sets the full GC count.
void set_full_gc_count(int count) { full_gc_count_ = count; }
@@ -1950,7 +1950,7 @@
// A count (including this one, eg, the first collection is 1) of the
// number of garbage collections.
- int gc_count_;
+ unsigned int gc_count_;
// A count (including this one) of the number of full garbage
collections.
int full_gc_count_;
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev