aboutsummaryrefslogtreecommitdiff
path: root/src/share/vm/utilities
diff options
context:
space:
mode:
authormikael <none@none>2013-04-04 10:01:26 -0700
committermikael <none@none>2013-04-04 10:01:26 -0700
commitd770545a3b447a123b69a3d41192da3f630176f7 (patch)
treecc0d7a36dfde17858f4b0a0e6317d5baf254c30a /src/share/vm/utilities
parentade51fe47d7768c33ca91ef4310e8cfa5924d384 (diff)
8003310: Enable -Wunused-function when compiling with gcc
Summary: Add the -Wunused-function flag and remove a number of unused functions. Reviewed-by: dholmes, coleenp, kvn
Diffstat (limited to 'src/share/vm/utilities')
-rw-r--r--src/share/vm/utilities/debug.cpp12
-rw-r--r--src/share/vm/utilities/globalDefinitions.cpp30
-rw-r--r--src/share/vm/utilities/globalDefinitions.hpp29
3 files changed, 59 insertions, 12 deletions
diff --git a/src/share/vm/utilities/debug.cpp b/src/share/vm/utilities/debug.cpp
index e74475fc3..5304cf087 100644
--- a/src/share/vm/utilities/debug.cpp
+++ b/src/share/vm/utilities/debug.cpp
@@ -608,18 +608,6 @@ extern "C" nmethod* findnm(intptr_t addr) {
return CodeCache::find_nmethod((address)addr);
}
-static address same_page(address x, address y) {
- intptr_t page_bits = -os::vm_page_size();
- if ((intptr_t(x) & page_bits) == (intptr_t(y) & page_bits)) {
- return x;
- } else if (x > y) {
- return (address)(intptr_t(y) | ~page_bits) + 1;
- } else {
- return (address)(intptr_t(y) & page_bits);
- }
-}
-
-
// Another interface that isn't ambiguous in dbx.
// Can we someday rename the other find to hsfind?
extern "C" void hsfind(intptr_t x) {
diff --git a/src/share/vm/utilities/globalDefinitions.cpp b/src/share/vm/utilities/globalDefinitions.cpp
index 778fd500e..24380adcb 100644
--- a/src/share/vm/utilities/globalDefinitions.cpp
+++ b/src/share/vm/utilities/globalDefinitions.cpp
@@ -355,3 +355,33 @@ size_t lcm(size_t a, size_t b) {
return size_t(result);
}
+
+#ifndef PRODUCT
+
+void GlobalDefinitions::test_globals() {
+ intptr_t page_sizes[] = { os::vm_page_size(), 4096, 8192, 65536, 2*1024*1024 };
+ const int num_page_sizes = sizeof(page_sizes) / sizeof(page_sizes[0]);
+
+ for (int i = 0; i < num_page_sizes; i++) {
+ intptr_t page_size = page_sizes[i];
+
+ address a_page = (address)(10*page_size);
+
+ // Check that address within page is returned as is
+ assert(clamp_address_in_page(a_page, a_page, page_size) == a_page, "incorrect");
+ assert(clamp_address_in_page(a_page + 128, a_page, page_size) == a_page + 128, "incorrect");
+ assert(clamp_address_in_page(a_page + page_size - 1, a_page, page_size) == a_page + page_size - 1, "incorrect");
+
+ // Check that address above page returns start of next page
+ assert(clamp_address_in_page(a_page + page_size, a_page, page_size) == a_page + page_size, "incorrect");
+ assert(clamp_address_in_page(a_page + page_size + 1, a_page, page_size) == a_page + page_size, "incorrect");
+ assert(clamp_address_in_page(a_page + page_size*5 + 1, a_page, page_size) == a_page + page_size, "incorrect");
+
+ // Check that address below page returns start of page
+ assert(clamp_address_in_page(a_page - 1, a_page, page_size) == a_page, "incorrect");
+ assert(clamp_address_in_page(a_page - 2*page_size - 1, a_page, page_size) == a_page, "incorrect");
+ assert(clamp_address_in_page(a_page - 5*page_size - 1, a_page, page_size) == a_page, "incorrect");
+ }
+}
+
+#endif // PRODUCT
diff --git a/src/share/vm/utilities/globalDefinitions.hpp b/src/share/vm/utilities/globalDefinitions.hpp
index 5c10cf018..3bf22d422 100644
--- a/src/share/vm/utilities/globalDefinitions.hpp
+++ b/src/share/vm/utilities/globalDefinitions.hpp
@@ -419,6 +419,24 @@ inline intptr_t align_object_offset(intptr_t offset) {
return align_size_up(offset, HeapWordsPerLong);
}
+// Clamp an address to be within a specific page
+// 1. If addr is on the page it is returned as is
+// 2. If addr is above the page_address the start of the *next* page will be returned
+// 3. Otherwise, if addr is below the page_address the start of the page will be returned
+inline address clamp_address_in_page(address addr, address page_address, intptr_t page_size) {
+ if (align_size_down(intptr_t(addr), page_size) == align_size_down(intptr_t(page_address), page_size)) {
+ // address is in the specified page, just return it as is
+ return addr;
+ } else if (addr > page_address) {
+ // address is above specified page, return start of next page
+ return (address)align_size_down(intptr_t(page_address), page_size) + page_size;
+ } else {
+ // address is below specified page, return start of page
+ return (address)align_size_down(intptr_t(page_address), page_size);
+ }
+}
+
+
// The expected size in bytes of a cache line, used to pad data structures.
#define DEFAULT_CACHE_LINE_SIZE 64
@@ -1296,4 +1314,15 @@ static inline void* dereference_vptr(void* addr) {
return *(void**)addr;
}
+
+#ifndef PRODUCT
+
+// For unit testing only
+class GlobalDefinitions {
+public:
+ static void test_globals();
+};
+
+#endif // PRODUCT
+
#endif // SHARE_VM_UTILITIES_GLOBALDEFINITIONS_HPP