< prev index next >

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

Print this page

        

*** 86,103 **** /** * Representation of global scope. */ @ScriptClass("Global") public final class Global extends Scope { ! // Placeholder value used in place of a location property (__FILE__, __DIR__, __LINE__) ! private static final Object LOCATION_PROPERTY_PLACEHOLDER = new Object(); private final InvokeByName TO_STRING = new InvokeByName("toString", ScriptObject.class); private final InvokeByName VALUE_OF = new InvokeByName("valueOf", ScriptObject.class); - // placeholder value for lazily initialized global objects - private static final Object LAZY_SENTINEL = new Object(); - /** * Optimistic builtin names that require switchpoint invalidation * upon assignment. Overly conservative, but works for now, to avoid * any complicated scope checks and especially heavy weight guards * like --- 86,103 ---- /** * Representation of global scope. */ @ScriptClass("Global") public final class Global extends Scope { ! // This special value is used to flag a lazily initialized global property. ! // This also serves as placeholder value used in place of a location property ! // (__FILE__, __DIR__, __LINE__) ! private static final Object LAZY_SENTINEL = new Object(); ! private final InvokeByName TO_STRING = new InvokeByName("toString", ScriptObject.class); private final InvokeByName VALUE_OF = new InvokeByName("valueOf", ScriptObject.class); /** * Optimistic builtin names that require switchpoint invalidation * upon assignment. Overly conservative, but works for now, to avoid * any complicated scope checks and especially heavy weight guards * like
*** 180,198 **** @Property(attributes = Attribute.NOT_ENUMERABLE) public Object quit; /** Value property NaN of the Global Object - ECMA 15.1.1.1 NaN */ @Property(attributes = Attribute.NON_ENUMERABLE_CONSTANT) ! public final double NaN = Double.NaN; /** Value property Infinity of the Global Object - ECMA 15.1.1.2 Infinity */ @Property(attributes = Attribute.NON_ENUMERABLE_CONSTANT) ! public final double Infinity = Double.POSITIVE_INFINITY; /** Value property Undefined of the Global Object - ECMA 15.1.1.3 Undefined */ @Property(attributes = Attribute.NON_ENUMERABLE_CONSTANT) ! public final Object undefined = UNDEFINED; /** ECMA 15.1.2.1 eval(x) */ @Property(attributes = Attribute.NOT_ENUMERABLE) public Object eval; --- 180,198 ---- @Property(attributes = Attribute.NOT_ENUMERABLE) public Object quit; /** Value property NaN of the Global Object - ECMA 15.1.1.1 NaN */ @Property(attributes = Attribute.NON_ENUMERABLE_CONSTANT) ! public static final double NaN = Double.NaN; /** Value property Infinity of the Global Object - ECMA 15.1.1.2 Infinity */ @Property(attributes = Attribute.NON_ENUMERABLE_CONSTANT) ! public static final double Infinity = Double.POSITIVE_INFINITY; /** Value property Undefined of the Global Object - ECMA 15.1.1.3 Undefined */ @Property(attributes = Attribute.NON_ENUMERABLE_CONSTANT) ! public static final Object undefined = UNDEFINED; /** ECMA 15.1.2.1 eval(x) */ @Property(attributes = Attribute.NOT_ENUMERABLE) public Object eval;
*** 828,846 **** private volatile Object javaApi; /** Nashorn extension: current script's file name */ @Property(name = "__FILE__", attributes = Attribute.NON_ENUMERABLE_CONSTANT) ! public final Object __FILE__ = LOCATION_PROPERTY_PLACEHOLDER; /** Nashorn extension: current script's directory */ @Property(name = "__DIR__", attributes = Attribute.NON_ENUMERABLE_CONSTANT) ! public final Object __DIR__ = LOCATION_PROPERTY_PLACEHOLDER; /** Nashorn extension: current source line number being executed */ @Property(name = "__LINE__", attributes = Attribute.NON_ENUMERABLE_CONSTANT) ! public final Object __LINE__ = LOCATION_PROPERTY_PLACEHOLDER; private volatile NativeDate DEFAULT_DATE; /** Used as Date.prototype's default value */ NativeDate getDefaultDate() { --- 828,846 ---- private volatile Object javaApi; /** Nashorn extension: current script's file name */ @Property(name = "__FILE__", attributes = Attribute.NON_ENUMERABLE_CONSTANT) ! public static final Object __FILE__ = LAZY_SENTINEL; /** Nashorn extension: current script's directory */ @Property(name = "__DIR__", attributes = Attribute.NON_ENUMERABLE_CONSTANT) ! public static final Object __DIR__ = LAZY_SENTINEL; /** Nashorn extension: current source line number being executed */ @Property(name = "__LINE__", attributes = Attribute.NON_ENUMERABLE_CONSTANT) ! public static final Object __LINE__ = LAZY_SENTINEL; private volatile NativeDate DEFAULT_DATE; /** Used as Date.prototype's default value */ NativeDate getDefaultDate() {
*** 2018,2028 **** * Called from runtime internals to check if the passed value is a location property placeholder. * @param placeholder the value tested for being a placeholder for a location property * @return true if the value is a placeholder, false otherwise. */ public static boolean isLocationPropertyPlaceholder(final Object placeholder) { ! return placeholder == LOCATION_PROPERTY_PLACEHOLDER; } /** * Create a new RegExp object. * --- 2018,2028 ---- * Called from runtime internals to check if the passed value is a location property placeholder. * @param placeholder the value tested for being a placeholder for a location property * @return true if the value is a placeholder, false otherwise. */ public static boolean isLocationPropertyPlaceholder(final Object placeholder) { ! return placeholder == LAZY_SENTINEL; } /** * Create a new RegExp object. *
< prev index next >