147 writeArrayLength(array);
148 // write array elements
149 out.println("\t<attr name='elements'>");
150 TypeArrayKlass klass = (TypeArrayKlass) array.getKlass();
151 if (klass.getElementType() == TypeArrayKlass.T_CHAR) {
152 // char[] special treatment -- write it as string
153 out.print("\t<string>");
154 out.print(escapeXMLChars(OopUtilities.charArrayToString(array)));
155 out.println("</string>");
156 } else {
157 out.println("\t<seq>");
158 writeObjectFields(array);
159 out.println("\t</seq>");
160 }
161 out.println("\t</attr>");
162 writeObjectFooter(array);
163 }
164
165 protected void writeClass(Instance instance) throws IOException {
166 writeObjectHeader(instance);
167 Klass reflectedType = OopUtilities.classOopToKlass(instance);
168 boolean isInstanceKlass = (reflectedType instanceof InstanceKlass);
169 // reflectedType is null for primitive types (int.class etc).
170 if (reflectedType != null) {
171 Symbol name = reflectedType.getName();
172 if (name != null) {
173 // write class name as an attribute
174 writeAttribute("class-name", "string", name.asString());
175 }
176 if (isInstanceKlass) {
177 // write object-size as an attribute
178 long sizeInBytes = reflectedType.getLayoutHelper();
179 writeAttribute("object-size", "int",
180 Long.toString(sizeInBytes));
181 // write static fields of this class.
182 writeObjectFields(reflectedType);
183 }
184 }
185 out.println("</node>");
186
187 // write edges for super class and direct interfaces
|
147 writeArrayLength(array);
148 // write array elements
149 out.println("\t<attr name='elements'>");
150 TypeArrayKlass klass = (TypeArrayKlass) array.getKlass();
151 if (klass.getElementType() == TypeArrayKlass.T_CHAR) {
152 // char[] special treatment -- write it as string
153 out.print("\t<string>");
154 out.print(escapeXMLChars(OopUtilities.charArrayToString(array)));
155 out.println("</string>");
156 } else {
157 out.println("\t<seq>");
158 writeObjectFields(array);
159 out.println("\t</seq>");
160 }
161 out.println("\t</attr>");
162 writeObjectFooter(array);
163 }
164
165 protected void writeClass(Instance instance) throws IOException {
166 writeObjectHeader(instance);
167 Klass reflectedType = java_lang_Class.asKlass(instance);
168 boolean isInstanceKlass = (reflectedType instanceof InstanceKlass);
169 // reflectedType is null for primitive types (int.class etc).
170 if (reflectedType != null) {
171 Symbol name = reflectedType.getName();
172 if (name != null) {
173 // write class name as an attribute
174 writeAttribute("class-name", "string", name.asString());
175 }
176 if (isInstanceKlass) {
177 // write object-size as an attribute
178 long sizeInBytes = reflectedType.getLayoutHelper();
179 writeAttribute("object-size", "int",
180 Long.toString(sizeInBytes));
181 // write static fields of this class.
182 writeObjectFields(reflectedType);
183 }
184 }
185 out.println("</node>");
186
187 // write edges for super class and direct interfaces
|