222 descs[i] = valueInfo(key, object.get(key), all, duplicates);
223 }
224
225 duplicates.remove(object);
226
227 return descs;
228 }
229
230 /**
231 * Generate a string representation of a Script object.
232 * @param object Script object to represent.
233 * @param all true if to include non-enumerable values.
234 * @param duplicates Duplication set to avoid cycles.
235 * @return String representation.
236 */
237 private static String objectAsString(final ScriptObject object, final boolean all, final Set<Object> duplicates) {
238 final StringBuilder sb = new StringBuilder();
239
240 if (ScriptObject.isArray(object)) {
241 sb.append('[');
242 final long length = object.getLong("length", INVALID_PROGRAM_POINT);
243
244 for (long i = 0; i < length; i++) {
245 if (object.has(i)) {
246 final Object valueAsObject = object.get(i);
247 final boolean isUndefined = valueAsObject == ScriptRuntime.UNDEFINED;
248
249 if (isUndefined) {
250 if (i != 0) {
251 sb.append(",");
252 }
253 } else {
254 if (i != 0) {
255 sb.append(", ");
256 }
257
258 if (valueAsObject instanceof ScriptObject && !(valueAsObject instanceof ScriptFunction)) {
259 final String objectString = objectAsString((ScriptObject)valueAsObject, all, duplicates);
260 sb.append(objectString != null ? objectString : "{...}");
261 } else {
262 sb.append(valueAsString(valueAsObject));
|
222 descs[i] = valueInfo(key, object.get(key), all, duplicates);
223 }
224
225 duplicates.remove(object);
226
227 return descs;
228 }
229
230 /**
231 * Generate a string representation of a Script object.
232 * @param object Script object to represent.
233 * @param all true if to include non-enumerable values.
234 * @param duplicates Duplication set to avoid cycles.
235 * @return String representation.
236 */
237 private static String objectAsString(final ScriptObject object, final boolean all, final Set<Object> duplicates) {
238 final StringBuilder sb = new StringBuilder();
239
240 if (ScriptObject.isArray(object)) {
241 sb.append('[');
242 final long length = (long) object.getDouble("length", INVALID_PROGRAM_POINT);
243
244 for (long i = 0; i < length; i++) {
245 if (object.has(i)) {
246 final Object valueAsObject = object.get(i);
247 final boolean isUndefined = valueAsObject == ScriptRuntime.UNDEFINED;
248
249 if (isUndefined) {
250 if (i != 0) {
251 sb.append(",");
252 }
253 } else {
254 if (i != 0) {
255 sb.append(", ");
256 }
257
258 if (valueAsObject instanceof ScriptObject && !(valueAsObject instanceof ScriptFunction)) {
259 final String objectString = objectAsString((ScriptObject)valueAsObject, all, duplicates);
260 sb.append(objectString != null ? objectString : "{...}");
261 } else {
262 sb.append(valueAsString(valueAsObject));
|