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();
 };
 
 
