src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptObject.java
changeset 48354 c96d4c720995
parent 48247 fa5a47cad0c9
child 49257 82f763a9cc22
equal deleted inserted replaced
48353:315c690bb90b 48354:c96d4c720995
   187     public static final Call SET_USER_ACCESSORS = virtualCallNoLookup(ScriptObject.class, "setUserAccessors", void.class, Object.class, ScriptFunction.class, ScriptFunction.class);
   187     public static final Call SET_USER_ACCESSORS = virtualCallNoLookup(ScriptObject.class, "setUserAccessors", void.class, Object.class, ScriptFunction.class, ScriptFunction.class);
   188 
   188 
   189     /** Method handle for generic property setter */
   189     /** Method handle for generic property setter */
   190     public static final Call GENERIC_SET = virtualCallNoLookup(ScriptObject.class, "set", void.class, Object.class, Object.class, int.class);
   190     public static final Call GENERIC_SET = virtualCallNoLookup(ScriptObject.class, "set", void.class, Object.class, Object.class, int.class);
   191 
   191 
       
   192     public static final Call DELETE = virtualCall(MethodHandles.lookup(), ScriptObject.class, "delete", boolean.class, Object.class, boolean.class);
       
   193 
   192     static final MethodHandle[] SET_SLOW = new MethodHandle[] {
   194     static final MethodHandle[] SET_SLOW = new MethodHandle[] {
   193         findOwnMH_V("set", void.class, Object.class, int.class, int.class),
   195         findOwnMH_V("set", void.class, Object.class, int.class, int.class),
   194         findOwnMH_V("set", void.class, Object.class, double.class, int.class),
   196         findOwnMH_V("set", void.class, Object.class, double.class, int.class),
   195         findOwnMH_V("set", void.class, Object.class, Object.class, int.class)
   197         findOwnMH_V("set", void.class, Object.class, Object.class, int.class)
   196     };
   198     };
   199     public static final Call SET_MAP = virtualCallNoLookup(ScriptObject.class, "setMap", void.class, PropertyMap.class);
   201     public static final Call SET_MAP = virtualCallNoLookup(ScriptObject.class, "setMap", void.class, PropertyMap.class);
   200 
   202 
   201     static final MethodHandle CAS_MAP           = findOwnMH_V("compareAndSetMap", boolean.class, PropertyMap.class, PropertyMap.class);
   203     static final MethodHandle CAS_MAP           = findOwnMH_V("compareAndSetMap", boolean.class, PropertyMap.class, PropertyMap.class);
   202     static final MethodHandle EXTENSION_CHECK   = findOwnMH_V("extensionCheck", boolean.class, boolean.class, String.class);
   204     static final MethodHandle EXTENSION_CHECK   = findOwnMH_V("extensionCheck", boolean.class, boolean.class, String.class);
   203     static final MethodHandle ENSURE_SPILL_SIZE = findOwnMH_V("ensureSpillSize", Object.class, int.class);
   205     static final MethodHandle ENSURE_SPILL_SIZE = findOwnMH_V("ensureSpillSize", Object.class, int.class);
       
   206 
       
   207     private static final GuardedInvocation DELETE_GUARDED = new GuardedInvocation(MH.insertArguments(DELETE.methodHandle(), 2, false), NashornGuards.getScriptObjectGuard());
       
   208     private static final GuardedInvocation DELETE_GUARDED_STRICT = new GuardedInvocation(MH.insertArguments(DELETE.methodHandle(), 2, true), NashornGuards.getScriptObjectGuard());
   204 
   209 
   205     /**
   210     /**
   206      * Constructor
   211      * Constructor
   207      */
   212      */
   208     public ScriptObject() {
   213     public ScriptObject() {
  1867                     : findGetIndexMethod(desc, request);
  1872                     : findGetIndexMethod(desc, request);
  1868         case SET:
  1873         case SET:
  1869             return desc.getOperation() instanceof NamedOperation
  1874             return desc.getOperation() instanceof NamedOperation
  1870                     ? findSetMethod(desc, request)
  1875                     ? findSetMethod(desc, request)
  1871                     : findSetIndexMethod(desc, request);
  1876                     : findSetIndexMethod(desc, request);
       
  1877         case REMOVE:
       
  1878             final GuardedInvocation inv = NashornCallSiteDescriptor.isStrict(desc) ? DELETE_GUARDED_STRICT : DELETE_GUARDED;
       
  1879             final Object name = NamedOperation.getName(desc.getOperation());
       
  1880             if (name != null) {
       
  1881                 return inv.replaceMethods(MH.insertArguments(inv.getInvocation(), 1, name), inv.getGuard());
       
  1882             }
       
  1883             return inv;
  1872         case CALL:
  1884         case CALL:
  1873             return findCallMethod(desc, request);
  1885             return findCallMethod(desc, request);
  1874         case NEW:
  1886         case NEW:
  1875             return findNewMethod(desc, request);
  1887             return findNewMethod(desc, request);
  1876         default:
  1888         default: