Modify script loading behavior.

This moves away from RSInfo and toward bcinfo. This also disables all caching for the time being.

Change-Id: Id7c717258d51e0b45540a78596f1bc9c94468efb
diff --git a/cpu_ref/rsCpuScript.cpp b/cpu_ref/rsCpuScript.cpp
index 01a3e5a..432312b 100644
--- a/cpu_ref/rsCpuScript.cpp
+++ b/cpu_ref/rsCpuScript.cpp
@@ -473,9 +473,8 @@
         useRSDebugContext = true;
         // Skip the cache lookup
     } else if (!is_force_recompile()) {
-        // Attempt to just load the script from cache first if we can.
-        exec = bcc::RSCompilerDriver::loadScript(cacheDir, resName,
-                    (const char *)bitcode, bitcodeSize, mResolver);
+        // New cache infrastructure goes here
+
     }
 
     if (exec == NULL) {
@@ -509,10 +508,15 @@
         reinterpret_cast<void (*)()>(exec->getSymbolAddress(".rs.dtor"));
 
 
-    const bcc::RSInfo *info = &mExecutable->getInfo();
-    if (info->getExportVarNames().size()) {
-        mBoundAllocs = new Allocation *[info->getExportVarNames().size()];
-        memset(mBoundAllocs, 0, sizeof(void *) * info->getExportVarNames().size());
+    if (ME.getExportVarCount()) {
+        mBoundAllocs = new Allocation *[ME.getExportVarCount()];
+        memset(mBoundAllocs, 0, sizeof(void *) * ME.getExportVarCount());
+    }
+
+    for (size_t i = 0; i < ME.getExportForEachSignatureCount(); i++) {
+        char* name = new char[strlen(ME.getExportForEachNameList()[i]) + 1];
+        mExportedForEachFuncList.push_back(std::make_pair(name, 
+                                                          ME.getExportForEachSignatureList()[i]));
     }
 
 #else
@@ -738,13 +742,11 @@
 void RsdCpuScriptImpl::populateScript(Script *script) {
 #ifndef FAKE_ARM64_BUILD
 #ifndef RS_COMPATIBILITY_LIB
-    const bcc::RSInfo *info = &mExecutable->getInfo();
-
     // Copy info over to runtime
-    script->mHal.info.exportedFunctionCount = info->getExportFuncNames().size();
-    script->mHal.info.exportedVariableCount = info->getExportVarNames().size();
-    script->mHal.info.exportedForeachFuncList = info->getExportForeachFuncs().array();
-    script->mHal.info.exportedPragmaCount = info->getPragmas().size();
+    script->mHal.info.exportedFunctionCount = mExecutable->getExportFuncAddrs().size();
+    script->mHal.info.exportedVariableCount = mExecutable->getExportVarAddrs().size();
+    script->mHal.info.exportedForeachFuncList = &mExportedForEachFuncList[0];
+    script->mHal.info.exportedPragmaCount = mExecutable->getPragmaKeys().size();
     script->mHal.info.exportedPragmaKeyList =
         const_cast<const char**>(mExecutable->getPragmaKeys().array());
     script->mHal.info.exportedPragmaValueList =
@@ -1147,6 +1149,10 @@
     if (mBoundAllocs) {
         delete[] mBoundAllocs;
     }
+    
+    for (size_t i = 0; i < mExportedForEachFuncList.size(); i++) {
+        delete[] mExportedForEachFuncList[i].first;
+    }
 #else
     if (mFieldIsObject) {
         for (size_t i = 0; i < mExportedVariableCount; ++i) {
diff --git a/cpu_ref/rsCpuScript.h b/cpu_ref/rsCpuScript.h
index fded347..1fe66ce 100644
--- a/cpu_ref/rsCpuScript.h
+++ b/cpu_ref/rsCpuScript.h
@@ -23,6 +23,8 @@
 #ifndef RS_COMPATIBILITY_LIB
 #include <bcc/ExecutionEngine/CompilerRTSymbolResolver.h>
 #include <bcc/ExecutionEngine/SymbolResolverProxy.h>
+#include <vector>
+#include <utility>
 #endif
 
 #include "rsCpuCore.h"
@@ -116,6 +118,8 @@
     void (*mInit)();
     void (*mFreeChildren)();
 
+    std::vector<std::pair<const char *, uint32_t> > mExportedForEachFuncList;
+
     bcc::BCCContext *mCompilerContext;
     bcc::RSCompilerDriver *mCompilerDriver;
     bcc::CompilerRTSymbolResolver mCompilerRuntime;