<div dir="ltr"><div>Hello,</div><div><br></div>Early this year we were doing some experiments on portability of checkpoints under project CRaC and prepared a document [0] on our findings.<div>We feel parts of it would be relevant under Project Leyden as well, as it <i>may</i> enable ahead-of-time compilation in future (I know we are not there yet!)</div><div><br><div>For the CRaC checkpoints, we found the code generated by C1/C2 compiler is not always portable due to the use of architecture specific instructions. </div><div>The same would hold true in the context of AoT compilations as well.</div><div>To make the code portable C1/C2 compilers should be provided with a minimal set of cpu features that
they are allowed to exploit during codegen phase. </div><div>However, this can also negatively impact the performance of the generated code as it would now not be utilizing all the features of the underlying architecture.</div><div>So the performance may have to be traded for gaining portability.</div><div><br></div><div>If anyone has thoughts on this aspect of the problem, please share them.<br></div><div><br></div><div><div>[0] <a href="http://cr.openjdk.java.net/~heidinga/crac/Portability_of_checkpoints.pdf">http://cr.openjdk.java.net/~heidinga/crac/Portability_of_checkpoints.pdf</a></div><div><br></div><div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">- Ashutosh Mehra</div></div></div></div></div></div></div>