< prev index next >

src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/Global.java

Print this page




1089         init(eng);
1090     }
1091 
1092     /**
1093      * Wrap a Java object as corresponding script object
1094      *
1095      * @param obj object to wrap
1096      * @return    wrapped object
1097      */
1098     public Object wrapAsObject(final Object obj) {
1099         if (obj instanceof Boolean) {
1100             return new NativeBoolean((Boolean)obj, this);
1101         } else if (obj instanceof Number) {
1102             return new NativeNumber(((Number)obj).doubleValue(), this);
1103         } else if (isString(obj)) {
1104             return new NativeString((CharSequence)obj, this);
1105         } else if (obj instanceof Object[]) { // extension
1106             return new NativeArray(ArrayData.allocate((Object[])obj), this);
1107         } else if (obj instanceof double[]) { // extension
1108             return new NativeArray(ArrayData.allocate((double[])obj), this);
1109         } else if (obj instanceof long[]) {
1110             return new NativeArray(ArrayData.allocate((long[])obj), this);
1111         } else if (obj instanceof int[]) {
1112             return new NativeArray(ArrayData.allocate((int[]) obj), this);
1113         } else if (obj instanceof ArrayData) {
1114             return new NativeArray((ArrayData) obj, this);
1115         } else if (obj instanceof Symbol) {
1116             return new NativeSymbol((Symbol) obj, this);
1117         } else {
1118             // FIXME: more special cases? Map? List?
1119             return obj;
1120         }
1121     }
1122 
1123     /**
1124      * Lookup helper for JS primitive types
1125      *
1126      * @param request the link request for the dynamic call site.
1127      * @param self     self reference
1128      *
1129      * @return guarded invocation
1130      */


1977 
1978             if (value == ScriptRuntime.EMPTY) {
1979                 arrayData = arrayData.delete(index);
1980             }
1981         }
1982 
1983         return new NativeArray(arrayData);
1984     }
1985 
1986     /**
1987      * Allocate a new number array.
1988      *
1989      * @param initial number values.
1990      * @return the new array
1991      */
1992     public static NativeArray allocate(final double[] initial) {
1993         return new NativeArray(ArrayData.allocate(initial));
1994     }
1995 
1996     /**
1997      * Allocate a new long array.
1998      *
1999      * @param initial number values.
2000      * @return the new array
2001      */
2002     public static NativeArray allocate(final long[] initial) {
2003         return new NativeArray(ArrayData.allocate(initial));
2004     }
2005 
2006     /**
2007      * Allocate a new integer array.
2008      *
2009      * @param initial number values.
2010      * @return the new array
2011      */
2012     public static NativeArray allocate(final int[] initial) {
2013         return new NativeArray(ArrayData.allocate(initial));
2014     }
2015 
2016     /**
2017      * Allocate a new object array for arguments.
2018      *
2019      * @param arguments initial arguments passed.
2020      * @param callee reference to the function that uses arguments object
2021      * @param numParams actual number of declared parameters
2022      *
2023      * @return the new array
2024      */
2025     public static ScriptObject allocateArguments(final Object[] arguments, final Object callee, final int numParams) {
2026         return NativeArguments.allocate(arguments, (ScriptFunction)callee, numParams);


2274     }
2275 
2276     private void init(final ScriptEngine eng) {
2277         assert Context.getGlobal() == this : "this global is not set as current";
2278 
2279         final ScriptEnvironment env = getContext().getEnv();
2280 
2281         // initialize Function and Object constructor
2282         initFunctionAndObject();
2283 
2284         // Now fix Global's own proto.
2285         this.setInitialProto(getObjectPrototype());
2286 
2287         // initialize global function properties
2288         this.eval = this.builtinEval = ScriptFunction.createBuiltin("eval", EVAL);
2289 
2290         this.parseInt = ScriptFunction.createBuiltin("parseInt",   GlobalFunctions.PARSEINT,
2291                     new Specialization[] {
2292                     new Specialization(GlobalFunctions.PARSEINT_Z),
2293                     new Specialization(GlobalFunctions.PARSEINT_I),
2294                     new Specialization(GlobalFunctions.PARSEINT_J),
2295                     new Specialization(GlobalFunctions.PARSEINT_OI),
2296                     new Specialization(GlobalFunctions.PARSEINT_O) });
2297         this.parseFloat = ScriptFunction.createBuiltin("parseFloat", GlobalFunctions.PARSEFLOAT);
2298         this.isNaN = ScriptFunction.createBuiltin("isNaN",   GlobalFunctions.IS_NAN,
2299                    new Specialization[] {
2300                         new Specialization(GlobalFunctions.IS_NAN_I),
2301                         new Specialization(GlobalFunctions.IS_NAN_J),
2302                         new Specialization(GlobalFunctions.IS_NAN_D) });
2303         this.parseFloat         = ScriptFunction.createBuiltin("parseFloat", GlobalFunctions.PARSEFLOAT);
2304         this.isNaN              = ScriptFunction.createBuiltin("isNaN",      GlobalFunctions.IS_NAN);
2305         this.isFinite           = ScriptFunction.createBuiltin("isFinite",   GlobalFunctions.IS_FINITE);
2306         this.encodeURI          = ScriptFunction.createBuiltin("encodeURI",  GlobalFunctions.ENCODE_URI);
2307         this.encodeURIComponent = ScriptFunction.createBuiltin("encodeURIComponent", GlobalFunctions.ENCODE_URICOMPONENT);
2308         this.decodeURI          = ScriptFunction.createBuiltin("decodeURI",  GlobalFunctions.DECODE_URI);
2309         this.decodeURIComponent = ScriptFunction.createBuiltin("decodeURIComponent", GlobalFunctions.DECODE_URICOMPONENT);
2310         this.escape             = ScriptFunction.createBuiltin("escape",     GlobalFunctions.ESCAPE);
2311         this.unescape           = ScriptFunction.createBuiltin("unescape",   GlobalFunctions.UNESCAPE);
2312         this.print              = ScriptFunction.createBuiltin("print",      env._print_no_newline ? PRINT : PRINTLN);
2313         this.load               = ScriptFunction.createBuiltin("load",       LOAD);
2314         this.loadWithNewGlobal  = ScriptFunction.createBuiltin("loadWithNewGlobal", LOAD_WITH_NEW_GLOBAL);




1089         init(eng);
1090     }
1091 
1092     /**
1093      * Wrap a Java object as corresponding script object
1094      *
1095      * @param obj object to wrap
1096      * @return    wrapped object
1097      */
1098     public Object wrapAsObject(final Object obj) {
1099         if (obj instanceof Boolean) {
1100             return new NativeBoolean((Boolean)obj, this);
1101         } else if (obj instanceof Number) {
1102             return new NativeNumber(((Number)obj).doubleValue(), this);
1103         } else if (isString(obj)) {
1104             return new NativeString((CharSequence)obj, this);
1105         } else if (obj instanceof Object[]) { // extension
1106             return new NativeArray(ArrayData.allocate((Object[])obj), this);
1107         } else if (obj instanceof double[]) { // extension
1108             return new NativeArray(ArrayData.allocate((double[])obj), this);


1109         } else if (obj instanceof int[]) {
1110             return new NativeArray(ArrayData.allocate((int[]) obj), this);
1111         } else if (obj instanceof ArrayData) {
1112             return new NativeArray((ArrayData) obj, this);
1113         } else if (obj instanceof Symbol) {
1114             return new NativeSymbol((Symbol) obj, this);
1115         } else {
1116             // FIXME: more special cases? Map? List?
1117             return obj;
1118         }
1119     }
1120 
1121     /**
1122      * Lookup helper for JS primitive types
1123      *
1124      * @param request the link request for the dynamic call site.
1125      * @param self     self reference
1126      *
1127      * @return guarded invocation
1128      */


1975 
1976             if (value == ScriptRuntime.EMPTY) {
1977                 arrayData = arrayData.delete(index);
1978             }
1979         }
1980 
1981         return new NativeArray(arrayData);
1982     }
1983 
1984     /**
1985      * Allocate a new number array.
1986      *
1987      * @param initial number values.
1988      * @return the new array
1989      */
1990     public static NativeArray allocate(final double[] initial) {
1991         return new NativeArray(ArrayData.allocate(initial));
1992     }
1993 
1994     /**










1995      * Allocate a new integer array.
1996      *
1997      * @param initial number values.
1998      * @return the new array
1999      */
2000     public static NativeArray allocate(final int[] initial) {
2001         return new NativeArray(ArrayData.allocate(initial));
2002     }
2003 
2004     /**
2005      * Allocate a new object array for arguments.
2006      *
2007      * @param arguments initial arguments passed.
2008      * @param callee reference to the function that uses arguments object
2009      * @param numParams actual number of declared parameters
2010      *
2011      * @return the new array
2012      */
2013     public static ScriptObject allocateArguments(final Object[] arguments, final Object callee, final int numParams) {
2014         return NativeArguments.allocate(arguments, (ScriptFunction)callee, numParams);


2262     }
2263 
2264     private void init(final ScriptEngine eng) {
2265         assert Context.getGlobal() == this : "this global is not set as current";
2266 
2267         final ScriptEnvironment env = getContext().getEnv();
2268 
2269         // initialize Function and Object constructor
2270         initFunctionAndObject();
2271 
2272         // Now fix Global's own proto.
2273         this.setInitialProto(getObjectPrototype());
2274 
2275         // initialize global function properties
2276         this.eval = this.builtinEval = ScriptFunction.createBuiltin("eval", EVAL);
2277 
2278         this.parseInt = ScriptFunction.createBuiltin("parseInt",   GlobalFunctions.PARSEINT,
2279                     new Specialization[] {
2280                     new Specialization(GlobalFunctions.PARSEINT_Z),
2281                     new Specialization(GlobalFunctions.PARSEINT_I),

2282                     new Specialization(GlobalFunctions.PARSEINT_OI),
2283                     new Specialization(GlobalFunctions.PARSEINT_O) });
2284         this.parseFloat = ScriptFunction.createBuiltin("parseFloat", GlobalFunctions.PARSEFLOAT);
2285         this.isNaN = ScriptFunction.createBuiltin("isNaN",   GlobalFunctions.IS_NAN,
2286                    new Specialization[] {
2287                         new Specialization(GlobalFunctions.IS_NAN_I),
2288                         new Specialization(GlobalFunctions.IS_NAN_J),
2289                         new Specialization(GlobalFunctions.IS_NAN_D) });
2290         this.parseFloat         = ScriptFunction.createBuiltin("parseFloat", GlobalFunctions.PARSEFLOAT);
2291         this.isNaN              = ScriptFunction.createBuiltin("isNaN",      GlobalFunctions.IS_NAN);
2292         this.isFinite           = ScriptFunction.createBuiltin("isFinite",   GlobalFunctions.IS_FINITE);
2293         this.encodeURI          = ScriptFunction.createBuiltin("encodeURI",  GlobalFunctions.ENCODE_URI);
2294         this.encodeURIComponent = ScriptFunction.createBuiltin("encodeURIComponent", GlobalFunctions.ENCODE_URICOMPONENT);
2295         this.decodeURI          = ScriptFunction.createBuiltin("decodeURI",  GlobalFunctions.DECODE_URI);
2296         this.decodeURIComponent = ScriptFunction.createBuiltin("decodeURIComponent", GlobalFunctions.DECODE_URICOMPONENT);
2297         this.escape             = ScriptFunction.createBuiltin("escape",     GlobalFunctions.ESCAPE);
2298         this.unescape           = ScriptFunction.createBuiltin("unescape",   GlobalFunctions.UNESCAPE);
2299         this.print              = ScriptFunction.createBuiltin("print",      env._print_no_newline ? PRINT : PRINTLN);
2300         this.load               = ScriptFunction.createBuiltin("load",       LOAD);
2301         this.loadWithNewGlobal  = ScriptFunction.createBuiltin("loadWithNewGlobal", LOAD_WITH_NEW_GLOBAL);


< prev index next >