changeset 22530:3f620444d73f

Allow explicit exceptions for arraylength
author Christian Wimmer <christian.wimmer@oracle.com>
date Fri, 28 Aug 2015 11:18:35 -0700
parents 8cf9fa4368de
children ce2b71115ade
files graal/com.oracle.graal.java/src/com/oracle/graal/java/BciBlockMapping.java graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java
diffstat 2 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/BciBlockMapping.java	Wed Aug 26 15:20:51 2015 -0700
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/BciBlockMapping.java	Fri Aug 28 11:18:35 2015 -0700
@@ -563,6 +563,7 @@
                 case BALOAD:
                 case CALOAD:
                 case SALOAD:
+                case ARRAYLENGTH:
                 case PUTFIELD:
                 case GETFIELD: {
                     ExceptionDispatchBlock handler = handleExceptions(blockMap, bci);
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java	Wed Aug 26 15:20:51 2015 -0700
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java	Fri Aug 28 11:18:35 2015 -0700
@@ -3619,7 +3619,8 @@
     }
 
     private void genArrayLength() {
-        frameState.push(Kind.Int, append(genArrayLength(frameState.pop(Kind.Object))));
+        ValueNode array = emitExplicitExceptions(frameState.pop(Kind.Object), null);
+        frameState.push(Kind.Int, append(genArrayLength(array)));
     }
 
     public ResolvedJavaMethod getMethod() {