diff --git a/lldb/source/Target/JITLoader.cpp b/lldb/source/Target/JITLoader.cpp
index 2e37fb0..77ce4ad 100644
--- a/lldb/source/Target/JITLoader.cpp
+++ b/lldb/source/Target/JITLoader.cpp
@@ -11,30 +11,27 @@
 // C++ Includes
 // Other libraries and framework includes
 // Project includes
-#include "lldb/lldb-private.h"
 #include "lldb/Target/JITLoader.h"
+#include "lldb/Core/PluginManager.h"
 #include "lldb/Target/JITLoaderList.h"
 #include "lldb/Target/Process.h"
-#include "lldb/Core/PluginManager.h"
+#include "lldb/lldb-private.h"
 
 using namespace lldb;
 using namespace lldb_private;
 
-void
-JITLoader::LoadPlugins (Process *process, JITLoaderList &list)
-{
-    JITLoaderCreateInstance create_callback = nullptr;
-    for (uint32_t idx = 0; (create_callback = PluginManager::GetJITLoaderCreateCallbackAtIndex(idx)) != nullptr; ++idx)
-    {
-        JITLoaderSP instance_sp(create_callback(process, false));
-        if (instance_sp)
-            list.Append(std::move(instance_sp));
-    }
+void JITLoader::LoadPlugins(Process *process, JITLoaderList &list) {
+  JITLoaderCreateInstance create_callback = nullptr;
+  for (uint32_t idx = 0;
+       (create_callback =
+            PluginManager::GetJITLoaderCreateCallbackAtIndex(idx)) != nullptr;
+       ++idx) {
+    JITLoaderSP instance_sp(create_callback(process, false));
+    if (instance_sp)
+      list.Append(std::move(instance_sp));
+  }
 }
 
-JITLoader::JITLoader(Process *process) :
-    m_process (process)
-{
-}
+JITLoader::JITLoader(Process *process) : m_process(process) {}
 
 JITLoader::~JITLoader() = default;
