nashorn/src/jdk/nashorn/internal/runtime/arrays/UndefinedArrayFilter.java
changeset 24719 f726e9d67629
parent 19236 73d242d205f9
child 24778 2ff5d7041566
--- a/nashorn/src/jdk/nashorn/internal/runtime/arrays/UndefinedArrayFilter.java	Tue Feb 25 18:56:10 2014 +0530
+++ b/nashorn/src/jdk/nashorn/internal/runtime/arrays/UndefinedArrayFilter.java	Wed Feb 26 13:17:57 2014 +0100
@@ -29,6 +29,7 @@
 
 import java.lang.reflect.Array;
 import jdk.nashorn.internal.runtime.BitVector;
+import jdk.nashorn.internal.runtime.UnwarrantedOptimismException;
 
 /**
  * This filter handles the presence of undefined array elements.
@@ -154,6 +155,15 @@
     }
 
     @Override
+    public int getIntOptimistic(int index, int programPoint) {
+        if (undefined.isSet(index)) {
+            throw new UnwarrantedOptimismException(UNDEFINED, programPoint);
+        }
+
+        return super.getIntOptimistic(index, programPoint);
+    }
+
+    @Override
     public long getLong(final int index) {
         if (undefined.isSet(index)) {
             return 0L;
@@ -163,6 +173,15 @@
     }
 
     @Override
+    public long getLongOptimistic(int index, int programPoint) {
+        if (undefined.isSet(index)) {
+            throw new UnwarrantedOptimismException(UNDEFINED, programPoint);
+        }
+
+        return super.getLongOptimistic(index, programPoint);
+    }
+
+    @Override
     public double getDouble(final int index) {
         if (undefined.isSet(index)) {
             return Double.NaN;
@@ -172,6 +191,15 @@
     }
 
     @Override
+    public double getDoubleOptimistic(int index, int programPoint) {
+        if (undefined.isSet(index)) {
+            throw new UnwarrantedOptimismException(UNDEFINED, programPoint);
+        }
+
+        return super.getDoubleOptimistic(index, programPoint);
+    }
+
+    @Override
     public Object getObject(final int index) {
         if (undefined.isSet(index)) {
             return UNDEFINED;