Back to index

lightning-sunbird  0.9+nobinonly
Defines | Functions
xptcinvoke_alpha.cpp File Reference
#include "xptcprivate.h"

Go to the source code of this file.

Defines

#define N_ARG_REGS   5 /* 6 regs minus 1 for "this" ptr */

Functions

uint32 invoke_count_words (PRUint32 paramCount, nsXPTCVariant *s)
void invoke_copy_to_stack (PRUint64 *d, PRUint32 paramCount, nsXPTCVariant *s, PRUint64 *regs)
nsresult XPTC__InvokebyIndex (nsISupports *that, PRUint32 methodIndex, PRUint32 paramCount, nsXPTCVariant *params)
 XPTC_InvokeByIndex (nsISupports *that, PRUint32 methodIndex, PRUint32 paramCount, nsXPTCVariant *params)

Define Documentation

#define N_ARG_REGS   5 /* 6 regs minus 1 for "this" ptr */

Function Documentation

void invoke_copy_to_stack ( PRUint64 d,
PRUint32  paramCount,
nsXPTCVariant s,
PRUint64 regs 
)

Definition at line 51 of file xptcinvoke_alpha.cpp.

{
#define N_ARG_REGS       5       /* 6 regs minus 1 for "this" ptr */

    for (PRUint32 i = 0; i < paramCount; i++, s++)
    {
        if (s->IsPtrData()) {
            if (i < N_ARG_REGS)
               regs[i] = (PRUint32)s->ptr;
            else
               *((PRUint32*)d++) = (PRUint32)s->ptr;
            continue;
        }
        switch (s->type) {
        //
        // signed types first
        //
        case nsXPTType::T_I8:
           if (i < N_ARG_REGS)
              ((PRInt64*)regs)[i] = s->val.i8;
           else
              *((PRInt8 *)d++) = s->val.i8;
           break;
        case nsXPTType::T_I16:
           if (i < N_ARG_REGS)
              ((PRInt64*)regs)[i] = s->val.i16;
           else
              *((PRInt16 *)d++) = s->val.i16;
           break;
        case nsXPTType::T_I32:
           if (i < N_ARG_REGS)
              ((PRInt64*)regs)[i] = s->val.i32;
           else
              *((PRUint32*)d++) = s->val.i32;
           break;
        case nsXPTType::T_I64:
           if (i < N_ARG_REGS)
              ((PRInt64*)regs)[i] = s->val.i64;
           else
              *((PRInt64*)d++) = s->val.i64;
           break;
        //
        // unsigned types next
        //
        case nsXPTType::T_U8:
           if (i < N_ARG_REGS)
              regs[i] = s->val.u8;
           else
              *((PRUint8 *)d++) = s->val.u8;
           break;
        case nsXPTType::T_U16:
           if (i < N_ARG_REGS)
              regs[i] = s->val.u16;
           else
              *((PRUint16 *)d++) = s->val.u16;
           break;
        case nsXPTType::T_U32:
           if (i < N_ARG_REGS)
              regs[i] = s->val.u32;
           else
              *((PRUint32*)d++) = s->val.u32;
           break;
        case nsXPTType::T_U64:
           if (i < N_ARG_REGS)
              regs[i] = s->val.u64;
           else
              *((PRUint64*)d++) = s->val.u64;
           break;
        case nsXPTType::T_FLOAT:
           if (i < N_ARG_REGS)
              ((double*)regs)[i] = s->val.f;
           else
              *((float*)d++) = s->val.f;
           break;
        case nsXPTType::T_DOUBLE:
           if (i < N_ARG_REGS)
              ((double*)regs)[i] = s->val.d;
           else
              *((double*)d++) = s->val.d;
           break;
        case nsXPTType::T_BOOL:
           if (i < N_ARG_REGS)
              regs[i] = s->val.b;
           else
              *((PRBool*)d++) = s->val.b;
           break;
        case nsXPTType::T_CHAR:
           if (i < N_ARG_REGS)
              regs[i] = s->val.c;
           else
              *((char*)d++) = s->val.c;
           break;
        case nsXPTType::T_WCHAR:
           if (i < N_ARG_REGS)
              regs[i] = s->val.wc;
           else
              *((wchar_t*)d++) = s->val.wc;
           break;
        default:
           // all the others are plain pointer types
           if (i < N_ARG_REGS)
              regs[i] = (PRUint32)s->val.p;
           else
              *((PRUint32*)d++) = (PRUint32)s->val.p;
           break;
        }
    }
}

Here is the call graph for this function:

uint32 invoke_count_words ( PRUint32  paramCount,
nsXPTCVariant s 
)

Definition at line 45 of file xptcinvoke_alpha.cpp.

{
    return(paramCount*2);
}
nsresult XPTC__InvokebyIndex ( nsISupports *  that,
PRUint32  methodIndex,
PRUint32  paramCount,
nsXPTCVariant params 
)

Here is the caller graph for this function:

XPTC_InvokeByIndex ( nsISupports *  that,
PRUint32  methodIndex,
PRUint32  paramCount,
nsXPTCVariant params 
)

Definition at line 166 of file xptcinvoke_alpha.cpp.

{
    return XPTC__InvokebyIndex(that, methodIndex, paramCount, params);
}

Here is the call graph for this function: