ScriptC's mEnvironment.mIsThreadable needs to survive caching and then caching-reloading.

Change-Id: Id79931ce1a15c7c81aefee8b963958d97e76e6de
diff --git a/lib/bcc/Compiler.cpp b/lib/bcc/Compiler.cpp
index 01c513a..1c903d8 100644
--- a/lib/bcc/Compiler.cpp
+++ b/lib/bcc/Compiler.cpp
@@ -1309,8 +1309,13 @@
   memcpy(hdr->magicVersion, OBCC_MAGIC_VERS, 4);
 
   // Timestamp
-  hdr->sourceWhen = 0; // TODO(all)
-  hdr->rslibWhen = 0; // TODO(all)
+  // TODO(sliao): Should be .bc's ModifyTime. Now just use it to store
+  //              threadable
+  hdr->sourceWhen = (uint32_t) mCodeEmitter->mpSymbolLookupFn(
+      mpSymbolLookupContext,
+      "__isThreadable");
+
+  hdr->rslibWhen = 0; // TODO(sliao)
   hdr->libRSWhen = statModifyTime(libRSPath);
   hdr->libbccWhen = statModifyTime(libBccPath);
 
@@ -1798,11 +1803,16 @@
    */
 
   val = optHdr.sourceWhen;
-  if (val && (val != sourceWhen)) {
-    LOGI("bcc: source file mod time mismatch (%08x vs %08x)\n",
-         val, sourceWhen);
-    goto bail;
+  // TODO(sliao): Shouldn't overload sourceWhen in the future.
+  if (!val) {
+    mpSymbolLookupFn(mpSymbolLookupContext, "__clearThreadable");
   }
+  //  if (val && (val != sourceWhen)) {
+  //    LOGI("bcc: source file mod time mismatch (%08x vs %08x)\n",
+  //         val, sourceWhen);
+  //    goto bail;
+  //  }
+
   val = optHdr.rslibWhen;
   if (val && (val != rslibWhen)) {
     LOGI("bcc: rslib file mod time mismatch (%08x vs %08x)\n",