src/jdk/nashorn/internal/objects/Global.java

Print this page




  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package jdk.nashorn.internal.objects;
  27 
  28 import static jdk.nashorn.internal.runtime.ECMAErrors.typeError;
  29 import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED;
  30 import static jdk.nashorn.internal.runtime.linker.Lookup.MH;
  31 
  32 import java.io.IOException;
  33 import java.io.PrintWriter;
  34 import java.lang.invoke.MethodHandle;
  35 import java.lang.invoke.MethodHandles;
  36 import java.lang.ref.SoftReference;
  37 import java.util.HashMap;
  38 import java.util.LinkedHashMap;
  39 import java.util.List;
  40 import java.util.Map;
  41 import jdk.nashorn.internal.objects.annotations.Attribute;
  42 import jdk.nashorn.internal.objects.annotations.Property;
  43 import jdk.nashorn.internal.objects.annotations.ScriptClass;
  44 import jdk.nashorn.internal.runtime.ConsString;
  45 import jdk.nashorn.internal.runtime.Context;
  46 import jdk.nashorn.internal.runtime.GlobalFunctions;
  47 import jdk.nashorn.internal.runtime.GlobalObject;
  48 import jdk.nashorn.internal.runtime.JSType;
  49 import jdk.nashorn.internal.runtime.NativeJavaPackage;
  50 import jdk.nashorn.internal.runtime.OptionsObject;
  51 import jdk.nashorn.internal.runtime.PropertyDescriptor;
  52 import jdk.nashorn.internal.runtime.Scope;
  53 import jdk.nashorn.internal.runtime.ScriptFunction;
  54 import jdk.nashorn.internal.runtime.ScriptObject;
  55 import jdk.nashorn.internal.runtime.ScriptRuntime;
  56 import jdk.nashorn.internal.runtime.ScriptingFunctions;
  57 import jdk.nashorn.internal.runtime.Source;


 377      * @return true if strict mode enabled in {@link Global#getThisContext()}
 378      */
 379     static boolean isStrict() {
 380         return getThisContext()._strict;
 381     }
 382 
 383     // GlobalObject interface implementation
 384 
 385     @Override
 386     public void initBuiltinObjects() {
 387         if (this.builtinObject != null) {
 388             // already initialized, just return
 389             return;
 390         }
 391 
 392         init();
 393     }
 394 
 395     @Override
 396     public ScriptFunction newScriptFunction(final String name, final MethodHandle handle, final ScriptObject scope, final boolean strict) {
 397         return new ScriptFunctionImpl(name, handle, scope, strict, null);
 398     }
 399 
 400     @Override
 401     public Object wrapAsObject(final Object obj) {
 402         if (obj instanceof Boolean) {
 403             return new NativeBoolean((Boolean)obj);
 404         } else if (obj instanceof Number) {
 405             return new NativeNumber(((Number)obj).doubleValue());
 406         } else if (obj instanceof String || obj instanceof ConsString) {
 407             return new NativeString((CharSequence)obj);
 408         } else if (obj instanceof Object[]) { // extension
 409             return new NativeArray((Object[])obj);
 410         } else if (obj instanceof double[]) { // extension
 411             return new NativeArray((double[])obj);
 412         } else if (obj instanceof long[]) {
 413             return new NativeArray((long[])obj);
 414         } else if (obj instanceof int[]) {
 415             return new NativeArray((int[])obj);
 416         } else {
 417             // FIXME: more special cases? Map? List?




  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package jdk.nashorn.internal.objects;
  27 
  28 import static jdk.nashorn.internal.runtime.ECMAErrors.typeError;
  29 import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED;
  30 import static jdk.nashorn.internal.runtime.linker.Lookup.MH;
  31 
  32 import java.io.IOException;
  33 import java.io.PrintWriter;
  34 import java.lang.invoke.MethodHandle;
  35 import java.lang.invoke.MethodHandles;
  36 import java.lang.ref.SoftReference;

  37 import java.util.LinkedHashMap;
  38 import java.util.List;
  39 import java.util.Map;
  40 import jdk.nashorn.internal.objects.annotations.Attribute;
  41 import jdk.nashorn.internal.objects.annotations.Property;
  42 import jdk.nashorn.internal.objects.annotations.ScriptClass;
  43 import jdk.nashorn.internal.runtime.ConsString;
  44 import jdk.nashorn.internal.runtime.Context;
  45 import jdk.nashorn.internal.runtime.GlobalFunctions;
  46 import jdk.nashorn.internal.runtime.GlobalObject;
  47 import jdk.nashorn.internal.runtime.JSType;
  48 import jdk.nashorn.internal.runtime.NativeJavaPackage;
  49 import jdk.nashorn.internal.runtime.OptionsObject;
  50 import jdk.nashorn.internal.runtime.PropertyDescriptor;
  51 import jdk.nashorn.internal.runtime.Scope;
  52 import jdk.nashorn.internal.runtime.ScriptFunction;
  53 import jdk.nashorn.internal.runtime.ScriptObject;
  54 import jdk.nashorn.internal.runtime.ScriptRuntime;
  55 import jdk.nashorn.internal.runtime.ScriptingFunctions;
  56 import jdk.nashorn.internal.runtime.Source;


 376      * @return true if strict mode enabled in {@link Global#getThisContext()}
 377      */
 378     static boolean isStrict() {
 379         return getThisContext()._strict;
 380     }
 381 
 382     // GlobalObject interface implementation
 383 
 384     @Override
 385     public void initBuiltinObjects() {
 386         if (this.builtinObject != null) {
 387             // already initialized, just return
 388             return;
 389         }
 390 
 391         init();
 392     }
 393 
 394     @Override
 395     public ScriptFunction newScriptFunction(final String name, final MethodHandle handle, final ScriptObject scope, final boolean strict) {
 396         return new ScriptFunctionImpl(name, handle, scope, null, strict, false);
 397     }
 398 
 399     @Override
 400     public Object wrapAsObject(final Object obj) {
 401         if (obj instanceof Boolean) {
 402             return new NativeBoolean((Boolean)obj);
 403         } else if (obj instanceof Number) {
 404             return new NativeNumber(((Number)obj).doubleValue());
 405         } else if (obj instanceof String || obj instanceof ConsString) {
 406             return new NativeString((CharSequence)obj);
 407         } else if (obj instanceof Object[]) { // extension
 408             return new NativeArray((Object[])obj);
 409         } else if (obj instanceof double[]) { // extension
 410             return new NativeArray((double[])obj);
 411         } else if (obj instanceof long[]) {
 412             return new NativeArray((long[])obj);
 413         } else if (obj instanceof int[]) {
 414             return new NativeArray((int[])obj);
 415         } else {
 416             // FIXME: more special cases? Map? List?