Move call to compiler from jni to core library code.
diff --git a/libs/rs/jni/RenderScript_jni.cpp b/libs/rs/jni/RenderScript_jni.cpp
index 61866b7..677ce0c 100644
--- a/libs/rs/jni/RenderScript_jni.cpp
+++ b/libs/rs/jni/RenderScript_jni.cpp
@@ -35,8 +35,6 @@
 #include "../RenderScript.h"
 #include "../RenderScriptEnv.h"
 
-#include "acc/acc.h"
-
 //#define LOG_API LOGE
 #define LOG_API(...)
 
@@ -567,8 +565,6 @@
     jint remaining;
     jbyte* script_base = 0;
     jbyte* script_ptr;
-    ACCscript* script = 0;
-    void* scriptEntry = 0;
     if (!scriptRef) {
         _exception = 1;
         //_env->ThrowNew(IAEClass, "script == null");
@@ -594,22 +590,9 @@
         _env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0);
     script_ptr = script_base + offset;
 
-    {
-        script = accCreateScript();
-        const char* scriptSource[] = {(const char*) script_ptr};
-        int scriptLength[] = {length} ;
-        accScriptSource(script, 1, scriptSource, scriptLength);
-        accCompileScript(script);
-        accGetScriptLabel(script, "main", (ACCvoid**) &scriptEntry);
-    }
-    if (scriptEntry) {
-        rsScriptCSetScript((void*) script, (void *)scriptEntry);
-        script = 0;
-    }
+    rsScriptCSetText((const char *)script_ptr, length);
+
 exit:
-    if (script) {
-        accDeleteScript(script);
-    }
     if (script_base) {
         _env->ReleasePrimitiveArrayCritical(scriptRef, script_base,
                 _exception ? JNI_ABORT: 0);
diff --git a/libs/rs/rs.spec b/libs/rs/rs.spec
index 090be32..4ffdfce 100644
--- a/libs/rs/rs.spec
+++ b/libs/rs/rs.spec
@@ -286,10 +286,14 @@
 	}
 
 ScriptCSetScript {
-	param void * accScript
 	param void * codePtr
 	}
 
+ScriptCSetText {
+	param const char * text
+	param uint32_t length
+	}
+
 ScriptCCreate {
 	ret RsScript
 	}
diff --git a/libs/rs/rsScriptC.cpp b/libs/rs/rsScriptC.cpp
index 36019ab..be0191b 100644
--- a/libs/rs/rsScriptC.cpp
+++ b/libs/rs/rsScriptC.cpp
@@ -28,6 +28,8 @@
 {
     mAccScript = NULL;
     mScript = NULL;
+    mScriptText = NULL;
+    mScriptTextLength = 0;
 }
 
 ScriptC::~ScriptC()
@@ -418,6 +420,21 @@
     mScript = NULL;
     mIsRoot = false;
     mIsOrtho = true;
+    mScriptText = NULL;
+    mScriptTextLength = 0;
+}
+
+void ScriptCState::runCompiler()
+{
+    mAccScript = accCreateScript();
+
+    LOGE("Compiler 1");
+    const char* scriptSource[] = {mScriptText};
+    int scriptLength[] = {mScriptTextLength} ;
+    accScriptSource(mAccScript, 1, scriptSource, scriptLength);
+    accCompileScript(mAccScript);
+    accGetScriptLabel(mAccScript, "main", (ACCvoid**) &mScript);
+    LOGE("Compiler 1");
 }
 
 namespace android {
@@ -475,10 +492,20 @@
     ss->mIsOrtho = isOrtho;
 }
 
+void rsi_ScriptCSetText(Context *rsc, const char *text, uint32_t len)
+{
+    ScriptCState *ss = &rsc->mScriptC;
+    ss->mScriptText = text;
+    ss->mScriptTextLength = len;
+}
+
+
 RsScript rsi_ScriptCCreate(Context * rsc)
 {
     ScriptCState *ss = &rsc->mScriptC;
 
+    ss->runCompiler();
+
     ScriptC *s = new ScriptC();
     s->mAccScript = ss->mAccScript;
     ss->mAccScript = NULL;
@@ -491,7 +518,8 @@
     s->mClearStencil = ss->mClearStencil;
     s->mIsRoot = ss->mIsRoot;
     s->mIsOrtho = ss->mIsOrtho;
-
+    s->mScriptText = ss->mScriptText;
+    s->mScriptTextLength = ss->mScriptTextLength;
     return s;
 }
 
diff --git a/libs/rs/rsScriptC.h b/libs/rs/rsScriptC.h
index 283007e..664bd6d 100644
--- a/libs/rs/rsScriptC.h
+++ b/libs/rs/rsScriptC.h
@@ -39,6 +39,8 @@
 
     virtual bool run(Context *, uint32_t launchID);
 
+    const char * mScriptText;
+    uint32_t mScriptTextLength;
 
     ACCscript*    mAccScript;
     rsc_RunScript mScript;
@@ -57,7 +59,9 @@
     ScriptCState();
     ~ScriptCState();
 
-    ACCscript*    mAccScript;
+    ACCscript* mAccScript;
+    const char * mScriptText;
+    uint32_t mScriptTextLength;
     rsc_RunScript mScript;
     float mClearColor[4];
     float mClearDepth;
@@ -68,6 +72,7 @@
     Vector<const Type *> mConstantBufferTypes;
 
     void clear();
+    void runCompiler();
 };