diff options
author | Mingyao Yang <mingyao@google.com> | 2015-04-01 22:08:37 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-04-01 22:08:37 +0000 |
commit | 79bdb47d8c87ca3ee7da4aa2ca56105728257a32 (patch) | |
tree | a288ba00f919fc8687dc8bfba8708756be18ab97 | |
parent | d11fa65a21fd38dcd6e183cd9993b78d711b9ccf (diff) | |
parent | 0c365e674545159fd77b998081207f0685a605e5 (diff) | |
download | art-79bdb47d8c87ca3ee7da4aa2ca56105728257a32.zip art-79bdb47d8c87ca3ee7da4aa2ca56105728257a32.tar.gz art-79bdb47d8c87ca3ee7da4aa2ca56105728257a32.tar.bz2 |
Merge "CanThrow() of HNewArray should return true."
-rw-r--r-- | compiler/optimizing/nodes.h | 3 | ||||
-rw-r--r-- | test/412-new-array/src/Main.java | 16 |
2 files changed, 19 insertions, 0 deletions
diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h index 21ed350..da1468e 100644 --- a/compiler/optimizing/nodes.h +++ b/compiler/optimizing/nodes.h @@ -2307,6 +2307,9 @@ class HNewArray : public HExpression<1> { // Calls runtime so needs an environment. bool NeedsEnvironment() const OVERRIDE { return true; } + // May throw NegativeArraySizeException, OutOfMemoryError, etc. + bool CanThrow() const OVERRIDE { return true; } + bool CanBeNull() const OVERRIDE { return false; } QuickEntrypointEnum GetEntrypoint() const { return entrypoint_; } diff --git a/test/412-new-array/src/Main.java b/test/412-new-array/src/Main.java index 168420c..e4669b8 100644 --- a/test/412-new-array/src/Main.java +++ b/test/412-new-array/src/Main.java @@ -26,6 +26,7 @@ public class Main extends TestCase { $opt$TestWithInitializations(); $opt$TestNegativeValueNewByteArray(); $opt$TestNegativeValueNewCharArray(); + testNegativeArraySize(); testSmaliFilledNewArray(); testSmaliFillArrayData(); testSmaliVerifyError(); @@ -129,6 +130,21 @@ public class Main extends TestCase { } } + static void testNegativeArraySize() { + int i = 0; + try { + $opt$TestNegativeArraySize(); + } catch (NegativeArraySizeException e) { + i = 1; + } + assertEquals(i, 1); + } + + static int[] $opt$TestNegativeArraySize() { + int[] array = new int[-1]; + return null; + } + public static void testSmaliFilledNewArray() throws Exception { Class<?> c = Class.forName("FilledNewArray"); |