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

Print this page
rev 755 : 8035948: Redesign property listeners for shared classes
Reviewed-by: sundar, lagergren
rev 758 : 8021350: Share script classes between threads/globals within context
Reviewed-by: lagergren, sundar
rev 760 : 8037400: Remove getInitialMap getters and GlobalObject interface
Reviewed-by: lagergren, jlaskey, attila

*** 28,37 **** --- 28,38 ---- import static jdk.nashorn.internal.runtime.ECMAErrors.typeError; import static jdk.nashorn.internal.lookup.Lookup.MH; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; + import java.lang.invoke.MethodType; import jdk.internal.dynalink.linker.GuardedInvocation; import jdk.internal.dynalink.linker.LinkRequest; import jdk.nashorn.internal.objects.annotations.Attribute; import jdk.nashorn.internal.objects.annotations.Constructor; import jdk.nashorn.internal.objects.annotations.Function;
*** 48,73 **** @ScriptClass("Boolean") public final class NativeBoolean extends ScriptObject { private final boolean value; ! final static MethodHandle WRAPFILTER = findWrapFilter(); // initialized by nasgen private static PropertyMap $nasgenmap$; - static PropertyMap getInitialMap() { - return $nasgenmap$; - } - private NativeBoolean(final boolean value, final ScriptObject proto, final PropertyMap map) { super(proto, map); this.value = value; } NativeBoolean(final boolean flag, final Global global) { ! this(flag, global.getBooleanPrototype(), global.getBooleanMap()); } NativeBoolean(final boolean flag) { this(flag, Global.instance()); } --- 49,73 ---- @ScriptClass("Boolean") public final class NativeBoolean extends ScriptObject { private final boolean value; ! // Method handle to create an object wrapper for a primitive boolean ! private static final MethodHandle WRAPFILTER = findOwnMH("wrapFilter", MH.type(NativeBoolean.class, Object.class)); ! // Method handle to retrieve the Boolean prototype object ! private static final MethodHandle PROTOFILTER = findOwnMH("protoFilter", MH.type(Object.class, Object.class)); // initialized by nasgen private static PropertyMap $nasgenmap$; private NativeBoolean(final boolean value, final ScriptObject proto, final PropertyMap map) { super(proto, map); this.value = value; } NativeBoolean(final boolean flag, final Global global) { ! this(flag, global.getBooleanPrototype(), $nasgenmap$); } NativeBoolean(final boolean flag) { this(flag, Global.instance()); }
*** 162,172 **** * @param request The link request * @param receiver The receiver for the call * @return Link to be invoked at call site. */ public static GuardedInvocation lookupPrimitive(final LinkRequest request, final Object receiver) { ! return PrimitiveLookup.lookupPrimitive(request, Boolean.class, new NativeBoolean((Boolean)receiver), WRAPFILTER); } /** * Wrap a native string in a NativeString object. * --- 162,172 ---- * @param request The link request * @param receiver The receiver for the call * @return Link to be invoked at call site. */ public static GuardedInvocation lookupPrimitive(final LinkRequest request, final Object receiver) { ! return PrimitiveLookup.lookupPrimitive(request, Boolean.class, new NativeBoolean((Boolean)receiver), WRAPFILTER, PROTOFILTER); } /** * Wrap a native string in a NativeString object. *
*** 176,184 **** @SuppressWarnings("unused") private static NativeBoolean wrapFilter(final Object receiver) { return new NativeBoolean((Boolean)receiver); } ! private static MethodHandle findWrapFilter() { ! return MH.findStatic(MethodHandles.lookup(), NativeBoolean.class, "wrapFilter", MH.type(NativeBoolean.class, Object.class)); } } --- 176,189 ---- @SuppressWarnings("unused") private static NativeBoolean wrapFilter(final Object receiver) { return new NativeBoolean((Boolean)receiver); } ! @SuppressWarnings("unused") ! private static Object protoFilter(final Object object) { ! return Global.instance().getBooleanPrototype(); ! } ! ! private static MethodHandle findOwnMH(final String name, final MethodType type) { ! return MH.findStatic(MethodHandles.lookup(), NativeBoolean.class, name, type); } }