HARMONY-5049 : a minor fix to prevent mem size calculation overflow

git-svn-id: https://svn.apache.org/repos/asf/harmony/enhanced/drlvm/trunk@709117 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/vm/gc_gen/src/common/large_pages.cpp b/vm/gc_gen/src/common/large_pages.cpp
index caa79b7..1f8130d 100644
--- a/vm/gc_gen/src/common/large_pages.cpp
+++ b/vm/gc_gen/src/common/large_pages.cpp
@@ -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.");
   }
 }