diff mbox

[committed] jit-playback.c: Move dlopen code into a new function

Message ID 1418150437.3400.4.camel@surprise
State New
Headers show

Commit Message

David Malcolm Dec. 9, 2014, 6:40 p.m. UTC
Another simplification of playback::context::compile.

Committed to trunk as r218527.
diff mbox

Patch

Index: gcc/jit/ChangeLog
===================================================================
--- gcc/jit/ChangeLog	(revision 218526)
+++ gcc/jit/ChangeLog	(revision 218527)
@@ -1,3 +1,12 @@ 
+2014-12-09  David Malcolm  <dmalcolm@redhat.com>
+
+	* jit-playback.c (gcc::jit::playback::context::compile): Move the
+	dlopen code into...
+	(gcc::jit::playback::context::dlopen_built_dso): ...this new
+	function.
+	* jit-playback.h (gcc::jit::playback::context::dlopen_built_dso):
+	New function.
+
 2014-12-08  David Malcolm  <dmalcolm@redhat.com>
 
 	* libgccjit++.h: Indent the forward declarations of the classes to
Index: gcc/jit/jit-playback.c
===================================================================
--- gcc/jit/jit-playback.c	(revision 218526)
+++ gcc/jit/jit-playback.c	(revision 218527)
@@ -1586,7 +1586,6 @@ 
 playback::context::
 compile ()
 {
-  void *handle = NULL;
   const char *ctxt_progname;
   result *result_obj = NULL;
 
@@ -1648,25 +1647,8 @@ 
   if (errors_occurred ())
     return NULL;
 
-  /* dlopen the .so file. */
-  {
-    auto_timevar load_timevar (TV_LOAD);
+  result_obj = dlopen_built_dso ();
 
-    const char *error;
-
-    /* Clear any existing error.  */
-    dlerror ();
-
-    handle = dlopen (m_path_so_file, RTLD_NOW | RTLD_LOCAL);
-    if ((error = dlerror()) != NULL)  {
-      add_error (NULL, "%s", error);
-    }
-    if (handle)
-      result_obj = new result (handle);
-    else
-      result_obj = NULL;
-  }
-
   return result_obj;
 }
 
@@ -1916,6 +1898,34 @@ 
     }
 }
 
+/* Dynamically-link the built DSO file into this process, using dlopen.
+   Wrap it up within a jit::result *, and return that.
+   Return NULL if any errors occur, reporting them on this context.  */
+
+result *
+playback::context::
+dlopen_built_dso ()
+{
+  auto_timevar load_timevar (TV_LOAD);
+  void *handle = NULL;
+  const char *error = NULL;
+  result *result_obj = NULL;
+
+  /* Clear any existing error.  */
+  dlerror ();
+
+  handle = dlopen (m_path_so_file, RTLD_NOW | RTLD_LOCAL);
+  if ((error = dlerror()) != NULL)  {
+    add_error (NULL, "%s", error);
+  }
+  if (handle)
+    result_obj = new result (handle);
+  else
+    result_obj = NULL;
+
+  return result_obj;
+}
+
 /* Top-level hook for playing back a recording context.
 
    This plays back m_recording_ctxt, and, if no errors
Index: gcc/jit/jit-playback.h
===================================================================
--- gcc/jit/jit-playback.h	(revision 218526)
+++ gcc/jit/jit-playback.h	(revision 218527)
@@ -250,6 +250,9 @@ 
   void
   convert_to_dso (const char *ctxt_progname);
 
+  result *
+  dlopen_built_dso ();
+
 private:
   ::gcc::jit::recording::context *m_recording_ctxt;