commit | d04dadf3c91625cf244ed8028a2e4d6ad3a5ba15 | [log] [tgz] |
---|---|---|
author | Roberto Lublinerman <rluble@google.com> | Thu May 12 23:18:05 2016 -0700 |
committer | Roberto Lublinerman <rluble@google.com> | Fri May 13 23:18:32 2016 +0000 |
tree | 48308a58035664097f21a75e1ca0bd5edc1df832 | |
parent | b8dbec48afab7b5de3beb0fd52911370acd2bfad [diff] |
Make sure unreferenced native arrays are considered live. Bug: #9337 Bug-Link: https://github.com/gwtproject/gwt/issues/9337 Change-Id: I9bc542dbc246b5c0aba4a575ae6186efaf29023c
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java b/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java index b36c6af..2c44b59 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java
@@ -1059,6 +1059,12 @@ } } + for (JArrayType arrayType : program.getAllArrayTypes()) { + if (arrayType.canBeImplementedExternally()) { + rescuer.rescue(arrayType, true); + } + } + if (program.getRunAsyncs().size() > 0) { /* * Explicitly rescue AsyncFragmentLoader.onLoad(). It is never explicitly
diff --git a/user/test/com/google/gwt/core/interop/NativeJsTypeTest.java b/user/test/com/google/gwt/core/interop/NativeJsTypeTest.java index 49990b9..de5c20f 100644 --- a/user/test/com/google/gwt/core/interop/NativeJsTypeTest.java +++ b/user/test/com/google/gwt/core/interop/NativeJsTypeTest.java
@@ -345,4 +345,15 @@ assertFalse(aBoxedNumber instanceof NativeFunction); assertFalse(aBoxedNumber instanceof NativeString); } + + @JsType(isNative = true) + private static class UnreferencedNativeType { } + + private static native Object createArray() /*-{ + return []; + }-*/; + + public void testUnreferencedNativeArrayInstanceOf() { + assertTrue(createArray() instanceof UnreferencedNativeType[]); + } }