diff --git a/lib/ExecutionEngine/Compiler.cpp b/lib/ExecutionEngine/Compiler.cpp
index 461f488..17890d1 100644
--- a/lib/ExecutionEngine/Compiler.cpp
+++ b/lib/ExecutionEngine/Compiler.cpp
@@ -244,24 +244,27 @@
 }
 
 
-#define TOKEN_RAW ":raw"
-#define TOKEN_RAW_LEN 4
-
-// input objPath: For example, com.example.android.rs.fountain:raw/fountain
-// output objPath:  /data/data/com.example.android.rs.fountain/cache/fountain.o
+// input objPath: For example,
+//                 /data/user/0/com.example.android.rs.fountain/cache/
+//                     @com.example.android.rs.fountain:raw@fountain.oBCC
+// output objPath: /data/user/0/com.example.android.rs.fountain/cache/
+//                     fountain.o
 //
 bool Compiler::getObjPath(std::string &objPath) {
-  size_t found = objPath.find(TOKEN_RAW);
-  if (found == string::npos) {
-    LOGE("Ill formatted resource name '%s'. The name should contain :raw/",
+  size_t found0 = objPath.find("@");
+  size_t found1 = objPath.rfind("@");
+
+  if (found0 == found1 ||
+      found0 == string::npos ||
+      found1 == string::npos) {
+    LOGE("Ill formatted resource name '%s'. The name should contain 2 @s",
          objPath.c_str());
     return false;
   }
 
-  objPath.replace(found, TOKEN_RAW_LEN, "/cache");
+  objPath.replace(found0, found1 - found0 + 1, "", 0);
+  objPath.resize(objPath.length() - 3);
 
-  objPath.append(".o");
-  objPath.insert(0, "/data/data/");
   LOGV("objPath = %s", objPath.c_str());
   return true;
 }
@@ -305,7 +308,7 @@
   bool RelaxAll = true;
   llvm::PassManager MCCodeGenPasses;
 
-  std::string objPath(mResName);
+  std::string objPath(mCachePath);
 
   if (!getObjPath(objPath)) {
     LOGE("Fail to create objPath");
diff --git a/lib/ExecutionEngine/Compiler.h b/lib/ExecutionEngine/Compiler.h
index 597618f..472b85f 100644
--- a/lib/ExecutionEngine/Compiler.h
+++ b/lib/ExecutionEngine/Compiler.h
@@ -79,7 +79,7 @@
 
 
   private:
-    const char *mResName;
+    const char *mCachePath;
 
     ScriptCompiled *mpResult;
 
@@ -104,8 +104,8 @@
 
     static void GlobalInitialization();
 
-    void setResName(const char *resName) {
-      mResName = resName;
+    void setCachePath(const char *cachePath) {
+      mCachePath = cachePath;
       return;
     }
 
diff --git a/lib/ExecutionEngine/Script.cpp b/lib/ExecutionEngine/Script.cpp
index d43d9cf..1019568 100644
--- a/lib/ExecutionEngine/Script.cpp
+++ b/lib/ExecutionEngine/Script.cpp
@@ -83,8 +83,6 @@
     return 1;
   }
 
-  mResName = resName;
-
   if (mStatus != ScriptStatus::Unknown) {
     mErrorCode = BCC_INVALID_OPERATION;
     LOGE("Bad operation: Adding source after bccPrepareExecutable\n");
@@ -298,7 +296,7 @@
     }
   }
 
-  mCompiled->setResName(mResName);
+  mCompiled->setCachePath(mCachePath);
 
   // Compile and JIT the code
   if (mCompiled->compile() != 0) {
diff --git a/lib/ExecutionEngine/Script.h b/lib/ExecutionEngine/Script.h
index a5e2bad..dc115da 100644
--- a/lib/ExecutionEngine/Script.h
+++ b/lib/ExecutionEngine/Script.h
@@ -58,8 +58,6 @@
 
     char const *mCachePath;
 
-    char const *mResName;
-
     bool mIsContextSlotNotAvail;
 
     // Source List
diff --git a/lib/ExecutionEngine/ScriptCompiled.h b/lib/ExecutionEngine/ScriptCompiled.h
index aa8e4cc..35c9b83 100644
--- a/lib/ExecutionEngine/ScriptCompiled.h
+++ b/lib/ExecutionEngine/ScriptCompiled.h
@@ -66,8 +66,8 @@
 
     ~ScriptCompiled();
 
-    void setResName(char const *resName) {
-      mCompiler.setResName(resName);
+    void setCachePath(char const *cachePath) {
+      mCompiler.setCachePath(cachePath);
       return;
     }
 
