Hirdetés

!! SZERVERLEÁLLÁS, ADATVESZTÉS INFORMÁCIÓK !!
Talpon vagyunk, köszönjük a sok biztatást! Ha segíteni szeretnél, boldogan ajánljuk Előfizetéseinket!

Új hozzászólás Aktív témák

  • Carathorys

    csendes tag

    válasz Keeperv85 #770 üzenetére

    Annyit csináltam, hogy az ASM blokkot kivettem, és az alatta lévő függvényben is kivettem a meghívását (meg a feltételellenőrzést, stb...) Gondolom ez valami optimalizálás lehetett, vagy nem tudom, mindenesetre

    extern "C" {
    //Hard coded copy with size of 72 bytes. This will avoid the extra cost
    //of size checking branching in generic memcpy code
    inline void memcpy_72(int* src, int* dst) {
    __asm__ volatile ("cpy r4, %1 \n"
    "cpy r5, %0 \n"
    "ldm r4!, {r0-r3} \n"
    "cpy r12, r5 \n"
    "stm r12!,{r0-r3} \n"
    "ldm r4!, {r0-r3} \n"
    "stm r12!,{r0-r3} \n"
    "ldm r4!, {r0-r3} \n"
    "stm r12!,{r0-r3} \n"
    "ldm r4!, {r0-r3} \n"
    "stm r12!,{r0-r3} \n"
    "ldm r4, {r0-r1} \n"
    "stm r12, {r0-r1} \n"
    :
    : "r" (src), "r" (dst)
    : "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r12");
    }
    }

    SkPaint::SkPaint(const SkPaint& src) {
    //Be noted to update this field when struture is changed!
    if(sizeof(src) == 72){
    memcpy_72((int*)this, (int*)&src);
    } else {
    memcpy((int*)this, (int*)&src, sizeof(src));
    }

    SkSafeRef(fTypeface);
    SkSafeRef(fPathEffect);
    SkSafeRef(fShader);
    SkSafeRef(fXfermode);
    SkSafeRef(fMaskFilter);
    SkSafeRef(fColorFilter);
    SkSafeRef(fRasterizer);
    SkSafeRef(fLooper);
    SkSafeRef(fImageFilter);
    }

    ebből csináltam a következőt:

    SkPaint::SkPaint(const SkPaint& src) {
    memcpy((int*)this, (int*)&src, sizeof(src));
    SkSafeRef(fTypeface);
    SkSafeRef(fPathEffect);
    SkSafeRef(fShader);
    SkSafeRef(fXfermode);
    SkSafeRef(fMaskFilter);
    SkSafeRef(fColorFilter);
    SkSafeRef(fRasterizer);
    SkSafeRef(fLooper);
    SkSafeRef(fImageFilter);
    }

    Amúgy assembly-hez én sem értek sajnos, meg kollégáim sem, de már rajta vagyok/unk az ügyön :DD

Új hozzászólás Aktív témák