nashorn/src/jdk/internal/dynalink/support/RuntimeContextLinkRequestImpl.java
changeset 24719 f726e9d67629
parent 16245 6a1c6c8bc113
child 24720 75f8388b79df
equal deleted inserted replaced
23083:8c74590d5df1 24719:f726e9d67629
    99 
    99 
   100     /**
   100     /**
   101      * Creates a new link request.
   101      * Creates a new link request.
   102      *
   102      *
   103      * @param callSiteDescriptor the descriptor for the call site being linked
   103      * @param callSiteDescriptor the descriptor for the call site being linked
       
   104      * @param callSiteToken the opaque token for the call site being linked.
   104      * @param arguments the arguments for the invocation
   105      * @param arguments the arguments for the invocation
   105      * @param callSiteUnstable true if the call site being linked is considered unstable
   106      * @param callSiteUnstable true if the call site being linked is considered unstable
   106      * @param runtimeContextArgCount the number of the leading arguments on the stack that represent the language
   107      * @param runtimeContextArgCount the number of the leading arguments on the stack that represent the language
   107      * runtime specific context arguments.
   108      * runtime specific context arguments.
   108      * @throws IllegalArgumentException if runtimeContextArgCount is less than 1.
   109      * @throws IllegalArgumentException if runtimeContextArgCount is less than 1.
   109      */
   110      */
   110     public RuntimeContextLinkRequestImpl(CallSiteDescriptor callSiteDescriptor, boolean callSiteUnstable,
   111     public RuntimeContextLinkRequestImpl(CallSiteDescriptor callSiteDescriptor, Object callSiteToken,
   111             Object[] arguments, int runtimeContextArgCount) {
   112             boolean callSiteUnstable, Object[] arguments, int runtimeContextArgCount) {
   112         super(callSiteDescriptor, callSiteUnstable, arguments);
   113         super(callSiteDescriptor, callSiteToken, callSiteUnstable, arguments);
   113         if(runtimeContextArgCount < 1) {
   114         if(runtimeContextArgCount < 1) {
   114             throw new IllegalArgumentException("runtimeContextArgCount < 1");
   115             throw new IllegalArgumentException("runtimeContextArgCount < 1");
   115         }
   116         }
   116         this.runtimeContextArgCount = runtimeContextArgCount;
   117         this.runtimeContextArgCount = runtimeContextArgCount;
   117     }
   118     }
   119     @Override
   120     @Override
   120     public LinkRequest withoutRuntimeContext() {
   121     public LinkRequest withoutRuntimeContext() {
   121         if(contextStrippedRequest == null) {
   122         if(contextStrippedRequest == null) {
   122             contextStrippedRequest =
   123             contextStrippedRequest =
   123                     new LinkRequestImpl(CallSiteDescriptorFactory.dropParameterTypes(getCallSiteDescriptor(), 1,
   124                     new LinkRequestImpl(CallSiteDescriptorFactory.dropParameterTypes(getCallSiteDescriptor(), 1,
   124                             runtimeContextArgCount + 1), isCallSiteUnstable(), getTruncatedArguments());
   125                             runtimeContextArgCount + 1), getCallSiteToken(), isCallSiteUnstable(), getTruncatedArguments());
   125         }
   126         }
   126         return contextStrippedRequest;
   127         return contextStrippedRequest;
   127     }
   128     }
   128 
   129 
   129     @Override
   130     @Override
   130     public LinkRequest replaceArguments(CallSiteDescriptor callSiteDescriptor, Object[] arguments) {
   131     public LinkRequest replaceArguments(CallSiteDescriptor callSiteDescriptor, Object[] arguments) {
   131         return new RuntimeContextLinkRequestImpl(callSiteDescriptor, isCallSiteUnstable(), arguments,
   132         return new RuntimeContextLinkRequestImpl(callSiteDescriptor, getCallSiteToken(), isCallSiteUnstable(), arguments,
   132                 runtimeContextArgCount);
   133                 runtimeContextArgCount);
   133     }
   134     }
   134 
   135 
   135     private Object[] getTruncatedArguments() {
   136     private Object[] getTruncatedArguments() {
   136         final Object[] args = getArguments();
   137         final Object[] args = getArguments();