24 */
25
26 package jdk.nashorn.internal.objects;
27
28 import static jdk.nashorn.internal.lookup.Lookup.MH;
29 import static jdk.nashorn.internal.runtime.ECMAErrors.referenceError;
30 import static jdk.nashorn.internal.runtime.ECMAErrors.typeError;
31 import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED;
32
33 import java.io.IOException;
34 import java.io.PrintWriter;
35 import java.lang.invoke.MethodHandle;
36 import java.lang.invoke.MethodHandles;
37 import java.lang.invoke.MethodType;
38 import java.lang.invoke.SwitchPoint;
39 import java.lang.reflect.Field;
40 import java.util.ArrayList;
41 import java.util.Arrays;
42 import java.util.List;
43 import java.util.Map;
44 import java.util.concurrent.Callable;
45 import java.util.concurrent.ConcurrentHashMap;
46 import javax.script.ScriptContext;
47 import javax.script.ScriptEngine;
48 import jdk.internal.dynalink.CallSiteDescriptor;
49 import jdk.internal.dynalink.linker.GuardedInvocation;
50 import jdk.internal.dynalink.linker.LinkRequest;
51 import jdk.nashorn.api.scripting.ClassFilter;
52 import jdk.nashorn.api.scripting.ScriptObjectMirror;
53 import jdk.nashorn.internal.lookup.Lookup;
54 import jdk.nashorn.internal.objects.annotations.Attribute;
55 import jdk.nashorn.internal.objects.annotations.Property;
56 import jdk.nashorn.internal.objects.annotations.ScriptClass;
57 import jdk.nashorn.internal.runtime.ConsString;
58 import jdk.nashorn.internal.runtime.Context;
59 import jdk.nashorn.internal.runtime.ECMAErrors;
60 import jdk.nashorn.internal.runtime.GlobalConstants;
61 import jdk.nashorn.internal.runtime.GlobalFunctions;
62 import jdk.nashorn.internal.runtime.JSType;
63 import jdk.nashorn.internal.runtime.NativeJavaPackage;
446 * @param scontext script context
447 */
448 public void setScriptContext(final ScriptContext scontext) {
449 this.scontext = scontext;
450 }
451
452 @Override
453 protected Context getContext() {
454 return context;
455 }
456
457 // performs initialization checks for Global constructor and returns the
458 // PropertyMap, if everything is fine.
459 private static PropertyMap checkAndGetMap(final Context context) {
460 // security check first
461 final SecurityManager sm = System.getSecurityManager();
462 if (sm != null) {
463 sm.checkPermission(new RuntimePermission(Context.NASHORN_CREATE_GLOBAL));
464 }
465
466 // null check on context
467 context.getClass();
468
469 return $nasgenmap$;
470 }
471
472 /**
473 * Constructor
474 *
475 * @param context the context
476 */
477 public Global(final Context context) {
478 super(checkAndGetMap(context));
479 this.context = context;
480 this.setIsScope();
481 this.lexicalScope = context.getEnv()._es6 ? new LexicalScope(this) : null;
482 }
483
484 /**
485 * Script access to "current" Global instance
486 *
487 * @return the global singleton
488 */
489 public static Global instance() {
490 final Global global = Context.getGlobal();
491 global.getClass(); // null check
492 return global;
493 }
494
495 private static Global instanceFrom(final Object self) {
496 return self instanceof Global? (Global)self : instance();
497 }
498
499 /**
500 * Check if we have a Global instance
501 * @return true if one exists
502 */
503 public static boolean hasInstance() {
504 return Context.getGlobal() != null;
505 }
506
507 /**
508 * Script access to {@link ScriptEnvironment}
509 *
510 * @return the script environment
511 */
|
24 */
25
26 package jdk.nashorn.internal.objects;
27
28 import static jdk.nashorn.internal.lookup.Lookup.MH;
29 import static jdk.nashorn.internal.runtime.ECMAErrors.referenceError;
30 import static jdk.nashorn.internal.runtime.ECMAErrors.typeError;
31 import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED;
32
33 import java.io.IOException;
34 import java.io.PrintWriter;
35 import java.lang.invoke.MethodHandle;
36 import java.lang.invoke.MethodHandles;
37 import java.lang.invoke.MethodType;
38 import java.lang.invoke.SwitchPoint;
39 import java.lang.reflect.Field;
40 import java.util.ArrayList;
41 import java.util.Arrays;
42 import java.util.List;
43 import java.util.Map;
44 import java.util.Objects;
45 import java.util.concurrent.Callable;
46 import java.util.concurrent.ConcurrentHashMap;
47 import javax.script.ScriptContext;
48 import javax.script.ScriptEngine;
49 import jdk.internal.dynalink.CallSiteDescriptor;
50 import jdk.internal.dynalink.linker.GuardedInvocation;
51 import jdk.internal.dynalink.linker.LinkRequest;
52 import jdk.nashorn.api.scripting.ClassFilter;
53 import jdk.nashorn.api.scripting.ScriptObjectMirror;
54 import jdk.nashorn.internal.lookup.Lookup;
55 import jdk.nashorn.internal.objects.annotations.Attribute;
56 import jdk.nashorn.internal.objects.annotations.Property;
57 import jdk.nashorn.internal.objects.annotations.ScriptClass;
58 import jdk.nashorn.internal.runtime.ConsString;
59 import jdk.nashorn.internal.runtime.Context;
60 import jdk.nashorn.internal.runtime.ECMAErrors;
61 import jdk.nashorn.internal.runtime.GlobalConstants;
62 import jdk.nashorn.internal.runtime.GlobalFunctions;
63 import jdk.nashorn.internal.runtime.JSType;
64 import jdk.nashorn.internal.runtime.NativeJavaPackage;
447 * @param scontext script context
448 */
449 public void setScriptContext(final ScriptContext scontext) {
450 this.scontext = scontext;
451 }
452
453 @Override
454 protected Context getContext() {
455 return context;
456 }
457
458 // performs initialization checks for Global constructor and returns the
459 // PropertyMap, if everything is fine.
460 private static PropertyMap checkAndGetMap(final Context context) {
461 // security check first
462 final SecurityManager sm = System.getSecurityManager();
463 if (sm != null) {
464 sm.checkPermission(new RuntimePermission(Context.NASHORN_CREATE_GLOBAL));
465 }
466
467 Objects.requireNonNull(context);
468
469 return $nasgenmap$;
470 }
471
472 /**
473 * Constructor
474 *
475 * @param context the context
476 */
477 public Global(final Context context) {
478 super(checkAndGetMap(context));
479 this.context = context;
480 this.setIsScope();
481 this.lexicalScope = context.getEnv()._es6 ? new LexicalScope(this) : null;
482 }
483
484 /**
485 * Script access to "current" Global instance
486 *
487 * @return the global singleton
488 */
489 public static Global instance() {
490 final Global global = Context.getGlobal();
491 Objects.requireNonNull(global);
492 return global;
493 }
494
495 private static Global instanceFrom(final Object self) {
496 return self instanceof Global? (Global)self : instance();
497 }
498
499 /**
500 * Check if we have a Global instance
501 * @return true if one exists
502 */
503 public static boolean hasInstance() {
504 return Context.getGlobal() != null;
505 }
506
507 /**
508 * Script access to {@link ScriptEnvironment}
509 *
510 * @return the script environment
511 */
|