/**
  * Creates a stub for a call to code at a given address.
  *
  * @param address the address of the code to call
  * @param descriptor the signature of the call to this stub
  * @param prependThread true if the JavaThread value for the current thread is to be prepended to
  *     the arguments for the call to {@code address}
  * @param reexecutable specifies if the stub call can be re-executed without (meaningful) side
  *     effects. Deoptimization will not return to a point before a stub call that cannot be
  *     re-executed.
  * @param killedLocations the memory locations killed by the stub call
  */
 public ForeignCallStub(
     HotSpotJVMCIRuntimeProvider runtime,
     HotSpotProviders providers,
     long address,
     ForeignCallDescriptor descriptor,
     boolean prependThread,
     Transition transition,
     boolean reexecutable,
     LocationIdentity... killedLocations) {
   super(
       providers,
       HotSpotForeignCallLinkageImpl.create(
           providers.getMetaAccess(),
           providers.getCodeCache(),
           providers.getForeignCalls(),
           descriptor,
           0L,
           PRESERVES_REGISTERS,
           JavaCall,
           JavaCallee,
           transition,
           reexecutable,
           killedLocations));
   this.jvmciRuntime = runtime;
   this.prependThread = prependThread;
   Class<?>[] targetParameterTypes = createTargetParameters(descriptor);
   ForeignCallDescriptor targetSig =
       new ForeignCallDescriptor(
           descriptor.getName() + ":C", descriptor.getResultType(), targetParameterTypes);
   target =
       HotSpotForeignCallLinkageImpl.create(
           providers.getMetaAccess(),
           providers.getCodeCache(),
           providers.getForeignCalls(),
           targetSig,
           address,
           DESTROYS_REGISTERS,
           NativeCall,
           NativeCall,
           transition,
           reexecutable,
           killedLocations);
 }
 public Templates(HotSpotProviders providers, TargetDescription target) {
   super(providers, providers.getSnippetReflection(), target);
 }