Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 95ee9628 authored by Jason Sams's avatar Jason Sams Committed by Android (Google) Code Review
Browse files

Merge "Better debugging for scripts."

parents 0297ea47 f119b91e
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -354,10 +354,6 @@ ScriptSetVarV {
	}


ScriptCSetScript {
	param void * codePtr
	}

ScriptCSetText {
	param const char * text
	param uint32_t length
+26 −19
Original line number Diff line number Diff line
@@ -67,12 +67,15 @@ void ScriptC::setupScript(Context *rsc)
            ptr = mSlots[ct]->getPtr();
        }
        void **dest = ((void ***)mEnviroment.mFieldAddress)[ct];
        //LOGE("setupScript %i %p = %p    %p %i", ct, dest, ptr, mSlots[ct]->getType(), mSlots[ct]->getType()->getDimX());

        if (rsc->props.mLogScripts) {
            LOGV("%p ScriptC::setupScript slot=%i  dst=%p  src=%p  type=%p", rsc, ct, dest, ptr, mSlots[ct]->getType());

            //const uint32_t *p32 = (const uint32_t *)ptr;
            //for (uint32_t ct2=0; ct2 < mSlots[ct]->getType()->getDimX(); ct2++) {
                //LOGE("  %i = 0x%08x ", ct2, p32[ct2]);
            //}
        }

        if (dest) {
            *dest = ptr;
@@ -136,10 +139,18 @@ uint32_t ScriptC::run(Context *rsc)

    uint32_t ret = 0;
    Script * oldTLS = setTLS(this);
    //LOGE("ScriptC::run %p", mProgram.mRoot);

    if (rsc->props.mLogScripts) {
        LOGV("%p ScriptC::run invoking root,  ptr %p", rsc, mProgram.mRoot);
    }

    ret = mProgram.mRoot();

    if (rsc->props.mLogScripts) {
        LOGV("%p ScriptC::run invoking complete, ret=%i", rsc, ret);
    }

    setTLS(oldTLS);
    //LOGE("ScriptC::run ret %i", ret);
    return ret;
}

@@ -325,8 +336,14 @@ void ScriptC::Invoke(Context *rsc, uint32_t slot, const void *data, uint32_t len
    setupScript(rsc);
    Script * oldTLS = setTLS(this);

    if (rsc->props.mLogScripts) {
        LOGV("%p ScriptC::Invoke invoking slot %i,  ptr %p", rsc, slot, mEnviroment.mInvokeFunctions[slot]);
    }
    ((void (*)(const void *, uint32_t))
        mEnviroment.mInvokeFunctions[slot])(data, len);
    if (rsc->props.mLogScripts) {
        LOGV("%p ScriptC::Invoke complete", rsc);
    }

    setTLS(oldTLS);
}
@@ -377,7 +394,7 @@ static BCCvoid* symbolLookup(BCCvoid* pContext, const BCCchar* name)

void ScriptCState::runCompiler(Context *rsc, ScriptC *s)
{
    LOGV("ScriptCState::runCompiler ");
    LOGV("%p ScriptCState::runCompiler ", rsc);

    s->mBccScript = bccCreateScript();
    s->mEnviroment.mIsThreadable = true;
@@ -386,7 +403,7 @@ void ScriptCState::runCompiler(Context *rsc, ScriptC *s)
    bccCompileScript(s->mBccScript);
    bccGetScriptLabel(s->mBccScript, "root", (BCCvoid**) &s->mProgram.mRoot);
    bccGetScriptLabel(s->mBccScript, "init", (BCCvoid**) &s->mProgram.mInit);
    LOGV("root %p,  init %p", s->mProgram.mRoot, s->mProgram.mInit);
    LOGV("%p ScriptCState::runCompiler root %p,  init %p", rsc, s->mProgram.mRoot, s->mProgram.mInit);

    if (s->mProgram.mInit) {
        s->mProgram.mInit();
@@ -407,9 +424,6 @@ void ScriptCState::runCompiler(Context *rsc, ScriptC *s)
        s->mEnviroment.mFieldAddress = (void **) calloc(s->mEnviroment.mFieldCount, sizeof(void *));
        bccGetExportVars(s->mBccScript, NULL, s->mEnviroment.mFieldCount, (BCCvoid **) s->mEnviroment.mFieldAddress);
    }
    //for (int ct2=0; ct2 < s->mEnviroment.mFieldCount; ct2++ ) {
        //LOGE("Script field %i = %p", ct2, s->mEnviroment.mFieldAddress[ct2]);
    //}

    s->mEnviroment.mFragment.set(rsc->getDefaultProgramFragment());
    s->mEnviroment.mVertex.set(rsc->getDefaultProgramVertex());
@@ -491,13 +505,6 @@ void rsi_ScriptCBegin(Context * rsc)
    ss->clear();
}

void rsi_ScriptCSetScript(Context * rsc, void *vp)
{
    rsAssert(0);
    //ScriptCState *ss = &rsc->mScriptC;
    //ss->mProgram.mScript = reinterpret_cast<ScriptC::RunScript_t>(vp);
}

void rsi_ScriptCSetText(Context *rsc, const char *text, uint32_t len)
{
    ScriptCState *ss = &rsc->mScriptC;