<div class="gmail_quote">On 29 March 2011 12:35, Xin Tong Utoronto <span dir="ltr"><<a href="mailto:x.tong@utoronto.ca" target="_blank">x.tong@utoronto.ca</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<p><span style="text-decoration:underline"><b><span style="font-size:medium">Project Description:</span></b></span></p>
<p><span style="text-decoration:underline"><b><span style="font-size:medium"><br></span></b></span></p>
<p><span style="font-size:small">LLVM has gained much popularity in 
the programming languages and compiler industry from the time it is 
developed. Lots of researchers have used LLVM as frameworks for their 
researches and many languages have been ported to LLVM IR and 
interpreted, Just-in-Time compiled or statically compiled to native 
code. One of the current drawbacks of the LLVM JIT is the lack of an 
adaptive compilation System. All the non-adaptive bits are already there
 in LLVM: optimizing compiler with the different types of instruction 
selectors, register allocators, preRA schedulers, etc. and a full set of
 optimizations changeable at runtime. What's left is a system that can 
keep track of and dynamically look-up the hotness of methods and 
re-compile with more expensive optimizations as the methods are executed
 over and over. This should improve program startup time and execution 
time and will bring great benefits to all ported languages that intend 
to use LLVM JIT as one of the execution methods</span></p>
<p><span style="font-size:small"><br></span></p>
<p><span style="text-decoration:underline;font-size:medium"><b>Project Outline:</b></span></p>
<p><span style="text-decoration:underline"><b><span style="font-size:small"><br></span></b></span></p>
<p><span style="font-size:small">Currently, the LLVM JIT serves as a 
management layer for the executed LLVM IR, it manages the compiled code 
and calls the LLVM code generator to do the real work. There are levels 
of optimizations for the LLVM code generator, and depends on how much 
optimizations the code generator is asked to do, the time taken may vary
 significantly. The adaptive compilation mechanism should be able to 
detect when a method is getting hot, compiling or recompiling it using 
the appropriate optimization levels. Moreover, this should happen 
transparently to the running application. In order to keep track of how 
many times a JITed function is called. This involves inserting 
instrumentational code into the function's LLVM bitcode before it is 
sent to the code generator. This code will increment a counter when the 
function is called. And when the counter reaches a threshold, the 
function gives control back to the LLVM JIT. Then the JIT will look at 
the hotness of all the methods and find the one that triggered the 
recompilation threshold. The JIT can then choose to raise the level of 
optimization based on the algorithm below or some other algorithms 
developed later.</span></p>
<p><br><span style="font-size:small">IF (getCompilationCount(method) > 50 in the last 100 samples) = > Recompile at Aggressive</span><br><span style="font-size:small">ELSE Recompile at the next optimization level.</span></p>



<p><br><span style="font-size:small">Even though the invocation 
counting introduces a few lines of binary, but the advantages of 
adaptive optimization should far overweigh the extra few lines of binary
 introduced. Note the adaptive compilation framework I propose here is 
orthogonal to the LLVM profile-guided optimizations. The profile-guided 
optimization is a technique used to optimize code with some profiling or
 external information. But the adaptive compilation framework is 
concerned with level of optimizations instead of how the optimizations 
are to be performed.</span></p>
<p><span style="font-size:small"><br></span></p>
<p><span style="text-decoration:underline;font-size:medium"><b>Project Timeline:</b></span></p>
<p><span style="text-decoration:underline"><b><span style="font-size:small"><br></span></b></span></p>
<p><span style="font-size:small">This is a relatively small project 
and does not involve a lot of coding, but good portion of the time will 
be spent benchmarking, tuning and experimenting with different 
algorithms, i.e. what would be the algorithm to raise the compilation 
level when a method recompilation threshold is reached, can we make this
 algorithm adaptive too, etc. Therefore, my timeline for the project is 
as follow</span></p>
<p><br><span style="font-size:small">Week 1</span><br><span style="font-size:small">Benchmarking
 the current LLVM JIT compiler, measuring compilation speed differences 
for different levels of compilation. This piece of information is 
required to understand why a heuristic will outperform others</span></p>
<p><br><span style="font-size:small">Week 2</span><br><span style="font-size:small">Reading LLVM Execution Engine and Code Generator code. Design the LLVM adaptive compilation framework</span></p>
<p><br><span style="font-size:small">Week 3 - 9</span><br><span style="font-size:small">Implementing
 and testing the LLVM adaptive compilation framework. The general idea 
of the compilation framework is described in project outline</span></p>
<p><br><span style="font-size:small">Week 10 - 13</span><br><span style="font-size:small">Benchmarking, tuning and experimenting with different recompilation algorithms. Typically benchmarking test cases would be</span></p>



<p><br><span style="font-size:small">Week 14</span><br><span style="font-size:small">Test and organize code. Documentation</span></p>
<p><span style="font-size:small"><br></span></p>
<p><span style="text-decoration:underline;font-size:medium"><b>Overall Goals:</b></span></p>
<p> </p>
<p><span style="font-size:small">My main goal at the end of the summer
 is to have an automated profiling and adaptive compilation framework 
for the LLVM. Even though the performance improvements are still unclear
 at this point, I believe that this adaptive compilation framework will 
definitely give noticeable performance benefits, as the current JIT 
compilation is either too simple to give a reasonably fast code or too 
expensive to apply to all functions.</span></p>
<p> </p>
<p><span style="text-decoration:underline;font-size:medium"><b>Background:</b></span></p>
<p> </p>
<p><span style="font-size:small">I have some experience with the Java 
Just-In-Time compiler and some experience with LLVM. I have included my 
CV for your reference. I don't have a specific mentor in mind, but I 
imagine that the existing mentors from LLVM would be extremely helpful.</span></p>
<p> </p>
<p> </p>
<p class="MsoNormal"><span lang="EN-CA"><br></span></p>
<table style="border-collapse:collapse" border="1" cellpadding="0" cellspacing="0">
<tbody>
<tr style="min-height:34.5pt">
<td style="width:257.8pt;border:1.5pt double windowtext;background:none repeat scroll 0% 0% rgb(79, 98, 40);padding:0in 5.4pt;min-height:34.5pt" valign="top" width="344">
<p class="MsoNormal"><span style="font-size:22pt;color:white;text-transform:uppercase">Xin<b> Tong</b></span></p>
<p class="MsoNormal"><b><span style="font-size:18pt;color:white;text-transform:uppercase" lang="EN-CA"> </span></b></p>
</td>
<td style="width:252.35pt;border-width:1.5pt 1.5pt 1.5pt medium;border-style:double double double none;border-color:windowtext windowtext windowtext -moz-use-text-color;padding:0in 5.4pt;min-height:34.5pt" valign="top" width="336">



<p class="MsoNormal" style="text-align:right" align="right"><b><span>Email:</span></b><b><span><a href="mailto:x.tong@utoronto.ca" target="_blank">x.tong@utoronto.ca</a></span></b></p>

<p class="MsoNormal" style="text-align:right" align="right"><span lang="EN-CA"> </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span style="font-size:5pt" lang="EN-CA"> </span></p>
<p class="MsoNormal" style="text-align:justify"><span style="font-size:5pt" lang="EN-CA"> </span></p>
<p class="MsoNormal" style="text-align:justify"><span style="font-size:10.5pt" lang="EN-CA">Creative,
 quality-focused Computer Engineering student brings a strong blend of 
programming, design and analysis skills. Offers solid understanding of 
best practices at each stage of the software development lifecycle. 
Skilled at recognizing and resolving design flaws that have the 
potential to create downstream maintenance, scalability and 
functionality issues. Adept at optimizing complex system processes and 
dataflows, taking the initiative to identify and recommend design and 
coding modifications to improve overall system performance. Excels in 
dynamic, deadline-sensitive environments that demand resourcefulness, 
astute judgement, and self-motivated quick study talents.Utilizes 
excellent time management skills to balance a demanding academic course 
of studies with employment and volunteer pursuits, achieving excellent 
results in all endeavours.</span></p>
<p class="MsoNormal" style="text-align:center" align="center"><span style="font-size:10.5pt" lang="EN-CA"> </span></p>
<div style="border-width:1.5pt medium;border-style:double none;border-color:windowtext -moz-use-text-color;padding:1pt 0in;background:none repeat scroll 0% 0% rgb(79, 98, 40)">
<h1 style="text-align:left;background:none repeat scroll 0% 0% rgb(79, 98, 40);padding:0in" align="left"><span style="font-size:14pt;color:white" lang="EN-CA">STRENGTHS & EXPERTISE</span></h1>

</div>
<p class="MsoNormal" style="text-align:center" align="center"><span style="font-size:10.5pt" lang="EN-CA"> </span></p>
<p class="MsoNormal" style="text-align:center" align="center"><b><span style="font-size:10.5pt" lang="EN-CA">Compiler Construction • Compiler Optimization • Computer Architecture • Bottleneck Analysis & Solutions</span></b></p>



<p class="MsoNormal" style="text-align:center" align="center"><b><span style="font-size:10.5pt" lang="EN-CA">Coding & Debugging • Workload Prioritization •<span>  </span>Team Collaboration & Leadership<span>  </span><span> </span></span></b></p>



<p class="MsoNormal" style="text-align:center" align="center"><b><span style="font-size:10.5pt" lang="EN-CA">Software Testing & Integration<span>  </span>• Test-Driven Development </span></b></p>

<p class="MsoNormal"><span style="font-size:10.5pt" lang="EN-CA"> </span></p>
<div style="border-width:1.5pt medium;border-style:double none;border-color:windowtext -moz-use-text-color;padding:1pt 0in;background:none repeat scroll 0% 0% rgb(79, 98, 40)">
<h1 style="text-align:left;background:none repeat scroll 0% 0% rgb(79, 98, 40);padding:0in" align="left"><span style="font-size:14pt;color:white" lang="EN-CA">EDUCATION & CREDENTIALS</span></h1>

</div>
<p class="MsoNormal" style="text-align:center" align="center"><b><span style="font-size:6pt"> </span></b></p>
<p class="MsoNormal" style="text-align:center" align="center"><b><span style="font-size:10.5pt" lang="EN-CA">BACHELOR OF COMPUTER ENGINEERING</span></b></p>
<p class="MsoNormal" style="text-align:center" align="center"><i><span style="font-size:10.5pt" lang="EN-CA">University</span></i><i><span style="font-size:10.5pt" lang="EN-CA"> of Toronto, Toronto, ON, Expected Completion 2011</span></i></p>



<p class="MsoNormal" style="text-align:center" align="center"><span style="font-size:10.5pt" lang="EN-CA">Compiler</span><b><span style="font-size:10.5pt" lang="EN-CA">· </span></b><span style="font-size:10.5pt" lang="EN-CA">Operation Systems </span><b><span style="font-size:10.5pt" lang="EN-CA">·</span></b><span style="font-size:10.5pt" lang="EN-CA"> Computer Architecture </span><b><span style="font-size:10.5pt" lang="EN-CA"><span> </span></span></b></p>



<p class="MsoNormal" style="text-align:center" align="center"><span style="font-size:10.5pt" lang="EN-CA"> </span></p>
<p class="MsoNormal" style="text-align:center" align="center"><span style="font-size:10.5pt" lang="EN-CA"> </span></p>
<p class="MsoNormal" style="text-align:center" align="center"><b><span style="font-size:10.5pt;text-transform:uppercase" lang="EN-CA">Cisco Certified Networking Associate</span></b><span style="font-size:10.5pt" lang="EN-CA">, July 2009</span></p>



<p class="MsoNormal" style="text-align:center" align="center"><span style="font-size:10.5pt" lang="EN-CA"> </span></p>
<div style="border-width:1.5pt medium;border-style:double none;border-color:windowtext -moz-use-text-color;padding:1pt 0in;background:none repeat scroll 0% 0% rgb(79, 98, 40)">
<h1 style="text-align:left;background:none repeat scroll 0% 0% rgb(79, 98, 40);padding:0in" align="left"><span style="font-size:14pt;color:white" lang="EN-CA">PROFESSIONAL EXPERIENCE</span></h1>

</div>
<p class="MsoNormal"><b><span style="font-size:10.5pt;text-transform:uppercase" lang="EN-CA"> </span></b></p>
<p class="MsoNormal"><b><span style="font-size:10.5pt;text-transform:uppercase" lang="EN-CA">Java VIRTUAL MACHINE JIT Developer<span>                                                                                                    </span><span>   </span></span></b><b><span style="font-size:10.5pt" lang="EN-CA">Aug 2010-May 2011</span></b></p>



<p class="MsoNormal"><i><span style="font-size:10.5pt" lang="EN-CA">IBM, Toronto</span></i><i><span style="font-size:10.5pt" lang="EN-CA">, Canada</span></i></p>

<p class="MsoNormal"><i><span style="font-size:10.5pt" lang="EN-CA"> </span></i></p>
<ul style="margin-top:0in" type="square"><li class="MsoNormal"><span style="font-size:10.5pt" lang="EN-CA">Working on the PowerPC code generator of<span>  </span>IBM Just-in-Time compiler for Java Virtual Machine.</span></li>


<li class="MsoNormal"><span style="font-size:10.5pt" lang="EN-CA">Benchmarking Just-in-Time compiler performance, analyzing and fixing possible regressions.</span></li>
<li class="MsoNormal"><span style="font-size:10.5pt" lang="EN-CA">Triaging and fixing defects in the Just-in-Time compiler</span></li><li class="MsoNormal"><span style="font-size:10.5pt" lang="EN-CA">Acquiring hand-on experience with powerpc assembly and powerpc binary debugging with gdb and other related tools </span></li>


</ul>
<p class="MsoNormal"><b><span style="font-size:10.5pt;text-transform:uppercase" lang="EN-CA"> </span></b></p>
<p class="MsoNormal"><b><span style="font-size:10.5pt;text-transform:uppercase" lang="EN-CA"> </span></b></p>
<p class="MsoNormal"><b><span style="font-size:10.5pt;text-transform:uppercase" lang="EN-CA">Java VirTual Mahine Developer , Extreme Blue<span>     </span><span>                                                              </span><span>            </span></span></b><b><span style="font-size:10.5pt" lang="EN-CA">May 2010-Aug 2010</span></b><i></i></p>



<p class="MsoNormal"><i><span style="font-size:10.5pt" lang="EN-CA">IBM, Ottawa</span></i><i><span style="font-size:10.5pt" lang="EN-CA">, Canada</span></i><b></b></p>

<ul style="margin-top:0in" type="square"><li class="MsoNormal" style="margin-top:6pt"><span style="font-size:10.5pt" lang="EN-CA">Architected
 a multi-tenancy solution for IBM J9 Java Virtual Machine for hosting 
multiple applications within one Java Virtual Machine. Designed 
solutions to provide good tenant isolation and resource control for all 
tenants running in the same Java Virtual Machine. </span></li><li class="MsoNormal" style="margin-top:6pt"><span style="font-size:10.5pt" lang="EN-CA">Worked
 on Java class libraries and different components of J9 Java Virtual 
Machine, including threading library, garbage collector, interpreter, 
etc. </span></li></ul>
<p class="MsoNormal" style="margin-top:6pt"><span style="font-size:10.5pt" lang="EN-CA"> </span></p>
<p class="MsoNormal"><b><span style="font-size:10.5pt;text-transform:uppercase" lang="EN-CA"> </span></b></p>
<p class="MsoNormal"><b><span style="font-size:10.5pt;text-transform:uppercase" lang="EN-CA"> </span></b></p>
<p class="MsoNormal" style="text-align:right" align="right"><b><i><span style="font-size:10.5pt" lang="EN-CA">Continued…</span></i></b></p>
<p class="MsoNormal"><b><span style="font-size:18pt;text-transform:uppercase">Xin Tong <span>                                    </span><span>                 </span><span>         </span><span>         </span></span></b><b><span style="font-size:18pt;text-transform:uppercase"><span>     </span><span>                  </span><span> </span></span></b><b><span style="font-size:18pt;text-transform:uppercase">page 2</span></b></p>



<p class="MsoNormal"><b><span style="font-size:10.5pt;text-transform:uppercase" lang="EN-CA"> </span></b></p>
<p class="MsoNormal"><b><span style="font-size:10.5pt;text-transform:uppercase" lang="EN-CA">Graphics Compiler Developer<span>            </span></span></b><b><span style="font-size:10.5pt" lang="EN-CA"><span>                                                                </span><span>                </span><span>                       </span><span> </span>May 2009-May 2010</span></b></p>



<p class="MsoNormal"><i><span style="font-size:10.5pt" lang="EN-CA">Qualcomm,</span></i><i><span style="font-size:10.5pt" lang="EN-CA">San Diego</span></i><i><span style="font-size:10.5pt" lang="EN-CA">, USA</span></i><i></i></p>



<ul style="margin-top:0in" type="square"><li class="MsoNormal" style="margin-top:6pt"><span style="font-size:10.5pt" lang="EN-CA">Recruited for an internship position with this multinational telecommunications company to work on their</span><span style="font-size:10.5pt" lang="EN-CA"> C++ compiler</span><span style="font-size:10.5pt" lang="EN-CA"> project</span><span style="font-size:10.5pt" lang="EN-CA">.</span></li>


<li class="MsoNormal" style="margin-top:6pt"><span style="font-size:10.5pt" lang="EN-CA">Developed a static verifier program which automatically generates and adds</span><span style="font-size:10.5pt" lang="EN-CA">intermediate language code to test programs to make them self-verifying.</span><span style="font-size:10.5pt" lang="EN-CA"> Then the test programs are used to test the C++ compiler, ensuring that it can compile code correctly.</span></li>


<li class="MsoNormal" style="margin-top:6pt"><span style="font-size:10.5pt" lang="EN-CA">Utilizes in-depth knowledge of </span><span style="font-size:10.5pt" lang="EN-CA">LLVM</span><span style="font-size:10.5pt" lang="EN-CA"> systems and algorithms to generate </span><span style="font-size:10.5pt" lang="EN-CA">elegant and </span><span style="font-size:10.5pt" lang="EN-CA">robust code. <span> </span></span></li>


</ul>
<p class="MsoNormal"><span style="font-size:10.5pt" lang="EN-CA"> </span></p>
<p class="MsoNormal"><b><i><span style="font-size:10.5pt" lang="EN-CA"> </span></i></b></p>
<p class="MsoNormal"><b><span style="font-size:10.5pt;text-transform:uppercase"> </span></b></p>
<div style="border-width:1.5pt medium;border-style:double none;border-color:windowtext -moz-use-text-color;padding:1pt 0in;background:none repeat scroll 0% 0% rgb(79, 98, 40)">
<h1 style="text-align:left;background:none repeat scroll 0% 0% rgb(79, 98, 40);padding:0in" align="left"><span style="font-size:14pt;color:white" lang="EN-CA">ACADEMIC PROJECTS</span></h1>

</div>
<p class="MsoNormal"><b><span style="font-size:6pt" lang="EN-CA"> </span></b></p>
<p class="MsoNormal" style="text-align:justify"><b><span style="font-size:10.5pt" lang="EN-CA">COMPILER OPTIMIZER IMPLEMENTATION (Dec. 2010 – Apr 2011) :</span></b><span style="font-size:10.5pt" lang="EN-CA">
 Implemented a compiler optimizer on the SUIF framework. Implemented 
control flow analysis, data flow analysis, loop invariant code motion, 
global value numbering, loop unrolling and various other local 
optimizations.</span></p>
<p class="MsoNormal" style="text-align:justify"><span style="font-size:10.5pt" lang="EN-CA"> </span></p>
<p class="MsoNormal" style="text-align:justify"><b><span style="font-size:10.5pt" lang="EN-CA">GPU COMPILER IMPLEMENTATION (Sept. – Dec. 2010) :</span></b><span style="font-size:10.5pt" lang="EN-CA">
 Implemented a GPU compiler that compiles a subset of the GLSL language 
to ARB language which then can be executed on GPU. Wrote the scanner and
 parser using Lex and Yacc and a code generator in a OOP fashion</span></p>
<p class="MsoNormal" style="text-align:justify"><span lang="EN-CA"> </span></p>
<p class="MsoNormal" style="text-align:justify"><b><span style="font-size:10.5pt;text-transform:uppercase" lang="EN-CA">Malloc Library Implementation</span></b><b><span style="font-size:10.5pt" lang="EN-CA"> (Oct.-Nov. 2008) : </span></b><span style="font-size:10.5pt" lang="EN-CA">Leveraged
 solid understanding of best fit algorithm and linkedlist data structure
 to design a malloc library to perform dynamic memory allocation. 
Implemented the library with C programming language to ensure robust and
 clear coding for 1000 </span><span style="font-size:10.5pt" lang="EN-CA">line</span><span style="font-size:10.5pt" lang="EN-CA">
 codes. Optimized library on the code level to obtain a 6% increase of 
allocation throughput. Harnessed knowledge of trace files and drivers to
 test and evaluate the malloc library’s throughput and memory 
utilization.</span></p>
<p class="MsoNormal" style="text-align:justify"><span lang="EN-CA"> </span></p>
<p class="MsoNormal"><span style="font-size:10.5pt" lang="EN-CA"> </span></p>
<p class="MsoNormal" style="margin-left:0.5in"><span style="font-size:10.5pt" lang="EN-CA"> </span></p>
<div style="border-width:1.5pt medium;border-style:double none;border-color:windowtext -moz-use-text-color;padding:1pt 0in;background:none repeat scroll 0% 0% rgb(79, 98, 40)">
<h1 style="text-align:left;background:none repeat scroll 0% 0% rgb(79, 98, 40);padding:0in" align="left"><span style="font-size:14pt;color:white" lang="EN-CA">COMPUTER</span><span style="font-size:14pt;color:white" lang="EN-CA">SKILLS </span></h1>



</div>
<p class="MsoNormal" style="text-align:center" align="center"><span style="font-size:10.5pt"> </span></p>
<table style="margin-left:5.4pt;border-collapse:collapse" border="1" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width:148.5pt;border-width:1pt 1.5pt 1.5pt 1pt;border-style:solid double double solid;background:none repeat scroll 0% 0% rgb(230, 238, 213);padding:0in 5.4pt" valign="top" width="198">

<p class="MsoNormal" style="text-align:right;line-height:125%" align="right"><b><span style="font-size:10.5pt;line-height:125%;text-transform:uppercase" lang="EN-CA">Programming Languages</span></b></p>

</td>
<td style="width:355.5pt;border-width:1pt 1pt 1.5pt medium;border-style:solid solid double none;background:none repeat scroll 0% 0% rgb(230, 238, 213);padding:0in 5.4pt" valign="top" width="474">

<p class="MsoNormal" style="line-height:125%"><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">C<b> </b></span><b><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">·</span></b><b></b><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">C++<b> </b></span><b><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">·</span></b><b></b><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">Java<b> </b></span><b></b></p>



</td>
</tr>
<tr>
<td style="width:148.5pt;border-width:medium 1.5pt 1.5pt 1pt;border-style:none double double solid;border-color:-moz-use-text-color windowtext windowtext rgb(179, 204, 130);background:none repeat scroll 0% 0% rgb(205, 221, 172);padding:0in 5.4pt" valign="top" width="198">



<p class="MsoNormal" style="text-align:right;line-height:125%" align="right"><b><span style="font-size:10.5pt;line-height:125%;text-transform:uppercase" lang="EN-CA">Operating Systems</span></b></p>

</td>
<td style="width:355.5pt;border-width:medium 1pt 1.5pt medium;border-style:none solid double none;border-color:-moz-use-text-color rgb(179, 204, 130) windowtext -moz-use-text-color;background:none repeat scroll 0% 0% rgb(205, 221, 172);padding:0in 5.4pt" valign="top" width="474">



<p class="MsoNormal" style="line-height:125%"><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">Linux<b></b></span></p>
</td>
</tr>
<tr>
<td style="width:148.5pt;border-width:medium 1.5pt 1pt 1pt;border-style:none double solid solid;background:none repeat scroll 0% 0% rgb(230, 238, 213);padding:0in 5.4pt" valign="top" width="198">

<p class="MsoNormal" style="text-align:right;line-height:125%" align="right"><b><span style="font-size:10.5pt;line-height:125%;text-transform:uppercase" lang="EN-CA">Software Tools</span></b></p>

</td>
<td style="width:355.5pt;border-width:medium 1pt 1pt medium;border-style:none solid solid none;background:none repeat scroll 0% 0% rgb(230, 238, 213);padding:0in 5.4pt" valign="top" width="474">

<p class="MsoNormal" style="line-height:125%"><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">GDB </span><b><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">·</span></b><span style="font-size:10.5pt;line-height:125%" lang="EN-CA"> GCC <span> </span><span> </span></span></p>



</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height:125%"><b><span style="font-size:10.5pt;line-height:125%;text-transform:uppercase" lang="EN-CA"> </span></b></p>
<p class="MsoNormal"><span lang="EN-CA"> </span></p>
<div style="border-width:1.5pt medium;border-style:double none;border-color:windowtext -moz-use-text-color;padding:1pt 0in;background:none repeat scroll 0% 0% rgb(79, 98, 40)">
<h1 style="text-align:left;background:none repeat scroll 0% 0% rgb(79, 98, 40);padding:0in" align="left"><span style="font-size:14pt;color:white;text-transform:uppercase" lang="EN-CA">Extracurricular Activities</span></h1>



</div>
<p class="MsoNormal" style="text-align:center" align="center"><b><span style="font-size:10.5pt;text-transform:uppercase" lang="EN-CA"> </span></b></p>
<p class="MsoNormal" style="text-align:center;line-height:125%" align="center"><b><span style="font-size:10.5pt;line-height:125%;text-transform:uppercase" lang="EN-CA">Elected Officer</span></b><b><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">, </span></b><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">Institute of Electrical & Electronics Engineers, University of Toronto Branch,<b> Since May 2009</b></span></p>



<p class="MsoNormal" style="text-align:center;line-height:125%" align="center"><b><span style="font-size:10.5pt;line-height:125%;text-transform:uppercase" lang="EN-CA">Member</span></b><b><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">, </span></b><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">Institute of Electrical & Electronics Engineers,<b> Since </b></span><b><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">2007</span></b></p>



<p class="MsoNormal" style="text-align:center;line-height:125%" align="center"><b><span style="font-size:10.5pt;line-height:125%;text-transform:uppercase" lang="EN-CA">Member</span></b><b><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">, </span></b><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">University</span><span style="font-size:10.5pt;line-height:125%" lang="EN-CA"> of Toronto</span><span style="font-size:10.5pt;line-height:125%" lang="EN-CA"> E-Sports Club<b>, 2007</b></span></p>



<p class="MsoNormal" style="text-align:center;line-height:125%" align="center"><b><span style="font-size:10.5pt;line-height:125%;text-transform:uppercase" lang="EN-CA">Member</span></b><b><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">, </span></b><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">University</span><span style="font-size:10.5pt;line-height:125%" lang="EN-CA"> of Toronto</span><span style="font-size:10.5pt;line-height:125%" lang="EN-CA"> Engineering Chinese Culture Club<b>, 2007</b></span></p>



<b><span style="font-size:10.5pt;line-height:125%;text-transform:uppercase" lang="EN-CA">Member</span></b><b><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">, </span></b><span style="font-size:10.5pt;line-height:125%" lang="EN-CA">University</span><span style="font-size:10.5pt;line-height:125%" lang="EN-CA"> of Toronto</span><span style="font-size:10.5pt;line-height:125%" lang="EN-CA"> Robotics Club<b>, 2007</b></span><br clear="all">


<br>-- <br>Kind Regards <br><font color="#888888"><br>Xin Tong <br>
</font><br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br></blockquote></div><br><div>Hi Xin,</div><div><br></div><div>If I understand the above correctly, this basically means that whenever an application calls a function it's been given by getPointerToFunction(), there's a possibility the function is recompiled with more aggressive optimisations, should that function meet some hotness threshold. Does the application have to wait while this compilation takes place, before the function it called is actually executed?</div>

<div><br></div><div>If so, it's nice that recompilation is transparent to the application, and so functions just magically become faster over time, but stalling the application like this may not be desirable. </div><div>
<br></div><div>I've added an adaptive optimisation system to an instruction set simulator developed at my university which heavily relies on LLVM for JIT compilation. It performs all the compilation in a separate thread from where the interpretation of the simulated program is taking place, meaning it never needs to wait for any compilation. Adaptive reoptimisation also takes place in a separate thread, and this has caused me a multitude of headaches, but I digress...</div>
<div><br></div><div>Basically: if the initial compilation is done in a separate thread, can you ensure that any adaptive reoptimisation also happens asynchronously, or will such use cases have to do without your system?</div>
<div><br></div><div>Cheers,</div><div>Stephen</div>