--- 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;