jit-playback.c: Move dlopen code into a new function
authordmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Dec 2014 18:40:40 +0000 (18:40 +0000)
committerdmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Dec 2014 18:40:40 +0000 (18:40 +0000)
gcc/jit/ChangeLog:
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218527 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/jit/ChangeLog
gcc/jit/jit-playback.c
gcc/jit/jit-playback.h

index afe1e66..2d2795d 100644 (file)
@@ -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 cf50fb3..a6de244 100644 (file)
@@ -1586,7 +1586,6 @@ result *
 playback::context::
 compile ()
 {
-  void *handle = NULL;
   const char *ctxt_progname;
   result *result_obj = NULL;
 
@@ -1648,24 +1647,7 @@ compile ()
   if (errors_occurred ())
     return NULL;
 
-  /* dlopen the .so file. */
-  {
-    auto_timevar load_timevar (TV_LOAD);
-
-    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;
-  }
+  result_obj = dlopen_built_dso ();
 
   return result_obj;
 }
@@ -1916,6 +1898,34 @@ convert_to_dso (const char *ctxt_progname)
     }
 }
 
+/* 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 b2b983a..f2968a8 100644 (file)
@@ -250,6 +250,9 @@ private:
   void
   convert_to_dso (const char *ctxt_progname);
 
+  result *
+  dlopen_built_dso ();
+
 private:
   ::gcc::jit::recording::context *m_recording_ctxt;