changeset 13164:70e6bb85d802

cleaned up HotSpotMethodData tracing a little and enabled it when -Dgraal.traceMethodDataFilter=true
author Doug Simon <doug.simon@oracle.com>
date Mon, 25 Nov 2013 23:49:49 +0100
parents 1baa169508f5
children 0097301f34fa
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodData.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java
diffstat 2 files changed, 25 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodData.java	Mon Nov 25 18:42:51 2013 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodData.java	Mon Nov 25 23:49:49 2013 +0100
@@ -214,7 +214,7 @@
     private abstract static class AbstractMethodData implements HotSpotMethodDataAccessor {
 
         /**
-         * Corresponds to DS_RECOMPILE_BIT defined in deoptimization.cpp.
+         * Corresponds to {@code exception_seen_flag}.
          */
         private static final int EXCEPTIONS_MASK = 0x2;
 
@@ -287,17 +287,7 @@
             return 0;
         }
 
-        public StringBuilder appendFlagsTo(StringBuilder sb, HotSpotMethodData data, int pos) {
-            int flags = getFlags(data, pos);
-            if (flags != 0) {
-                sb.append(format("flags(0x%02x)", flags));
-            }
-            return sb;
-        }
-
-        public StringBuilder appendTo(StringBuilder sb, HotSpotMethodData data, int pos) {
-            return appendFlagsTo(sb, data, pos);
-        }
+        public abstract StringBuilder appendTo(StringBuilder sb, HotSpotMethodData data, int pos);
     }
 
     private static class NoMethodData extends AbstractMethodData {
@@ -321,6 +311,11 @@
         public TriState getExceptionSeen(HotSpotMethodData data, int position) {
             return exceptionSeen;
         }
+
+        @Override
+        public StringBuilder appendTo(StringBuilder sb, HotSpotMethodData data, int pos) {
+            return sb;
+        }
     }
 
     private static class BitData extends AbstractMethodData {
@@ -341,6 +336,11 @@
         public TriState getNullSeen(HotSpotMethodData data, int position) {
             return TriState.get((getFlags(data, position) & BIT_DATA_NULL_SEEN_FLAG) != 0);
         }
+
+        @Override
+        public StringBuilder appendTo(StringBuilder sb, HotSpotMethodData data, int pos) {
+            return sb.append(format("exception_seen(%s)", getExceptionSeen(data, pos)));
+        }
     }
 
     private static class CounterData extends BitData {
@@ -368,7 +368,7 @@
 
         @Override
         public StringBuilder appendTo(StringBuilder sb, HotSpotMethodData data, int pos) {
-            return appendFlagsTo(sb, data, pos).append(format("count(%d)", getCounterValue(data, pos)));
+            return sb.append(format("count(%d)", getCounterValue(data, pos)));
         }
     }
 
@@ -403,7 +403,7 @@
 
         @Override
         public StringBuilder appendTo(StringBuilder sb, HotSpotMethodData data, int pos) {
-            return appendFlagsTo(sb, data, pos).append(format("taken(%d) displacement(%d)", getExecutionCount(data, pos), getTakenDisplacement(data, pos)));
+            return sb.append(format("taken(%d) displacement(%d)", getExecutionCount(data, pos), getTakenDisplacement(data, pos)));
         }
     }
 
@@ -494,9 +494,9 @@
 
         @Override
         public StringBuilder appendTo(StringBuilder sb, HotSpotMethodData data, int pos) {
-            super.appendTo(sb, data, pos);
             RawItemProfile<ResolvedJavaType> profile = getRawTypeProfile(data, pos);
-            sb.append(format("nonprofiled_count(%d) entries(%d)", getTypesNotRecordedExecutionCount(data, pos), profile.entries));
+            TriState nullSeen = getNullSeen(data, pos);
+            sb.append(format("count(%d) null_seen(%s) nonprofiled_count(%d) entries(%d)", getCounterValue(data, pos), nullSeen, getTypesNotRecordedExecutionCount(data, pos), profile.entries));
             for (int i = 0; i < profile.entries; i++) {
                 long count = profile.counts[i];
                 sb.append(format("%n  %s (%d, %4.2f)", MetaUtil.toJavaName(profile.items[i]), count, (double) count / profile.totalCount));
@@ -619,7 +619,7 @@
         @Override
         public StringBuilder appendTo(StringBuilder sb, HotSpotMethodData data, int pos) {
             RawItemProfile<ResolvedJavaMethod> profile = getRawMethodProfile(data, pos);
-            super.appendTo(sb, data, pos).append(format("%nmethod_entries(%d)", profile.entries));
+            super.appendTo(sb.append(format("exception_seen(%s) ", getExceptionSeen(data, pos))), data, pos).append(format("%nmethod_entries(%d)", profile.entries));
             for (int i = 0; i < profile.entries; i++) {
                 long count = profile.counts[i];
                 sb.append(format("%n  %s (%d, %4.2f)", MetaUtil.format("%H.%n(%p)", profile.items[i]), count, (double) count / profile.totalCount));
@@ -669,8 +669,7 @@
             long taken = data.readUnsignedInt(pos, TAKEN_COUNT_OFFSET);
             long notTaken = data.readUnsignedInt(pos, NOT_TAKEN_COUNT_OFFSET);
             double takenProbability = getBranchTakenProbability(data, pos);
-            return appendFlagsTo(sb, data, pos).append(
-                            format("taken(%d, %4.2f) not_taken(%d, %4.2f) displacement(%d)", taken, takenProbability, notTaken, 1.0D - takenProbability, getTakenDisplacement(data, pos)));
+            return sb.append(format("taken(%d, %4.2f) not_taken(%d, %4.2f) displacement(%d)", taken, takenProbability, notTaken, 1.0D - takenProbability, getTakenDisplacement(data, pos)));
         }
     }
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java	Mon Nov 25 18:42:51 2013 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java	Mon Nov 25 23:49:49 2013 +0100
@@ -34,6 +34,7 @@
 import com.oracle.graal.api.code.*;
 import com.oracle.graal.api.meta.*;
 import com.oracle.graal.api.meta.ProfilingInfo.TriState;
+import com.oracle.graal.debug.*;
 import com.oracle.graal.graph.*;
 import com.oracle.graal.hotspot.*;
 import com.oracle.graal.hotspot.debug.*;
@@ -282,6 +283,8 @@
         return getCompiledCodeSize() > 0;
     }
 
+    private static final String TraceMethodDataFilter = System.getProperty("graal.traceMethodDataFilter");
+
     @Override
     public ProfilingInfo getProfilingInfo() {
         ProfilingInfo info;
@@ -290,6 +293,10 @@
             long metaspaceMethodData = unsafeReadWord(metaspaceMethod + runtime().getConfig().methodDataOffset);
             if (metaspaceMethodData != 0) {
                 methodData = new HotSpotMethodData(metaspaceMethodData);
+                if (TraceMethodDataFilter != null && MetaUtil.format("%H.%n", this).contains(TraceMethodDataFilter)) {
+                    TTY.println("Raw method data for " + MetaUtil.format("%H.%n(%p)", this) + ":");
+                    TTY.println(methodData.toString());
+                }
             }
         }