From 63d7394d4a4eac87255d36766fdca4a6930a17a0 Mon Sep 17 00:00:00 2001 From: never Date: Wed, 27 Jul 2011 15:06:35 -0700 Subject: [PATCH] 7071427: AdapterFingerPrint can hold 8 entries per int Reviewed-by: kvn --- src/share/vm/runtime/java.cpp | 3 ++- src/share/vm/runtime/sharedRuntime.cpp | 11 ++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/share/vm/runtime/java.cpp b/src/share/vm/runtime/java.cpp index 73065fe42..fa7c647af 100644 --- a/src/share/vm/runtime/java.cpp +++ b/src/share/vm/runtime/java.cpp @@ -243,6 +243,7 @@ void print_statistics() { FlagSetting fs(DisplayVMOutput, DisplayVMOutput && PrintC1Statistics); Runtime1::print_statistics(); Deoptimization::print_statistics(); + SharedRuntime::print_statistics(); nmethod::print_statistics(); } #endif /* COMPILER1 */ @@ -254,8 +255,8 @@ void print_statistics() { #ifndef COMPILER1 Deoptimization::print_statistics(); nmethod::print_statistics(); -#endif //COMPILER1 SharedRuntime::print_statistics(); +#endif //COMPILER1 os::print_statistics(); } diff --git a/src/share/vm/runtime/sharedRuntime.cpp b/src/share/vm/runtime/sharedRuntime.cpp index fb0874532..34369e82d 100644 --- a/src/share/vm/runtime/sharedRuntime.cpp +++ b/src/share/vm/runtime/sharedRuntime.cpp @@ -2130,9 +2130,9 @@ class AdapterFingerPrint : public CHeapObj { public: AdapterFingerPrint(int total_args_passed, BasicType* sig_bt) { // The fingerprint is based on the BasicType signature encoded - // into an array of ints with four entries per int. + // into an array of ints with eight entries per int. int* ptr; - int len = (total_args_passed + 3) >> 2; + int len = (total_args_passed + 7) >> 3; if (len <= (int)(sizeof(_value._compact) / sizeof(int))) { _value._compact[0] = _value._compact[1] = _value._compact[2] = 0; // Storing the signature encoded as signed chars hits about 98% @@ -2145,11 +2145,11 @@ class AdapterFingerPrint : public CHeapObj { ptr = _value._fingerprint; } - // Now pack the BasicTypes with 4 per int + // Now pack the BasicTypes with 8 per int int sig_index = 0; for (int index = 0; index < len; index++) { int value = 0; - for (int byte = 0; byte < 4; byte++) { + for (int byte = 0; byte < 8; byte++) { if (sig_index < total_args_passed) { value = (value << 4) | adapter_encoding(sig_bt[sig_index++]); } @@ -2190,8 +2190,9 @@ class AdapterFingerPrint : public CHeapObj { const char* as_string() { stringStream st; + st.print("0x"); for (int i = 0; i < length(); i++) { - st.print(PTR_FORMAT, value(i)); + st.print("%08x", value(i)); } return st.as_string(); } -- GitLab