When generating a call graph, SPARK has to handle many special cases for concurrency helper classes like java.lang.Thread or android.os.AsyncTask. These classes usually have control flow properties hidden to the call graph analysis, e.g., the Thread's Thread.run method will be invoked asynchronously after calling Thread.start or AsyncTask.onPostExecute will be executed after AsyncTask.doInBackground has finished. SPARK handles these cases by building an artifical short circuit between these framework managed calls, i.e., it adds edges between the start, computation and epilogue methods of these concurrecy helper classes to the call graph.
OnFlyCallGraphBuilder needs an extension point which is capable of handling such special cases. Handling of concurrency helper classes and other special cases should then be removed from OnFlyCallGraphBuilder and encapsulated in implementations of the extension point.
The text was updated successfully, but these errors were encountered:
We are unable to convert the task to an issue at this time. Please try again.
The issue was successfully created but we are unable to update the comment at this time.
When generating a call graph, SPARK has to handle many special cases for concurrency helper classes like
java.lang.Threadorandroid.os.AsyncTask. These classes usually have control flow properties hidden to the call graph analysis, e.g., theThread'sThread.runmethod will be invoked asynchronously after callingThread.startorAsyncTask.onPostExecutewill be executed afterAsyncTask.doInBackgroundhas finished. SPARK handles these cases by building an artifical short circuit between these framework managed calls, i.e., it adds edges between the start, computation and epilogue methods of these concurrecy helper classes to the call graph.Currently, these special cases are hard coded into the
OnFlyCallGraphBuilderclass.OnFlyCallGraphBuilderneeds an extension point which is capable of handling such special cases. Handling of concurrency helper classes and other special cases should then be removed fromOnFlyCallGraphBuilderand encapsulated in implementations of the extension point.The text was updated successfully, but these errors were encountered: