--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/lookup/MethodHandleFactory.java Fri Feb 27 14:33:47 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/lookup/MethodHandleFactory.java Mon Mar 02 14:33:55 2015 +0100
@@ -25,6 +25,8 @@
package jdk.nashorn.internal.lookup;
+import static jdk.nashorn.internal.runtime.JSType.isString;
+
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.lang.invoke.MethodHandle;
@@ -36,7 +38,6 @@
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
-import jdk.nashorn.internal.runtime.ConsString;
import jdk.nashorn.internal.runtime.Context;
import jdk.nashorn.internal.runtime.Debug;
import jdk.nashorn.internal.runtime.ScriptObject;
@@ -343,7 +344,7 @@
final Object d = data[i];
if (d == null) {
sb.append("<null> ");
- } else if (d instanceof String || d instanceof ConsString) {
+ } else if (isString(d)) {
sb.append(d.toString());
sb.append(' ');
} else if (d.getClass().isArray()) {
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/Global.java Fri Feb 27 14:33:47 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/Global.java Mon Mar 02 14:33:55 2015 +0100
@@ -28,6 +28,7 @@
import static jdk.nashorn.internal.lookup.Lookup.MH;
import static jdk.nashorn.internal.runtime.ECMAErrors.referenceError;
import static jdk.nashorn.internal.runtime.ECMAErrors.typeError;
+import static jdk.nashorn.internal.runtime.JSType.isString;
import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED;
import java.io.IOException;
@@ -55,7 +56,6 @@
import jdk.nashorn.internal.objects.annotations.Attribute;
import jdk.nashorn.internal.objects.annotations.Property;
import jdk.nashorn.internal.objects.annotations.ScriptClass;
-import jdk.nashorn.internal.runtime.ConsString;
import jdk.nashorn.internal.runtime.Context;
import jdk.nashorn.internal.runtime.ECMAErrors;
import jdk.nashorn.internal.runtime.GlobalConstants;
@@ -577,7 +577,7 @@
return new NativeBoolean((Boolean)obj, this);
} else if (obj instanceof Number) {
return new NativeNumber(((Number)obj).doubleValue(), this);
- } else if (obj instanceof String || obj instanceof ConsString) {
+ } else if (isString(obj)) {
return new NativeString((CharSequence)obj, this);
} else if (obj instanceof Object[]) { // extension
return new NativeArray(ArrayData.allocate((Object[])obj), this);
@@ -604,7 +604,7 @@
* @return guarded invocation
*/
public static GuardedInvocation primitiveLookup(final LinkRequest request, final Object self) {
- if (self instanceof String || self instanceof ConsString) {
+ if (isString(self)) {
return NativeString.lookupPrimitive(request, self);
} else if (self instanceof Number) {
return NativeNumber.lookupPrimitive(request, self);
@@ -621,7 +621,7 @@
* @return method handle to create wrapper objects for primitive receiver
*/
public static MethodHandle getPrimitiveWrapFilter(final Object self) {
- if (self instanceof String || self instanceof ConsString) {
+ if (isString(self)) {
return NativeString.WRAPFILTER;
} else if (self instanceof Number) {
return NativeNumber.WRAPFILTER;
@@ -947,7 +947,7 @@
* This is directly invoked from generated when eval(code) is called in user code
*/
public static Object directEval(final Object self, final Object str, final Object callThis, final Object location, final boolean strict) {
- if (!(str instanceof String || str instanceof ConsString)) {
+ if (!isString(str)) {
return str;
}
final Global global = Global.instanceFrom(self);
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/NativeDate.java Fri Feb 27 14:33:47 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/NativeDate.java Mon Mar 02 14:33:55 2015 +0100
@@ -30,6 +30,7 @@
import static java.lang.Double.isNaN;
import static jdk.nashorn.internal.runtime.ECMAErrors.rangeError;
import static jdk.nashorn.internal.runtime.ECMAErrors.typeError;
+
import java.util.Locale;
import java.util.TimeZone;
import java.util.concurrent.Callable;
@@ -40,7 +41,6 @@
import jdk.nashorn.internal.objects.annotations.SpecializedFunction;
import jdk.nashorn.internal.objects.annotations.Where;
import jdk.nashorn.internal.parser.DateParser;
-import jdk.nashorn.internal.runtime.ConsString;
import jdk.nashorn.internal.runtime.JSType;
import jdk.nashorn.internal.runtime.PropertyMap;
import jdk.nashorn.internal.runtime.ScriptEnvironment;
@@ -183,7 +183,7 @@
case 1:
double num;
final Object arg = JSType.toPrimitive(args[0]);
- if (arg instanceof String || arg instanceof ConsString) {
+ if (JSType.isString(arg)) {
num = parseDateString(arg.toString());
} else {
num = timeClip(JSType.toNumber(args[0]));
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/NativeJSON.java Fri Feb 27 14:33:47 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/NativeJSON.java Mon Mar 02 14:33:55 2015 +0100
@@ -181,7 +181,7 @@
}
gap = sb.toString();
}
- } else if (modSpace instanceof String || modSpace instanceof ConsString) {
+ } else if (JSType.isString(modSpace)) {
final String str = modSpace.toString();
gap = str.substring(0, Math.min(10, str.length()));
} else {
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/NativeString.java Fri Feb 27 14:33:47 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/NativeString.java Mon Mar 02 14:33:55 2015 +0100
@@ -90,7 +90,7 @@
private NativeString(final CharSequence value, final ScriptObject proto, final PropertyMap map) {
super(proto, map);
- assert value instanceof String || value instanceof ConsString;
+ assert JSType.isString(value);
this.value = value;
}
@@ -155,7 +155,7 @@
final Object self = request.getReceiver();
final Class<?> returnType = desc.getMethodType().returnType();
- if (returnType == Object.class && (self instanceof String || self instanceof ConsString)) {
+ if (returnType == Object.class && JSType.isString(self)) {
try {
return new GuardedInvocation(MH.findStatic(MethodHandles.lookup(), NativeString.class, "get", desc.getMethodType()), NashornGuards.getInstanceOf2Guard(String.class, ConsString.class));
} catch (final LookupException e) {
@@ -1312,7 +1312,7 @@
}
private static CharSequence getCharSequence(final Object self) {
- if (self instanceof String || self instanceof ConsString) {
+ if (JSType.isString(self)) {
return (CharSequence)self;
} else if (self instanceof NativeString) {
return ((NativeString)self).getValue();
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ConsString.java Fri Feb 27 14:33:47 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ConsString.java Mon Mar 02 14:33:55 2015 +0100
@@ -25,6 +25,8 @@
package jdk.nashorn.internal.runtime;
+import static jdk.nashorn.internal.runtime.JSType.isString;
+
import java.util.ArrayDeque;
import java.util.Deque;
@@ -52,8 +54,8 @@
* @param right right char sequence
*/
public ConsString(final CharSequence left, final CharSequence right) {
- assert left instanceof String || left instanceof ConsString;
- assert right instanceof String || right instanceof ConsString;
+ assert isString(left);
+ assert isString(right);
this.left = left;
this.right = right;
length = left.length() + right.length();
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/JSType.java Fri Feb 27 14:33:47 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/JSType.java Mon Mar 02 14:33:55 2015 +0100
@@ -311,7 +311,7 @@
return JSType.BOOLEAN;
}
- if (obj instanceof String || obj instanceof ConsString) {
+ if (isString(obj)) {
return JSType.STRING;
}
@@ -349,7 +349,7 @@
return JSType.BOOLEAN;
}
- if (obj instanceof String || obj instanceof ConsString) {
+ if (isString(obj)) {
return JSType.STRING;
}
@@ -455,8 +455,7 @@
obj == ScriptRuntime.UNDEFINED ||
obj instanceof Boolean ||
obj instanceof Number ||
- obj instanceof String ||
- obj instanceof ConsString;
+ isString(obj);
}
/**
@@ -577,7 +576,7 @@
return num != 0 && !Double.isNaN(num);
}
- if (obj instanceof String || obj instanceof ConsString) {
+ if (isString(obj)) {
return ((CharSequence)obj).length() > 0;
}
@@ -628,6 +627,15 @@
}
/**
+ * Returns true if object represents a primitive JavaScript string value.
+ * @param obj the object
+ * @return true if the object represents a primitive JavaScript string value.
+ */
+ public static boolean isString(final Object obj) {
+ return obj instanceof String || obj instanceof ConsString;
+ }
+
+ /**
* JavaScript compliant conversion of integer to String
*
* @param num an integer
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptFunctionData.java Fri Feb 27 14:33:47 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptFunctionData.java Mon Mar 02 14:33:55 2015 +0100
@@ -28,6 +28,7 @@
import static jdk.nashorn.internal.lookup.Lookup.MH;
import static jdk.nashorn.internal.runtime.ECMAErrors.typeError;
import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED;
+
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;
@@ -456,8 +457,7 @@
}
static boolean isPrimitiveThis(final Object obj) {
- return obj instanceof String || obj instanceof ConsString ||
- obj instanceof Number || obj instanceof Boolean;
+ return JSType.isString(obj) || obj instanceof Number || obj instanceof Boolean;
}
/**
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptRuntime.java Fri Feb 27 14:33:47 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptRuntime.java Mon Mar 02 14:33:55 2015 +0100
@@ -32,6 +32,7 @@
import static jdk.nashorn.internal.runtime.ECMAErrors.syntaxError;
import static jdk.nashorn.internal.runtime.ECMAErrors.typeError;
import static jdk.nashorn.internal.runtime.JSType.isRepresentableAsInt;
+import static jdk.nashorn.internal.runtime.JSType.isString;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
@@ -56,7 +57,6 @@
import jdk.nashorn.internal.parser.Lexer;
import jdk.nashorn.internal.runtime.linker.Bootstrap;
-
/**
* Utilities to be called by JavaScript runtime API and generated classes.
*/
@@ -564,8 +564,7 @@
final Object xPrim = JSType.toPrimitive(x);
final Object yPrim = JSType.toPrimitive(y);
- if (xPrim instanceof String || yPrim instanceof String
- || xPrim instanceof ConsString || yPrim instanceof ConsString) {
+ if (isString(xPrim) || isString(yPrim)) {
try {
return new ConsString(JSType.toCharSequence(xPrim), JSType.toCharSequence(yPrim));
} catch (final IllegalArgumentException iae) {
@@ -1010,7 +1009,7 @@
px = JSType.toPrimitive(x, Number.class);
}
- if (JSType.ofNoFunction(px) == JSType.STRING && JSType.ofNoFunction(py) == JSType.STRING) {
+ if (isString(px) && isString(py)) {
// May be String or ConsString
return px.toString().compareTo(py.toString()) < 0;
}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptingFunctions.java Fri Feb 27 14:33:47 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptingFunctions.java Mon Mar 02 14:33:55 2015 +0100
@@ -107,7 +107,7 @@
if (file instanceof File) {
f = (File)file;
- } else if (file instanceof String || file instanceof ConsString) {
+ } else if (JSType.isString(file)) {
f = new java.io.File(((CharSequence)file).toString());
}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/BrowserJSObjectLinker.java Fri Feb 27 14:33:47 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/BrowserJSObjectLinker.java Mon Mar 02 14:33:55 2015 +0100
@@ -25,11 +25,13 @@
package jdk.nashorn.internal.runtime.linker;
+import static jdk.nashorn.internal.runtime.JSType.isString;
+import static jdk.nashorn.internal.runtime.linker.BrowserJSObjectLinker.JSObjectHandles.JSOBJECT_CALL;
import static jdk.nashorn.internal.runtime.linker.BrowserJSObjectLinker.JSObjectHandles.JSOBJECT_GETMEMBER;
import static jdk.nashorn.internal.runtime.linker.BrowserJSObjectLinker.JSObjectHandles.JSOBJECT_GETSLOT;
import static jdk.nashorn.internal.runtime.linker.BrowserJSObjectLinker.JSObjectHandles.JSOBJECT_SETMEMBER;
import static jdk.nashorn.internal.runtime.linker.BrowserJSObjectLinker.JSObjectHandles.JSOBJECT_SETSLOT;
-import static jdk.nashorn.internal.runtime.linker.BrowserJSObjectLinker.JSObjectHandles.JSOBJECT_CALL;
+
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import jdk.internal.dynalink.CallSiteDescriptor;
@@ -40,7 +42,6 @@
import jdk.internal.dynalink.support.CallSiteDescriptorFactory;
import jdk.nashorn.internal.lookup.MethodHandleFactory;
import jdk.nashorn.internal.lookup.MethodHandleFunctionality;
-import jdk.nashorn.internal.runtime.ConsString;
import jdk.nashorn.internal.runtime.JSType;
/**
@@ -186,7 +187,7 @@
if (index > -1) {
return JSOBJECT_GETSLOT.invokeExact(jsobj, index);
}
- } else if (key instanceof String || key instanceof ConsString) {
+ } else if (isString(key)) {
final String name = key.toString();
if (name.indexOf('(') != -1) {
return fallback.invokeExact(jsobj, (Object) name);
@@ -202,7 +203,7 @@
JSOBJECT_SETSLOT.invokeExact(jsobj, (int)key, value);
} else if (key instanceof Number) {
JSOBJECT_SETSLOT.invokeExact(jsobj, getIndex((Number)key), value);
- } else if (key instanceof String || key instanceof ConsString) {
+ } else if (isString(key)) {
JSOBJECT_SETMEMBER.invokeExact(jsobj, key.toString(), value);
}
}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/JSObjectLinker.java Fri Feb 27 14:33:47 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/JSObjectLinker.java Mon Mar 02 14:33:55 2015 +0100
@@ -25,6 +25,8 @@
package jdk.nashorn.internal.runtime.linker;
+import static jdk.nashorn.internal.runtime.JSType.isString;
+
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.util.Map;
@@ -38,7 +40,6 @@
import jdk.nashorn.api.scripting.JSObject;
import jdk.nashorn.internal.lookup.MethodHandleFactory;
import jdk.nashorn.internal.lookup.MethodHandleFunctionality;
-import jdk.nashorn.internal.runtime.ConsString;
import jdk.nashorn.internal.runtime.JSType;
/**
@@ -166,7 +167,7 @@
if (index > -1) {
return ((JSObject)jsobj).getSlot(index);
}
- } else if (key instanceof String || key instanceof ConsString) {
+ } else if (isString(key)) {
final String name = key.toString();
// get with method name and signature. delegate it to beans linker!
if (name.indexOf('(') != -1) {
@@ -183,7 +184,7 @@
((JSObject)jsobj).setSlot((Integer)key, value);
} else if (key instanceof Number) {
((JSObject)jsobj).setSlot(getIndex((Number)key), value);
- } else if (key instanceof String || key instanceof ConsString) {
+ } else if (isString(key)) {
((JSObject)jsobj).setMember(key.toString(), value);
}
}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/JavaArgumentConverters.java Fri Feb 27 14:33:47 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/JavaArgumentConverters.java Mon Mar 02 14:33:55 2015 +0100
@@ -27,6 +27,7 @@
import static jdk.nashorn.internal.lookup.Lookup.MH;
import static jdk.nashorn.internal.runtime.ECMAErrors.typeError;
+import static jdk.nashorn.internal.runtime.JSType.isString;
import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED;
import java.lang.invoke.MethodHandle;
@@ -78,7 +79,7 @@
}
if (obj == UNDEFINED) {
- // NOTE: same reasoning for FindBugs NP_BOOLEAN_RETURN_NUL warning as in the preceding comment.
+ // NOTE: same reasoning for FindBugs NP_BOOLEAN_RETURN_NULL warning as in the preceding comment.
return null;
}
@@ -87,7 +88,7 @@
return num != 0 && !Double.isNaN(num);
}
- if (obj instanceof String || obj instanceof ConsString) {
+ if (isString(obj)) {
return ((CharSequence) obj).length() > 0;
}
@@ -207,7 +208,7 @@
return f.longValue();
} else if (obj instanceof Number) {
return ((Number)obj).longValue();
- } else if (obj instanceof String || obj instanceof ConsString) {
+ } else if (isString(obj)) {
return JSType.toLong(obj);
} else if (obj instanceof Boolean) {
return (Boolean)obj ? 1L : 0L;
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/NashornPrimitiveLinker.java Fri Feb 27 14:33:47 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/NashornPrimitiveLinker.java Mon Mar 02 14:33:55 2015 +0100
@@ -39,6 +39,7 @@
import jdk.internal.dynalink.support.TypeUtilities;
import jdk.nashorn.internal.objects.Global;
import jdk.nashorn.internal.runtime.ConsString;
+import jdk.nashorn.internal.runtime.JSType;
import jdk.nashorn.internal.runtime.ScriptRuntime;
/**
@@ -170,7 +171,7 @@
@SuppressWarnings("unused")
private static boolean isJavaScriptPrimitive(final Object o) {
- return o instanceof String || o instanceof Boolean || o instanceof Number || o instanceof ConsString || o == null;
+ return JSType.isString(o) || o instanceof Boolean || o instanceof Number || o == null;
}
private static final MethodHandle GUARD_PRIMITIVE = findOwnMH("isJavaScriptPrimitive", boolean.class, Object.class);