Skip to content

Commit 4fe2486

Browse files
committed
logical value for 'Integer' and 'Rational' added
1 parent 14c8f50 commit 4fe2486

File tree

1 file changed

+27
-0
lines changed
  • visualvm/heapviewer.truffle/src/org/graalvm/visualvm/heapviewer/truffle/lang/ruby

1 file changed

+27
-0
lines changed

visualvm/heapviewer.truffle/src/org/graalvm/visualvm/heapviewer/truffle/lang/ruby/RubyNodes.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,33 @@ static String getLogicalValue(RubyObject object, String type, Heap heap) {
157157
FieldValue encodingField = object.getFieldValue("encoding (hidden)"); // NOI18N
158158
Instance encoding = encodingField instanceof ObjectFieldValue ? ((ObjectFieldValue)encodingField).getInstance() : null;
159159
if (encoding != null) logicalValue = DetailsUtils.getInstanceString(encoding, heap);
160+
} else if ("Integer".equals(type)) { // NOI18N
161+
FieldValue valueField = object.getFieldValue("value (hidden)"); // NOI18N
162+
Instance value = valueField instanceof ObjectFieldValue ? ((ObjectFieldValue)valueField).getInstance() : null;
163+
if (value != null) logicalValue = DetailsUtils.getInstanceString(value, heap);
164+
} else if ("Rational".equals(type)) { // NOI18N
165+
FieldValue numField = object.getFieldValue("@numerator"); // NOI18N
166+
Instance numerator = numField instanceof ObjectFieldValue ? ((ObjectFieldValue)numField).getInstance() : null;
167+
FieldValue denomField = object.getFieldValue("@denominator"); // NOI18N
168+
Instance denominator = denomField instanceof ObjectFieldValue ? ((ObjectFieldValue)denomField).getInstance() : null;
169+
if (numField != null && denomField != null) {
170+
String numeratorValue;
171+
String denominatorValue;
172+
173+
if (numerator != null) {
174+
numeratorValue = DetailsUtils.getInstanceString(numerator, heap);
175+
} else {
176+
numeratorValue = numField.getValue();
177+
}
178+
if (denominator != null) {
179+
denominatorValue = DetailsUtils.getInstanceString(denominator, heap);
180+
} else {
181+
denominatorValue = denomField.getValue();
182+
}
183+
if (numeratorValue != null && denominatorValue != null) {
184+
logicalValue = "("+numeratorValue+"/"+denominatorValue+")";
185+
}
186+
}
160187
}
161188

162189
if (logicalValue != null && logicalValue.length() > MAX_LOGVALUE_LENGTH)

0 commit comments

Comments
 (0)