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);
}
}