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