--- old/core/org.openjdk.jmc.flightrecorder/src/main/java/org/openjdk/jmc/flightrecorder/parser/synthetic/SettingsTransformer.java 2018-07-12 21:39:23.706263600 +0530 +++ new/core/org.openjdk.jmc.flightrecorder/src/main/java/org/openjdk/jmc/flightrecorder/parser/synthetic/SettingsTransformer.java 2018-07-12 21:39:22.528145800 +0530 @@ -126,42 +126,42 @@ private static HashMap> buildRenameMap() { // NOTE: Replace the last string argument with an identifier reference if a matching one is added to JfrAttributes. HashMap> map = new HashMap<>(); - addRenameEntry(map, JdkTypeIDsPreJdk9.THREAD_PARK, "klass", "parkedClass"); - addRenameEntry(map, JdkTypeIDsPreJdk9.MONITOR_ENTER, "klass", JdkAttributes.MONITOR_CLASS.getIdentifier()); - addRenameEntry(map, JdkTypeIDsPreJdk9.MONITOR_WAIT, "klass", JdkAttributes.MONITOR_CLASS.getIdentifier()); - addRenameEntry(map, JdkTypeIDsPreJdk9.INT_FLAG_CHANGED, "old_value", "oldValue"); - addRenameEntry(map, JdkTypeIDsPreJdk9.INT_FLAG_CHANGED, "new_value", "newValue"); - addRenameEntry(map, JdkTypeIDsPreJdk9.UINT_FLAG_CHANGED, "old_value", "oldValue"); - addRenameEntry(map, JdkTypeIDsPreJdk9.UINT_FLAG_CHANGED, "new_value", "newValue"); - addRenameEntry(map, JdkTypeIDsPreJdk9.LONG_FLAG_CHANGED, "old_value", "oldValue"); - addRenameEntry(map, JdkTypeIDsPreJdk9.LONG_FLAG_CHANGED, "new_value", "newValue"); - addRenameEntry(map, JdkTypeIDsPreJdk9.ULONG_FLAG_CHANGED, "old_value", "oldValue"); - addRenameEntry(map, JdkTypeIDsPreJdk9.ULONG_FLAG_CHANGED, "new_value", "newValue"); - addRenameEntry(map, JdkTypeIDsPreJdk9.DOUBLE_FLAG_CHANGED, "old_value", "oldValue"); - addRenameEntry(map, JdkTypeIDsPreJdk9.DOUBLE_FLAG_CHANGED, "new_value", "newValue"); - addRenameEntry(map, JdkTypeIDsPreJdk9.BOOLEAN_FLAG_CHANGED, "old_value", "oldValue"); - addRenameEntry(map, JdkTypeIDsPreJdk9.BOOLEAN_FLAG_CHANGED, "new_value", "newValue"); - addRenameEntry(map, JdkTypeIDsPreJdk9.STRING_FLAG_CHANGED, "old_value", "oldValue"); - addRenameEntry(map, JdkTypeIDsPreJdk9.STRING_FLAG_CHANGED, "new_value", "newValue"); - addRenameEntry(map, JdkTypeIDsPreJdk9.GC_DETAILED_EVACUATION_INFO, "allocRegionsUsedBefore", + addRenameEntry(map, JdkTypeIDsPreJdk11.THREAD_PARK, "klass", "parkedClass"); + addRenameEntry(map, JdkTypeIDsPreJdk11.MONITOR_ENTER, "klass", JdkAttributes.MONITOR_CLASS.getIdentifier()); + addRenameEntry(map, JdkTypeIDsPreJdk11.MONITOR_WAIT, "klass", JdkAttributes.MONITOR_CLASS.getIdentifier()); + addRenameEntry(map, JdkTypeIDsPreJdk11.INT_FLAG_CHANGED, "old_value", "oldValue"); + addRenameEntry(map, JdkTypeIDsPreJdk11.INT_FLAG_CHANGED, "new_value", "newValue"); + addRenameEntry(map, JdkTypeIDsPreJdk11.UINT_FLAG_CHANGED, "old_value", "oldValue"); + addRenameEntry(map, JdkTypeIDsPreJdk11.UINT_FLAG_CHANGED, "new_value", "newValue"); + addRenameEntry(map, JdkTypeIDsPreJdk11.LONG_FLAG_CHANGED, "old_value", "oldValue"); + addRenameEntry(map, JdkTypeIDsPreJdk11.LONG_FLAG_CHANGED, "new_value", "newValue"); + addRenameEntry(map, JdkTypeIDsPreJdk11.ULONG_FLAG_CHANGED, "old_value", "oldValue"); + addRenameEntry(map, JdkTypeIDsPreJdk11.ULONG_FLAG_CHANGED, "new_value", "newValue"); + addRenameEntry(map, JdkTypeIDsPreJdk11.DOUBLE_FLAG_CHANGED, "old_value", "oldValue"); + addRenameEntry(map, JdkTypeIDsPreJdk11.DOUBLE_FLAG_CHANGED, "new_value", "newValue"); + addRenameEntry(map, JdkTypeIDsPreJdk11.BOOLEAN_FLAG_CHANGED, "old_value", "oldValue"); + addRenameEntry(map, JdkTypeIDsPreJdk11.BOOLEAN_FLAG_CHANGED, "new_value", "newValue"); + addRenameEntry(map, JdkTypeIDsPreJdk11.STRING_FLAG_CHANGED, "old_value", "oldValue"); + addRenameEntry(map, JdkTypeIDsPreJdk11.STRING_FLAG_CHANGED, "new_value", "newValue"); + addRenameEntry(map, JdkTypeIDsPreJdk11.GC_DETAILED_EVACUATION_INFO, "allocRegionsUsedBefore", "allocationRegionsUsedBefore"); - addRenameEntry(map, JdkTypeIDsPreJdk9.GC_DETAILED_EVACUATION_INFO, "allocRegionsUsedAfter", + addRenameEntry(map, JdkTypeIDsPreJdk11.GC_DETAILED_EVACUATION_INFO, "allocRegionsUsedAfter", "allocationRegionsUsedAfter"); - addRenameEntry(map, JdkTypeIDsPreJdk9.SWEEP_CODE_CACHE, "sweepIndex", "sweepId"); - addRenameEntry(map, JdkTypeIDsPreJdk9.ALLOC_INSIDE_TLAB, "class", + addRenameEntry(map, JdkTypeIDsPreJdk11.SWEEP_CODE_CACHE, "sweepIndex", "sweepId"); + addRenameEntry(map, JdkTypeIDsPreJdk11.ALLOC_INSIDE_TLAB, "class", JdkAttributes.ALLOCATION_CLASS.getIdentifier()); - addRenameEntry(map, JdkTypeIDsPreJdk9.ALLOC_OUTSIDE_TLAB, "class", + addRenameEntry(map, JdkTypeIDsPreJdk11.ALLOC_OUTSIDE_TLAB, "class", JdkAttributes.ALLOCATION_CLASS.getIdentifier()); - addRenameEntry(map, JdkTypeIDsPreJdk9.OBJECT_COUNT, "class", JdkAttributes.OBJECT_CLASS.getIdentifier()); - addRenameEntry(map, JdkTypeIDsPreJdk9.COMPILER_PHASE, "compileID", + addRenameEntry(map, JdkTypeIDsPreJdk11.OBJECT_COUNT, "class", JdkAttributes.OBJECT_CLASS.getIdentifier()); + addRenameEntry(map, JdkTypeIDsPreJdk11.COMPILER_PHASE, "compileID", JdkAttributes.COMPILER_COMPILATION_ID.getIdentifier()); - addRenameEntry(map, JdkTypeIDsPreJdk9.COMPILATION, "compileID", + addRenameEntry(map, JdkTypeIDsPreJdk11.COMPILATION, "compileID", JdkAttributes.COMPILER_COMPILATION_ID.getIdentifier()); - addRenameEntry(map, JdkTypeIDsPreJdk9.COMPILER_FAILURE, "compileID", + addRenameEntry(map, JdkTypeIDsPreJdk11.COMPILER_FAILURE, "compileID", JdkAttributes.COMPILER_COMPILATION_ID.getIdentifier()); - addRenameEntry(map, JdkTypeIDsPreJdk9.COMPILER_FAILURE, "failure", + addRenameEntry(map, JdkTypeIDsPreJdk11.COMPILER_FAILURE, "failure", JdkAttributes.COMPILER_FAILED_MESSAGE.getIdentifier()); - addRenameEntry(map, JdkTypeIDsPreJdk9.GC_DETAILED_OBJECT_COUNT_AFTER_GC, "class", + addRenameEntry(map, JdkTypeIDsPreJdk11.GC_DETAILED_OBJECT_COUNT_AFTER_GC, "class", JdkAttributes.OBJECT_CLASS.getIdentifier()); return map; } @@ -178,7 +178,6 @@ SettingsTransformer(IEventSinkFactory sinkFactory, String label, String[] category, String description, List dataStructure) { - sink = sinkFactory.create(JdkTypeIDs.RECORDING_SETTING, label, category, description, FIELDS); for (int i = 0; i < dataStructure.size(); i++) { ValueField vf = dataStructure.get(i); if (vf.matches(JfrAttributes.END_TIME)) { @@ -195,6 +194,11 @@ periodIndex = i; } } + if (endTimeIndex >= 0) { + sink = sinkFactory.create(JdkTypeIDs.RECORDING_SETTING, label, category, description, FIELDS); + } else { + sink = sinkFactory.create(JdkTypeIDs.RECORDING_SETTING, label, category, description, dataStructure); + } } boolean isValid() { @@ -202,12 +206,23 @@ && periodIndex >= 0; } + boolean isValidV1() { + return typeIndex >= 0; + } + @Override public void addEvent(Object[] values) { LabeledIdentifier type = (LabeledIdentifier) values[typeIndex]; if (type != null) { - type = new LabeledIdentifier(JdkTypeIDsPreJdk9.translate(type.getInterfaceId()), type.getImplementationId(), - type.getName(), type.getDeclaredDescription()); + if (JdkTypeIDsPreJdk11.needTransform(type.getInterfaceId())) { + type = new LabeledIdentifier(JdkTypeIDsPreJdk11.translate(type.getInterfaceId()), + type.getImplementationId(), type.getName(), type.getDeclaredDescription()); + } + if (endTimeIndex < 0) { + values[typeIndex] = type; + sink.addEvent(values); + return; + } } Object startTime = values[endTimeIndex]; @@ -265,17 +280,20 @@ public IEventSink create( String identifier, String label, String[] category, String description, List dataStructure) { - if (JdkTypeIDsPreJdk9.RECORDING_SETTING.equals(identifier)) { + boolean needsTransform = JdkTypeIDsPreJdk11.needTransform(identifier); + if (JdkTypeIDsPreJdk11.RECORDING_SETTING.equals(identifier) || + (needsTransform && + JdkTypeIDs.RECORDING_SETTING.equals(JdkTypeIDsPreJdk11.translate(identifier)))) { SettingsTransformer st = new SettingsTransformer(subFactory, label, category, description, dataStructure); - if (st.isValid()) { + if (st.isValid() || (needsTransform && st.isValidV1())) { return st; } else { // FIXME: Avoid System.err.println System.err .println("Cannot create SettingsTransformer from fields: " + dataStructure.toString()); //$NON-NLS-1$ } - } else if (JdkTypeIDsPreJdk9.RECORDINGS.equals(identifier)) { + } else if (JdkTypeIDsPreJdk11.RECORDINGS.equals(identifier)) { /* * NOTE: Renaming 'duration' and 'startTime' attributes for JDK 8 'Recording' * events so that they won't conflict with general attributes with the same @@ -293,15 +311,15 @@ } return subFactory.create(JdkTypeIDs.RECORDINGS, label, category, description, Arrays.asList(struct)); - } else if (JdkTypeIDsPreJdk9.CODE_CACHE_STATISTICS.equals(identifier)) { + } else if (JdkTypeIDsPreJdk11.CODE_CACHE_STATISTICS.equals(identifier)) { for (int i = 0; i < dataStructure.size(); i++) { if (UNALLOCATED_CAPACITY_FIELD_ID.equals(dataStructure.get(i).getIdentifier())) { - return new FixCodeCacheSink(i, subFactory.create(JdkTypeIDsPreJdk9.translate(identifier), + return new FixCodeCacheSink(i, subFactory.create(JdkTypeIDsPreJdk11.translate(identifier), label, category, description, dataStructure)); } } } - return subFactory.create(JdkTypeIDsPreJdk9.translate(identifier), label, category, description, + return subFactory.create(JdkTypeIDsPreJdk11.translate(identifier), label, category, description, translate(identifier, dataStructure)); }