void * RsdCpuScriptImpl::lookupRuntimeStub(void* pContext, char const* name) {
    RsdCpuScriptImpl *s = (RsdCpuScriptImpl *)pContext;
    const RsdCpuReference::CpuSymbol *syms = gSyms;
    const RsdCpuReference::CpuSymbol *sym = nullptr;

    sym = s->mCtx->symLookup(name);
    if (!sym) {
        sym = s->lookupSymbolMath(name);
    }
    if (!sym) {
        while (syms->fnPtr) {
            if (!strcmp(syms->name, name)) {
                sym = syms;
            }
            syms++;
        }
    }

    if (sym) {
        s->mIsThreadable &= sym->threadable;
        return sym->fnPtr;
    }
    ALOGE("ScriptC sym lookup failed for %s", name);
    return nullptr;
}
RsdCpuReference::CpuScript * RsdCpuReferenceImpl::createScript(const ScriptC *s,
                                    char const *resName, char const *cacheDir,
                                    uint8_t const *bitcode, size_t bitcodeSize,
                                    uint32_t flags) {

    RsdCpuScriptImpl *i = new RsdCpuScriptImpl(this, s);
    if (!i->init(resName, cacheDir, bitcode, bitcodeSize, flags)) {
        delete i;
        return NULL;
    }
    return i;
}
Beispiel #3
0
RsdCpuReference::CpuScript * RsdCpuReferenceImpl::createScript(const ScriptC *s,
                                    char const *resName, char const *cacheDir,
                                    uint8_t const *bitcode, size_t bitcodeSize,
                                    uint32_t flags) {

    RsdCpuScriptImpl *i = new RsdCpuScriptImpl(this, s);
    if (!i->init(resName, cacheDir, bitcode, bitcodeSize, flags
#ifndef RS_COMPATIBILITY_LIB
        , getBccPluginName()
#endif
        )) {
        delete i;
        return NULL;
    }
    return i;
}