< prev index next >

core/org.openjdk.jmc.flightrecorder/src/main/java/org/openjdk/jmc/flightrecorder/parser/synthetic/SettingsTransformer.java

Print this page

        

*** 124,169 **** @SuppressWarnings("nls") private static HashMap<String, Map<String, String>> buildRenameMap() { // NOTE: Replace the last string argument with an identifier reference if a matching one is added to JfrAttributes. HashMap<String, Map<String, String>> 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", "allocationRegionsUsedBefore"); ! addRenameEntry(map, JdkTypeIDsPreJdk9.GC_DETAILED_EVACUATION_INFO, "allocRegionsUsedAfter", "allocationRegionsUsedAfter"); ! addRenameEntry(map, JdkTypeIDsPreJdk9.SWEEP_CODE_CACHE, "sweepIndex", "sweepId"); ! addRenameEntry(map, JdkTypeIDsPreJdk9.ALLOC_INSIDE_TLAB, "class", JdkAttributes.ALLOCATION_CLASS.getIdentifier()); ! addRenameEntry(map, JdkTypeIDsPreJdk9.ALLOC_OUTSIDE_TLAB, "class", JdkAttributes.ALLOCATION_CLASS.getIdentifier()); ! addRenameEntry(map, JdkTypeIDsPreJdk9.OBJECT_COUNT, "class", JdkAttributes.OBJECT_CLASS.getIdentifier()); ! addRenameEntry(map, JdkTypeIDsPreJdk9.COMPILER_PHASE, "compileID", JdkAttributes.COMPILER_COMPILATION_ID.getIdentifier()); ! addRenameEntry(map, JdkTypeIDsPreJdk9.COMPILATION, "compileID", JdkAttributes.COMPILER_COMPILATION_ID.getIdentifier()); ! addRenameEntry(map, JdkTypeIDsPreJdk9.COMPILER_FAILURE, "compileID", JdkAttributes.COMPILER_COMPILATION_ID.getIdentifier()); ! addRenameEntry(map, JdkTypeIDsPreJdk9.COMPILER_FAILURE, "failure", JdkAttributes.COMPILER_FAILED_MESSAGE.getIdentifier()); ! addRenameEntry(map, JdkTypeIDsPreJdk9.GC_DETAILED_OBJECT_COUNT_AFTER_GC, "class", JdkAttributes.OBJECT_CLASS.getIdentifier()); return map; } private static void addRenameEntry( --- 124,169 ---- @SuppressWarnings("nls") private static HashMap<String, Map<String, String>> buildRenameMap() { // NOTE: Replace the last string argument with an identifier reference if a matching one is added to JfrAttributes. HashMap<String, Map<String, String>> map = new HashMap<>(); ! 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, JdkTypeIDsPreJdk11.GC_DETAILED_EVACUATION_INFO, "allocRegionsUsedAfter", "allocationRegionsUsedAfter"); ! addRenameEntry(map, JdkTypeIDsPreJdk11.SWEEP_CODE_CACHE, "sweepIndex", "sweepId"); ! addRenameEntry(map, JdkTypeIDsPreJdk11.ALLOC_INSIDE_TLAB, "class", JdkAttributes.ALLOCATION_CLASS.getIdentifier()); ! addRenameEntry(map, JdkTypeIDsPreJdk11.ALLOC_OUTSIDE_TLAB, "class", JdkAttributes.ALLOCATION_CLASS.getIdentifier()); ! addRenameEntry(map, JdkTypeIDsPreJdk11.OBJECT_COUNT, "class", JdkAttributes.OBJECT_CLASS.getIdentifier()); ! addRenameEntry(map, JdkTypeIDsPreJdk11.COMPILER_PHASE, "compileID", JdkAttributes.COMPILER_COMPILATION_ID.getIdentifier()); ! addRenameEntry(map, JdkTypeIDsPreJdk11.COMPILATION, "compileID", JdkAttributes.COMPILER_COMPILATION_ID.getIdentifier()); ! addRenameEntry(map, JdkTypeIDsPreJdk11.COMPILER_FAILURE, "compileID", JdkAttributes.COMPILER_COMPILATION_ID.getIdentifier()); ! addRenameEntry(map, JdkTypeIDsPreJdk11.COMPILER_FAILURE, "failure", JdkAttributes.COMPILER_FAILED_MESSAGE.getIdentifier()); ! addRenameEntry(map, JdkTypeIDsPreJdk11.GC_DETAILED_OBJECT_COUNT_AFTER_GC, "class", JdkAttributes.OBJECT_CLASS.getIdentifier()); return map; } private static void addRenameEntry(
*** 176,186 **** attrMap.put(pre9AttrId, attrId); } SettingsTransformer(IEventSinkFactory sinkFactory, String label, String[] category, String description, List<ValueField> 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)) { endTimeIndex = i; } else if (vf.matches(SyntheticAttributeExtension.REC_SETTING_EVENT_ID_ATTRIBUTE)) { --- 176,185 ----
*** 193,215 **** thresholdIndex = i; } else if (vf.matches(REC_SETTINGS_ATTR_PERIOD)) { periodIndex = i; } } } boolean isValid() { return endTimeIndex >= 0 && typeIndex >= 0 && enabledIndex >= 0 && stacktraceIndex >= 0 && thresholdIndex >= 0 && periodIndex >= 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()); } Object startTime = values[endTimeIndex]; addSettingEvent(startTime, type, REC_SETTING_NAME_ENABLED, values[enabledIndex]); addSettingEvent(startTime, type, REC_SETTING_NAME_STACKTRACE, values[stacktraceIndex]); --- 192,230 ---- thresholdIndex = i; } else if (vf.matches(REC_SETTINGS_ATTR_PERIOD)) { 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() { return endTimeIndex >= 0 && typeIndex >= 0 && enabledIndex >= 0 && stacktraceIndex >= 0 && thresholdIndex >= 0 && periodIndex >= 0; } + boolean isValidV1() { + return typeIndex >= 0; + } + @Override public void addEvent(Object[] values) { LabeledIdentifier type = (LabeledIdentifier) values[typeIndex]; if (type != null) { ! 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]; addSettingEvent(startTime, type, REC_SETTING_NAME_ENABLED, values[enabledIndex]); addSettingEvent(startTime, type, REC_SETTING_NAME_STACKTRACE, values[stacktraceIndex]);
*** 263,283 **** @Override public IEventSink create( String identifier, String label, String[] category, String description, List<ValueField> dataStructure) { ! if (JdkTypeIDsPreJdk9.RECORDING_SETTING.equals(identifier)) { SettingsTransformer st = new SettingsTransformer(subFactory, label, category, description, dataStructure); ! if (st.isValid()) { 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)) { /* * NOTE: Renaming 'duration' and 'startTime' attributes for JDK 8 'Recording' * events so that they won't conflict with general attributes with the same * names in JDK 9+ recordings. */ --- 278,301 ---- @Override public IEventSink create( String identifier, String label, String[] category, String description, List<ValueField> dataStructure) { ! 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() || (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 (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 * names in JDK 9+ recordings. */
*** 291,309 **** } struct[i] = vf; } return subFactory.create(JdkTypeIDs.RECORDINGS, label, category, description, Arrays.asList(struct)); ! } else if (JdkTypeIDsPreJdk9.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), label, category, description, dataStructure)); } } } ! return subFactory.create(JdkTypeIDsPreJdk9.translate(identifier), label, category, description, translate(identifier, dataStructure)); } private List<ValueField> translate(String identifier, List<ValueField> dataStructure) { Map<String, String> attrMap = attributeRenameMap.get(identifier); --- 309,327 ---- } struct[i] = vf; } return subFactory.create(JdkTypeIDs.RECORDINGS, label, category, description, Arrays.asList(struct)); ! } 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(JdkTypeIDsPreJdk11.translate(identifier), label, category, description, dataStructure)); } } } ! return subFactory.create(JdkTypeIDsPreJdk11.translate(identifier), label, category, description, translate(identifier, dataStructure)); } private List<ValueField> translate(String identifier, List<ValueField> dataStructure) { Map<String, String> attrMap = attributeRenameMap.get(identifier);
< prev index next >