<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://git.reviewboard.kde.org/r/118817/">https://git.reviewboard.kde.org/r/118817/</a>
     </td>
    </tr>
   </table>
   <br />




<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://git.reviewboard.kde.org/static/rb/images/review_request_box_top_bg.ab6f3b1072c9.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for KDevelop, Kevin Funk and Olivier Jean de Gaalon.</div>
<div>By Milian Wolff.</div>










<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
kdev-clang
</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Ensure we never access a given CXTranslationUnit concurrently.

ParseSession's data is moved into ParseSessionData, which is the
actual IAstContainer implementation. It also now stores a QMutex.
This mutex is implicitly locked inside ParseSession, so you can say
a ParseSession is now similar to a QMutexLocker, with the difference
that you can exchange the QMutex it operates on. This simplifies the
code in the parse job in my opinion.

The other places where the ParseSession was used are adapted to
operate on the value type instead of the pointer, where appropriate.

This patch hopefully fixes the assertions we currently trigger in LLVM
debug builds. Further optimizations, to e.g. enable concurrent
read-access, can be investigated later on. I'm not really sure it's
going to be worth the effort though...</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Tests pass and manual testing on a small project seems to work fine as well. I don't have a debug build of llvm though, so if anyone could test that it would be appreciated.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>clangparsejob.h <span style="color: grey">(91fe788853991b2450964907c4649873a17cc0e9)</span></li>

 <li>clangparsejob.cpp <span style="color: grey">(50b3da507df2410e1c8876d0de52bd67cb51084c)</span></li>

 <li>codecompletion/context.h <span style="color: grey">(3e9c6358cd5638a051938d6b4a1f46c3cbdc352e)</span></li>

 <li>codecompletion/context.cpp <span style="color: grey">(af79ac0350bd4e9aa1373ce894de673bd67efd65)</span></li>

 <li>codecompletion/model.cpp <span style="color: grey">(92cec373ee8d4e62966db85fe960849f19e396d1)</span></li>

 <li>codegen/clangsignatureassistant.cpp <span style="color: grey">(07357ff23b1d8056b075f6176f99c5038d41201d)</span></li>

 <li>duchain/clanghelpers.h <span style="color: grey">(2a759f078fe0baa5b1add514e8af06ad20756c56)</span></li>

 <li>duchain/clanghelpers.cpp <span style="color: grey">(3d7c7d9eabb2844671f0a531bea9f2857f0f4c08)</span></li>

 <li>duchain/clangpch.h <span style="color: grey">(7adf8fb70f39bb0c1400d649264620a3cc86a8f5)</span></li>

 <li>duchain/clangpch.cpp <span style="color: grey">(4f3687b300603a689f48343cad5396b61637a897)</span></li>

 <li>duchain/parsesession.h <span style="color: grey">(7754daba425de1cb7149761743994b818740ac8a)</span></li>

 <li>duchain/parsesession.cpp <span style="color: grey">(a297e2d1f7a79511d1058d8ce06fd43a70875a62)</span></li>

 <li>tests/clang-parser.cpp <span style="color: grey">(de00f654e1899e71504fdc922a9885838ce94f45)</span></li>

 <li>tests/test_codecompletion.cpp <span style="color: grey">(7c95da8c1fb6b5910d738f5eba6fd78cc5ab10e7)</span></li>

 <li>tests/test_problems.cpp <span style="color: grey">(cc6dddc149eaae540f17509a70def5fa814675e5)</span></li>

</ul>

<p><a href="https://git.reviewboard.kde.org/r/118817/diff/" style="margin-left: 3em;">View Diff</a></p>







  </td>
 </tr>
</table>




  </div>
 </body>
</html>