} else if( cpcount = 1 )
} else if( cpcount == 1 )
invoke_count_words(PRUint32 paramCount, nsXPTCVariant* s){    PRUint32 result = 0;    cpcount = 0;    fpcount = 0;    uint32 firsthalf, secondhalf;    for(PRUint32 i = 0; i < paramCount; i++, s++)    {        if(s->IsPtrData())        {            if (cpcount < 2)                cparams[cpcount++] = (uint32) s->ptr;            result++;        }        else {            switch(s->type)            {             case nsXPTType::T_I8 :                if( cpcount < 2 )                    cparams[cpcount++] = (uint32) s->val.i8;                result++;                break;             case nsXPTType::T_I16 :                if( cpcount < 2 )                    cparams[cpcount++] = (uint32) s->val.i16;                result++;                break;             case nsXPTType::T_I32 :                if( cpcount < 2 )                    cparams[cpcount++] = (uint32) s->val.i32;                result++;                break;             case nsXPTType::T_U8 :                if( cpcount < 2 )                    cparams[cpcount++] = (uint32) s->val.u8;                result++;                break;             case nsXPTType::T_U16 :                if( cpcount < 2 )                    cparams[cpcount++] = (uint32) s->val.u16;                result++;                break;             case nsXPTType::T_U32 :                if( cpcount < 2 )                    cparams[cpcount++] = (uint32) s->val.u32;                result++;                break;	         case nsXPTType::T_BOOL :                if( cpcount < 2 )                    cparams[cpcount++] = (uint32) s->val.b;                result++;                break;             case nsXPTType::T_CHAR :                if( cpcount < 2 )                    cparams[cpcount++] = (uint32) s->val.c;                result++;                break;             case nsXPTType::T_WCHAR :                if( cpcount < 2 )                    cparams[cpcount++] = (uint32) s->val.wc;                result++;                break;             case nsXPTType::T_I64 :                 firsthalf = (uint32) (s->val.i64 >> 32);                secondhalf = (uint32) s->val.i32;                if( cpcount == 0 ) {                    cparams[cpcount++] = secondhalf;                    cparams[cpcount++] = firsthalf;                } else if( cpcount == 1 )                    cparams[cpcount++] = secondhalf;                result += 2;                break;             case nsXPTType::T_U64 :                 firsthalf = (uint32) (s->val.u64 >> 32);                secondhalf = (uint32) s->val.u32;                if( cpcount = 0 ) {                    cparams[cpcount++] = secondhalf;                    cparams[cpcount++] = firsthalf;                } else if( cpcount = 1 )                    cparams[cpcount++] = secondhalf;                result += 2;                break;             case nsXPTType::T_DOUBLE :                 if( fpcount < 4 )                    fpparams[fpcount++] = s->val.d;                result += 2;                break;             case nsXPTType::T_FLOAT :                 if( fpcount < 4 )                    fpparams[fpcount++] = (double) s->val.f;                result++;                break;             default:                 // all the others are plain pointer types                if( cpcount < 2 )                    cparams[cpcount++] = (uint32) s->val.p;                result++;                break;            }        }    }    return result;}