nashorn/src/jdk/nashorn/internal/objects/NativeObject.java
changeset 24752 c835f368e8e0
parent 24738 be2026c9717c
child 24769 de4dcfa9380f
equal deleted inserted replaced
24751:ccbd9cd3f720 24752:c835f368e8e0
    36 import java.util.Collection;
    36 import java.util.Collection;
    37 import java.util.HashSet;
    37 import java.util.HashSet;
    38 import java.util.List;
    38 import java.util.List;
    39 import java.util.Set;
    39 import java.util.Set;
    40 import java.util.concurrent.Callable;
    40 import java.util.concurrent.Callable;
    41 
       
    42 import jdk.internal.dynalink.beans.BeansLinker;
    41 import jdk.internal.dynalink.beans.BeansLinker;
    43 import jdk.internal.dynalink.beans.StaticClass;
    42 import jdk.internal.dynalink.beans.StaticClass;
    44 import jdk.internal.dynalink.linker.GuardedInvocation;
    43 import jdk.internal.dynalink.linker.GuardedInvocation;
    45 import jdk.internal.dynalink.linker.GuardingDynamicLinker;
    44 import jdk.internal.dynalink.linker.GuardingDynamicLinker;
    46 import jdk.internal.dynalink.linker.LinkRequest;
    45 import jdk.internal.dynalink.linker.LinkRequest;
   416      * @param value  value of object to be instantiated
   415      * @param value  value of object to be instantiated
   417      * @return the new NativeObject
   416      * @return the new NativeObject
   418      */
   417      */
   419     @Constructor
   418     @Constructor
   420     public static Object construct(final boolean newObj, final Object self, final Object value) {
   419     public static Object construct(final boolean newObj, final Object self, final Object value) {
   421         final JSType type = JSType.of(value);
   420         final JSType type = JSType.ofNoFunction(value);
   422 
   421 
   423         // Object(null), Object(undefined), Object() are same as "new Object()"
   422         // Object(null), Object(undefined), Object() are same as "new Object()"
   424 
   423 
   425         if (newObj || type == JSType.NULL || type == JSType.UNDEFINED) {
   424         if (newObj || type == JSType.NULL || type == JSType.UNDEFINED) {
   426             switch (type) {
   425             switch (type) {
   427             case BOOLEAN:
   426             case BOOLEAN:
   428             case NUMBER:
   427             case NUMBER:
   429             case STRING:
   428             case STRING:
   430                 return Global.toObject(value);
   429                 return Global.toObject(value);
   431             case OBJECT:
   430             case OBJECT:
   432             case FUNCTION:
       
   433                 return value;
   431                 return value;
   434             case NULL:
   432             case NULL:
   435             case UNDEFINED:
   433             case UNDEFINED:
   436                 // fall through..
   434                 // fall through..
   437             default:
   435             default: