Extract lookup, getFunctions, getFunctionBinary out of Compiler.
diff --git a/lib/bcc/ScriptCompiled.h b/lib/bcc/ScriptCompiled.h
index e9c1fa2..e271042 100644
--- a/lib/bcc/ScriptCompiled.h
+++ b/lib/bcc/ScriptCompiled.h
@@ -21,20 +21,29 @@
 
 #include <bcc/bcc.h>
 
+#include <list>
+#include <map>
+#include <string>
+#include <utility>
+#include <vector>
+
 namespace llvm {
   class Module;
 }
 
 namespace bcc {
+  class EmittedFuncInfo;
   class Script;
 
   class ScriptCompiled {
     friend class Compiler;
+    friend class CodeEmitter;
 
   private:
-    typedef std::list< std::pair<std::string, std::string> > PragmaList;
+    typedef std::list<std::pair<std::string, std::string> > PragmaList;
     typedef std::list<void*> ExportVarList;
     typedef std::list<void*> ExportFuncList;
+    typedef std::map<std::string, EmittedFuncInfo *> EmittedFunctionsMapTy;
 
   private:
     Script *mpOwner;
@@ -44,11 +53,14 @@
     PragmaList mPragmas;
     ExportVarList mExportVars;
     ExportFuncList mExportFuncs;
+    EmittedFunctionsMapTy mEmittedFunctions;
 
   public:
     ScriptCompiled(Script *owner) : mpOwner(owner), mCompiler(this) {
     }
 
+    ~ScriptCompiled();
+
     int readBC(const char *bitcode,
                size_t bitcodeSize,
                long bitcodeFileModTime,
@@ -76,9 +88,7 @@
       return mCompiler.getErrorMessage();
     }
 
-    void *lookup(const char *name) {
-      return mCompiler.lookup(name);
-    }
+    void *lookup(const char *name);
 
     void getExportVars(BCCsizei *actualVarCount,
                        BCCsizei maxVarCount,
@@ -94,15 +104,11 @@
 
     void getFunctions(BCCsizei *actualFunctionCount,
                       BCCsizei maxFunctionCount,
-                      BCCchar **functions) {
-      mCompiler.getFunctions(actualFunctionCount, maxFunctionCount, functions);
-    }
+                      BCCchar **functions);
 
     void getFunctionBinary(BCCchar *function,
                            BCCvoid **base,
-                           BCCsizei *length) {
-      mCompiler.getFunctionBinary(function, base, length);
-    }
+                           BCCsizei *length);
 
     void registerSymbolCallback(BCCSymbolLookupFn pFn, BCCvoid *pContext) {
       mCompiler.registerSymbolCallback(pFn, pContext);