public void finalizeAddress(Backend backend) {
    if (address == 0) {
      assert stub != null
          : "linkage without an address must be a stub - forgot to register a Stub associated with "
              + descriptor
              + "?";
      InstalledCode code = stub.getCode(backend);

      Set<Register> destroyedRegisters = stub.getDestroyedRegisters();
      if (!destroyedRegisters.isEmpty()) {
        AllocatableValue[] temporaryLocations = new AllocatableValue[destroyedRegisters.size()];
        int i = 0;
        for (Register reg : destroyedRegisters) {
          temporaryLocations[i++] = reg.asValue();
        }
        temporaries = temporaryLocations;
      }
      address = code.getStart();
    }
  }
 @Override
 public String toString() {
   StringBuilder sb = new StringBuilder(stub == null ? descriptor.toString() : stub.toString());
   sb.append("@0x")
       .append(Long.toHexString(address))
       .append(':')
       .append(outgoingCallingConvention)
       .append(":")
       .append(incomingCallingConvention);
   if (temporaries != null && temporaries.length != 0) {
     sb.append("; temps=");
     String sep = "";
     for (Value op : temporaries) {
       sb.append(sep).append(op);
       sep = ",";
     }
   }
   return sb.toString();
 }
 public String getSymbol() {
   return stub == null ? null : stub.toString();
 }