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

Print this page

        

*** 32,41 **** --- 32,42 ---- import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED; import static jdk.nashorn.internal.lookup.Lookup.MH; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; + import java.lang.invoke.MethodType; import java.text.NumberFormat; import java.util.Locale; import jdk.internal.dynalink.linker.GuardedInvocation; import jdk.internal.dynalink.linker.LinkRequest; import jdk.nashorn.internal.objects.annotations.Attribute;
*** 55,65 **** * */ @ScriptClass("Number") public final class NativeNumber extends ScriptObject { ! static final MethodHandle WRAPFILTER = findWrapFilter(); /** ECMA 15.7.3.2 largest positive finite value */ @Property(attributes = Attribute.NON_ENUMERABLE_CONSTANT, where = Where.CONSTRUCTOR) public static final double MAX_VALUE = Double.MAX_VALUE; --- 56,67 ---- * */ @ScriptClass("Number") public final class NativeNumber extends ScriptObject { ! static final MethodHandle WRAPFILTER = findOwnMH("wrapFilter", MH.type(NativeNumber.class, Object.class)); ! static final MethodHandle PROTOFILTER = findOwnMH("protoFilter", MH.type(Object.class, Object.class)); /** ECMA 15.7.3.2 largest positive finite value */ @Property(attributes = Attribute.NON_ENUMERABLE_CONSTANT, where = Where.CONSTRUCTOR) public static final double MAX_VALUE = Double.MAX_VALUE;
*** 320,337 **** * @param request The link request * @param receiver receiver of call * @return Link to be invoked at call site. */ public static GuardedInvocation lookupPrimitive(final LinkRequest request, final Object receiver) { ! return PrimitiveLookup.lookupPrimitive(request, Number.class, new NativeNumber(((Number)receiver).doubleValue()), WRAPFILTER); } @SuppressWarnings("unused") private static NativeNumber wrapFilter(final Object receiver) { return new NativeNumber(((Number)receiver).doubleValue()); } private static double getNumberValue(final Object self) { if (self instanceof Number) { return ((Number)self).doubleValue(); } else if (self instanceof NativeNumber) { return ((NativeNumber)self).getValue(); --- 322,344 ---- * @param request The link request * @param receiver receiver of call * @return Link to be invoked at call site. */ public static GuardedInvocation lookupPrimitive(final LinkRequest request, final Object receiver) { ! return PrimitiveLookup.lookupPrimitive(request, Number.class, new NativeNumber(((Number)receiver).doubleValue()), WRAPFILTER, PROTOFILTER); } @SuppressWarnings("unused") private static NativeNumber wrapFilter(final Object receiver) { return new NativeNumber(((Number)receiver).doubleValue()); } + @SuppressWarnings("unused") + private static Object protoFilter(final Object object) { + return Global.instance().getNumberPrototype(); + } + private static double getNumberValue(final Object self) { if (self instanceof Number) { return ((Number)self).doubleValue(); } else if (self instanceof NativeNumber) { return ((NativeNumber)self).getValue();
*** 376,384 **** + str.substring(index + expPadding); } return str; } ! private static MethodHandle findWrapFilter() { ! return MH.findStatic(MethodHandles.lookup(), NativeNumber.class, "wrapFilter", MH.type(NativeNumber.class, Object.class)); } } --- 383,391 ---- + str.substring(index + expPadding); } return str; } ! private static MethodHandle findOwnMH(final String name, final MethodType type) { ! return MH.findStatic(MethodHandles.lookup(), NativeNumber.class, name, type); } }