diff --git a/src/compiler.cc b/src/compiler.cc
index 272ba9e..36e8d28 100644
--- a/src/compiler.cc
+++ b/src/compiler.cc
@@ -895,7 +895,7 @@
 // classes found in the boot classpath. Since at runtime we will
 // select the class from the boot classpath, do not attempt to resolve
 // or compile it now.
-static bool SkipClass(const ClassLoader* class_loader,
+static bool SkipClass(ClassLoader* class_loader,
                       const DexFile& dex_file,
                       const DexFile::ClassDef& class_def) {
   if (class_loader == NULL) {
@@ -1398,7 +1398,7 @@
 }
 
 void Compiler::CompileClass(CompilationContext* context, size_t class_def_index) {
-  const ClassLoader* class_loader = context->GetClassLoader();
+  ClassLoader* class_loader = context->GetClassLoader();
   const DexFile& dex_file = *context->GetDexFile();
   const DexFile::ClassDef& class_def = dex_file.GetClassDef(class_def_index);
   if (SkipClass(class_loader, dex_file, class_def)) {
@@ -1469,7 +1469,7 @@
 }
 
 void Compiler::CompileMethod(const DexFile::CodeItem* code_item, uint32_t access_flags,
-                             uint32_t method_idx, const ClassLoader* class_loader,
+                             uint32_t method_idx, ClassLoader* class_loader,
                              const DexFile& dex_file) {
   CompiledMethod* compiled_method = NULL;
   uint64_t start_ns = NanoTime();
diff --git a/src/compiler.h b/src/compiler.h
index 46d3647..85f3ead 100644
--- a/src/compiler.h
+++ b/src/compiler.h
@@ -244,10 +244,8 @@
   void Compile(ClassLoader* class_loader,
                const std::vector<const DexFile*>& dex_files);
   void CompileDexFile(ClassLoader* class_loader, const DexFile& dex_file);
-  void CompileClass(const DexFile::ClassDef& class_def, const ClassLoader* class_loader,
-                    const DexFile& dex_file);
   void CompileMethod(const DexFile::CodeItem* code_item, uint32_t access_flags, uint32_t method_idx,
-                     const ClassLoader* class_loader, const DexFile& dex_file);
+                     ClassLoader* class_loader, const DexFile& dex_file);
 
   static void CompileClass(CompilationContext* context, size_t class_def_index);
 
@@ -310,7 +308,7 @@
   typedef CompiledMethod* (*CompilerFn)(Compiler& compiler,
                                         const DexFile::CodeItem* code_item,
                                         uint32_t access_flags, uint32_t method_idx,
-                                        const ClassLoader* class_loader,
+                                        ClassLoader* class_loader,
                                         const DexFile& dex_file);
   CompilerFn compiler_;
 
diff --git a/src/compiler_llvm/compiler_llvm.cc b/src/compiler_llvm/compiler_llvm.cc
index b793fbd..db4ad0a 100644
--- a/src/compiler_llvm/compiler_llvm.cc
+++ b/src/compiler_llvm/compiler_llvm.cc
@@ -187,7 +187,7 @@
 extern "C" art::CompiledMethod* ArtCompileMethod(art::Compiler& compiler,
                                                  const art::DexFile::CodeItem* code_item,
                                                  uint32_t access_flags, uint32_t method_idx,
-                                                 const art::ClassLoader* class_loader,
+                                                 art::ClassLoader* class_loader,
                                                  const art::DexFile& dex_file)
 {
   art::ClassLinker *class_linker = art::Runtime::Current()->GetClassLinker();
diff --git a/src/compiler_llvm/runtime_support_llvm.cc b/src/compiler_llvm/runtime_support_llvm.cc
index 155fb7c..fce4a38 100644
--- a/src/compiler_llvm/runtime_support_llvm.cc
+++ b/src/compiler_llvm/runtime_support_llvm.cc
@@ -25,6 +25,7 @@
 #include "runtime_support.h"
 #include "runtime_support_func_list.h"
 #include "runtime_support_llvm.h"
+#include "scoped_jni_thread_state.h"
 #include "ScopedLocalRef.h"
 #include "thread.h"
 #include "thread_list.h"
