Remove Stream usage from Throwable for smaller generated JS output size Change-Id: I2506993b5e90aef9136aa8c739eb0bc74ad5e06e Bug-Link: https://github.com/gwtproject/gwt/issues/9697 Bug: #9697
diff --git a/user/super/com/google/gwt/emul/java/lang/Throwable.java b/user/super/com/google/gwt/emul/java/lang/Throwable.java index cbee36f..60c8a12 100644 --- a/user/super/com/google/gwt/emul/java/lang/Throwable.java +++ b/user/super/com/google/gwt/emul/java/lang/Throwable.java
@@ -21,7 +21,6 @@ import java.io.PrintStream; import java.io.Serializable; -import java.util.Arrays; import javaemul.internal.annotations.DoNotInline; @@ -173,7 +172,13 @@ }-*/; private Object[] getBackingSuppressed() { - return Arrays.stream(getSuppressed()).map(t -> t.backingJsObject).toArray(); + // local variable as the whole method ends up being inlined three times + Throwable[] suppressed = getSuppressed(); + Object[] result = new Object[suppressed.length]; + for (int i = 0; i < suppressed.length; i++) { + result[i] = suppressed[i].backingJsObject; + } + return result; } /**
diff --git a/user/test/com/google/gwt/core/client/impl/StackTraceEmulTest.java b/user/test/com/google/gwt/core/client/impl/StackTraceEmulTest.java index 97e8978..b15ce75 100644 --- a/user/test/com/google/gwt/core/client/impl/StackTraceEmulTest.java +++ b/user/test/com/google/gwt/core/client/impl/StackTraceEmulTest.java
@@ -67,7 +67,7 @@ String[] methodNames = getTraceJava(); StackTraceElement[] expectedTrace = new StackTraceElement[] { - createSTE(methodNames[0], "Throwable.java", 69), + createSTE(methodNames[0], "Throwable.java", 68), createSTE(methodNames[1], "Exception.java", 29), createSTE(methodNames[2], "StackTraceExamples.java", 57), createSTE(methodNames[3], "StackTraceExamples.java", 52),