src/jdk/nashorn/internal/objects/Global.java
Print this page
@@ -410,10 +410,18 @@
private static final MethodHandle EXIT = findOwnMH("exit", Object.class, Object.class, Object.class);
// initialized by nasgen
private static PropertyMap $nasgenmap$;
+ // context to which this global belongs to
+ private final Context context;
+
+ @Override
+ protected Context getContext() {
+ return context;
+ }
+
// performs initialization checks for Global constructor and returns the
// PropertyMap, if everything is fine.
private static PropertyMap checkAndGetMap(final Context context) {
// security check first
final SecurityManager sm = System.getSecurityManager();
@@ -437,11 +445,11 @@
*
* @param context the context
*/
public Global(final Context context) {
super(checkAndGetMap(context));
- this.setContext(context);
+ this.context = context;
this.setIsScope();
final int cacheSize = context.getEnv()._class_cache_size;
if (cacheSize > 0) {
classCache = new ClassCache(cacheSize);
@@ -480,10 +488,20 @@
}
// GlobalObject interface implementation
@Override
+ public boolean isOfContext(final Context context) {
+ return this.context == context;
+ }
+
+ @Override
+ public boolean isStrictContext() {
+ return context.getEnv()._strict;
+ }
+
+ @Override
public void initBuiltinObjects() {
if (this.builtinObject != null) {
// already initialized, just return
return;
}
@@ -1763,11 +1781,11 @@
// Nashorn extension: global.$ENV (scripting-mode-only)
if (System.getSecurityManager() == null) {
// do not fill $ENV if we have a security manager around
// Retrieve current state of ENV variables.
final ScriptObject env = newObject();
- env.putAll(System.getenv());
+ env.putAll(System.getenv(), scriptEnv._strict);
addOwnProperty(ScriptingFunctions.ENV_NAME, Attribute.NOT_ENUMERABLE, env);
} else {
addOwnProperty(ScriptingFunctions.ENV_NAME, Attribute.NOT_ENUMERABLE, UNDEFINED);
}