< 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 >