You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by xl...@apache.org on 2008/10/30 09:45:19 UTC

svn commit: r709117 - /harmony/enhanced/drlvm/trunk/vm/gc_gen/src/common/large_pages.cpp

Author: xli
Date: Thu Oct 30 01:45:19 2008
New Revision: 709117

URL: http://svn.apache.org/viewvc?rev=709117&view=rev
Log:
HARMONY-5049 : a minor fix to prevent mem size calculation overflow

Modified:
    harmony/enhanced/drlvm/trunk/vm/gc_gen/src/common/large_pages.cpp

Modified: harmony/enhanced/drlvm/trunk/vm/gc_gen/src/common/large_pages.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/gc_gen/src/common/large_pages.cpp?rev=709117&r1=709116&r2=709117&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/gc_gen/src/common/large_pages.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/gc_gen/src/common/large_pages.cpp Thu Oct 30 01:45:19 2008
@@ -125,13 +125,14 @@
     LWARN(52, "GC large_page: Large pages are not supported by kernel.\nGC large_page: CONFIG_HUGETLB_PAGE and CONFIG_HUGETLBFS needs to be enabled.");
   } else if (proc_huge_pages_total == 0){
     LWARN(53, "GC large_page: No large pages reserved,  Use the following command: echo num> /proc/sys/vm/nr_hugepages.\nGC large_page: Do it just after kernel boot before huge pages become fragmented.");
-  } else if (proc_huge_pages_free * proc_huge_page_size < required_size) {
-    if (proc_huge_pages_total * proc_huge_page_size >= required_size) {
-      LWARN(54, "GC large_page: Not enough free large pages, some of reserved space is already busy.");
-    } else {
-      LWARN(54, "GC large_page: Not enough free large pages, some of reserved space is already busy.");
+  } else {
+    //compute required huge page number
+    size_t required = (required_size+proc_huge_page_size-1)/proc_huge_page_size;
+    if (proc_huge_pages_total < required) {
+      LWARN(54, "GC large_page: required size exceeds total large page size.");
+    } else if (proc_huge_pages_free < required) {
+      LWARN(55, "GC large_page: required size exceeds free large page size.");
     }
-    LWARN(55, "GC large_page: Large pages can be only allocated.");
   }
 }