diff --git a/src/compiler.cc b/src/compiler.cc
index 917c61e..8e8958b 100644
--- a/src/compiler.cc
+++ b/src/compiler.cc
@@ -1111,14 +1111,6 @@
     it.Next();
   }
   DCHECK(!it.HasNext());
-
-#if defined(ART_USE_LLVM_COMPILER)
-  CompilerCallbackFn fn =
-      FindFunction<CompilerCallbackFn>(MakeCompilerSoName(cmplr->GetInstructionSet()),
-                                       cmplr->compiler_library_,
-                                       "compilerLLVMMaterializeIfThresholdReached");
-                                       (*fn)(*cmplr);
-#endif
 }
 
 void Compiler::CompileDexFile(const ClassLoader* class_loader, const DexFile& dex_file) {
diff --git a/src/compiler_llvm/compiler_llvm.cc b/src/compiler_llvm/compiler_llvm.cc
index c5e620b..5ef1710 100644
--- a/src/compiler_llvm/compiler_llvm.cc
+++ b/src/compiler_llvm/compiler_llvm.cc
@@ -255,7 +255,10 @@
     class_loader, class_linker, dex_file, *dex_cache, NULL,
     method_idx, access_flags);
 
-  return compiler.GetCompilerLLVM()->CompileNativeMethod(&oat_compilation_unit);
+  art::CompiledMethod* result =
+      compiler.GetCompilerLLVM()->CompileNativeMethod(&oat_compilation_unit);
+  compiler.GetCompilerLLVM()->MaterializeIfThresholdReached();
+  return result;
 }
 
 extern "C" art::CompiledInvokeStub* ArtCreateInvokeStub(art::Compiler& compiler, bool is_static,
@@ -270,11 +273,6 @@
   compiler.GetCompilerLLVM()->MaterializeRemainder();
 }
 
-extern "C" void compilerLLVMMaterializeIfThresholdReached(art::Compiler& compiler) {
-  ensureCompilerLLVM(compiler);
-  compiler.GetCompilerLLVM()->MaterializeIfThresholdReached();
-}
-
 // Note: Using this function carefully!!! This is temporary solution, we will remove it.
 extern "C" art::MutexLock* compilerLLVMMutexLock(art::Compiler& compiler) {
   ensureCompilerLLVM(compiler);
diff --git a/src/compiler_llvm/utils_llvm.cc b/src/compiler_llvm/utils_llvm.cc
index bc2a7f8..6acf076 100644
--- a/src/compiler_llvm/utils_llvm.cc
+++ b/src/compiler_llvm/utils_llvm.cc
@@ -14,18 +14,19 @@
  * limitations under the License.
  */
 
-#include <android/librsloader.h>
-#include <cutils/log.h>
+#include "utils_llvm.h"
+
 #include <fcntl.h>
 #include <string.h>
 #include <sys/mman.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
 
-#include "utils_llvm.h"
-
+#include "android/librsloader.h"
 #include "class_loader.h"
 #include "object.h"
 #include "object_utils.h"
-
 #include "runtime_support_llvm.h"
 
 namespace art {
