nashorn/src/jdk/internal/dynalink/support/LinkRequestImpl.java
changeset 24720 75f8388b79df
parent 24719 f726e9d67629
child 24778 2ff5d7041566
equal deleted inserted replaced
24719:f726e9d67629 24720:75f8388b79df
    96 
    96 
    97     private final CallSiteDescriptor callSiteDescriptor;
    97     private final CallSiteDescriptor callSiteDescriptor;
    98     private final Object callSiteToken;
    98     private final Object callSiteToken;
    99     private final Object[] arguments;
    99     private final Object[] arguments;
   100     private final boolean callSiteUnstable;
   100     private final boolean callSiteUnstable;
       
   101     private final int linkCount;
   101 
   102 
   102     /**
   103     /**
   103      * Creates a new link request.
   104      * Creates a new link request.
   104      *
   105      *
   105      * @param callSiteDescriptor the descriptor for the call site being linked
   106      * @param callSiteDescriptor the descriptor for the call site being linked
   106      * @param callSiteToken the opaque token for the call site being linked.
   107      * @param callSiteToken the opaque token for the call site being linked.
       
   108      * @param linkCount how many times this callsite has been linked/relinked
   107      * @param callSiteUnstable true if the call site being linked is considered unstable
   109      * @param callSiteUnstable true if the call site being linked is considered unstable
   108      * @param arguments the arguments for the invocation
   110      * @param arguments the arguments for the invocation
   109      */
   111      */
   110     public LinkRequestImpl(CallSiteDescriptor callSiteDescriptor, Object callSiteToken, boolean callSiteUnstable, Object... arguments) {
   112     public LinkRequestImpl(CallSiteDescriptor callSiteDescriptor, Object callSiteToken, int linkCount, boolean callSiteUnstable, Object... arguments) {
   111         this.callSiteDescriptor = callSiteDescriptor;
   113         this.callSiteDescriptor = callSiteDescriptor;
   112         this.callSiteToken = callSiteToken;
   114         this.callSiteToken = callSiteToken;
       
   115         this.linkCount = linkCount;
   113         this.callSiteUnstable = callSiteUnstable;
   116         this.callSiteUnstable = callSiteUnstable;
   114         this.arguments = arguments;
   117         this.arguments = arguments;
   115     }
   118     }
   116 
   119 
   117     @Override
   120     @Override
   138     public boolean isCallSiteUnstable() {
   141     public boolean isCallSiteUnstable() {
   139         return callSiteUnstable;
   142         return callSiteUnstable;
   140     }
   143     }
   141 
   144 
   142     @Override
   145     @Override
       
   146     public int getLinkCount() {
       
   147         return linkCount;
       
   148     }
       
   149 
       
   150     @Override
   143     public LinkRequest withoutRuntimeContext() {
   151     public LinkRequest withoutRuntimeContext() {
   144         return this;
   152         return this;
   145     }
   153     }
   146 
   154 
   147     @Override
   155     @Override
   148     public LinkRequest replaceArguments(CallSiteDescriptor newCallSiteDescriptor, Object[] newArguments) {
   156     public LinkRequest replaceArguments(CallSiteDescriptor newCallSiteDescriptor, Object[] newArguments) {
   149         return new LinkRequestImpl(newCallSiteDescriptor, callSiteToken, callSiteUnstable, newArguments);
   157         return new LinkRequestImpl(newCallSiteDescriptor, callSiteToken, linkCount, callSiteUnstable, newArguments);
   150     }
   158     }
   151 }
   159 }