invoke_count_bytes(nsISupports* that,
invoke_count_bytes(nsISupports* that, const PRUint32 methodIndex,
invoke_count_bytes(nsISupports* that,  const PRUint32 paramCount, const nsXPTCVariant* s){  PRInt32 result = 4; /* variant records do not include self pointer */  /* counts the number of bytes required by the argument stack,     64 bit integer, and double requires 8 bytes.  All else requires     4 bytes.   */  {    PRUint32 indx;    for (indx = paramCount; indx > 0; --indx, ++s)    {      if (! s->IsPtrData())      {        if (s->type == nsXPTType::T_I64 || s->type == nsXPTType::T_U64 ||            s->type == nsXPTType::T_DOUBLE)        {          /* 64 bit integer and double aligned on 8 byte boundaries */          result += (result & 4) + 8;          continue;        }      }      result += 4; /* all other cases use 4 bytes */    }  }  result -= 72; /* existing stack buffer is 72 bytes */  if (result < 0)    return 0;  {    /* round up to 64 bytes boundary */    PRInt32 remainder = result & 63;    return (remainder == 0) ? result : (result + 64 - remainder);  }}