<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p><font face="Courier New, Courier, monospace">Hi Bekket, <br>
      </font></p>
    <p><font face="Courier New, Courier, monospace">Thank you for your
        reply. Earlier I came across a paper called "Dynamic Look Ahead
        Compilation: Hide JIT compilation latencies", it devised some
        methods for JIT compilation of functions before the actual call
        takes place by using call graph analysis, branch probabilities
        to generate a list of functions with high likelihood of
        execution in near future. In my opinion it would be nice to use
        that paper as a base design with call graph, inter-procedural
        analysis from LLVM to form heuristics. Currently, gathering
        information and planning on algorithm to use those information
        in ORC layers.<br>
      </font></p>
    <p><font face="Courier New, Courier, monospace">Thanks for
        mentioning PGO (hot/code splitting), I will investigate more on
        that in subsequent days.</font></p>
    <div class="moz-cite-prefix">On 25/03/19 10:02 PM, Bekket McClane
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:7B8CC16D-744D-4CA5-8C42-CF366766B95A@gmail.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      Hi,<br class="">
      <div><br class="">
        <blockquote type="cite" class="">
          <div class="">On Mar 24, 2019, at 1:47 PM, preejackie <<a
              href="mailto:praveenvelliengiri@gmail.com" class=""
              moz-do-not-send="true">praveenvelliengiri@gmail.com</a>>
            wrote:</div>
          <br class="Apple-interchange-newline">
          <div class="">
            <meta http-equiv="Content-Type" content="text/html;
              charset=UTF-8" class="">
            <div bgcolor="#FFFFFF" text="#000000" class="">
              <p class=""><font class="" face="Courier New, Courier,
                  monospace">Hi Bekket, <br class="">
                </font></p>
              <p class=""><font class="" face="Courier New, Courier,
                  monospace">Sorry for the delayed reply.</font></p>
              <p class=""><font class="" face="Courier New, Courier,
                  monospace">By appropriate, I mean performance of
                  compiled native code.</font></p>
            </div>
          </div>
        </blockquote>
        I think you need more evaluations on that. As there are too many
        factors affecting the quality of generated code.<br class="">
        <blockquote type="cite" class="">
          <div class="">
            <div bgcolor="#FFFFFF" text="#000000" class="">
              <p class=""><font class="" face="Courier New, Courier,
                  monospace"> </font></p>
              <p class=""><font class="" face="Courier New, Courier,
                  monospace">I was referring other JIT implementations
                  like LuaJIT & webkit FTL JIT to see how they
                  implement their JIT. I have gone through the design of
                  Spider Monkey & Android runtime (ART) JIT. As, you
                  said both region based and method based compilation
                  unit have their own advantage & disadvantage. Both
                  make use of profile generation for hot-code
                  regions/functions. I have planned to rethink my idea
                  of implementing "function based" instead of "region
                  based" compilation unit. Because, trace-based jit
                  requires considerable development time & time
                  taken to find hot code region from IR with profile
                  support is high. In my opinion these are difficult to
                  get implemented within 11 weeks (summer time) and make
                  a way to trunk for real use by people.<br class="">
                </font></p>
            </div>
          </div>
        </blockquote>
        I totally agree with your plan. Function based JIT make more
        sense for a 3-month project in terms of engineering efforts for
        a deliverable result. Also, LLVM already has plenty of handy and
        mature call graph as well as inter-procedure toolkits you can
        use.<br class="">
        <blockquote type="cite" class="">
          <div class="">
            <div bgcolor="#FFFFFF" text="#000000" class="">
              <p class=""><font class="" face="Courier New, Courier,
                  monospace"> </font></p>
              <p class=""><font class="" face="Courier New, Courier,
                  monospace">Also, LLVM ORC v2 resembles more like a
                  function based approach. I think it would be easier to
                  built a runtime profiler around it and make use of
                  that profile data in compilelayer of ORC to recompile
                  hot functions speculatively with more optimization. As
                  far as I know, many JIT implementations uses profilers
                  to decide hot code functions than information from
                  their intermediate representation because of the
                  dynamic nature of compiled/interpreting source
                  language. This make me focus more runtime profilers
                  than analysis on IR. Of course, analysis from IR will
                  be useful in start phase of JIT compilation.</font></p>
              <div class=""><br class="">
              </div>
            </div>
          </div>
        </blockquote>
        Regarding profiling, just as a FYI, you might want to take a
        look at the (PGO-guided) Hot/Cold code splitting toolkit landing
        in LLVM just few months ago. Although it takes static PGO
        profile, but I believe you can leverage the static PGO framework
        in LLVM as foundation for your dynamic profiling.<br class="">
        <blockquote type="cite" class="">
          <div class="">
            <div bgcolor="#FFFFFF" text="#000000" class="">
              <p class=""><font class="" face="Courier New, Courier,
                  monospace">I find IntelJITEvents in Execution Engine,
                  is there any documentation on it's use cases? If you
                  have thoughts over it, please share :) <br class="">
                </font></p>
            </div>
          </div>
        </blockquote>
        I’d never used that, sorry<br class="">
        <blockquote type="cite" class="">
          <div class="">
            <div bgcolor="#FFFFFF" text="#000000" class="">
              <p class=""><font class="" face="Courier New, Courier,
                  monospace"> </font></p>
              <p class=""><font class="" face="Courier New, Courier,
                  monospace">Thanks<br class="">
                </font></p>
            </div>
          </div>
        </blockquote>
        Best,</div>
      <div>Bekket<br class="">
        <blockquote type="cite" class="">
          <div class="">
            <div bgcolor="#FFFFFF" text="#000000" class="">
              <p class=""><font class="" face="Courier New, Courier,
                  monospace"> </font></p>
              <p class=""><font class="" face="Courier New, Courier,
                  monospace"><br class="">
                </font></p>
              <p class=""><br class="">
              </p>
              <div class="moz-cite-prefix">On 24/03/19 10:30 AM, Bekket
                McClane wrote:<br class="">
              </div>
              <blockquote type="cite"
                cite="mid:145326D8-8D0B-45E9-B104-52E5541B0809@gmail.com"
                class="">
                <meta http-equiv="Content-Type" content="text/html;
                  charset=UTF-8" class="">
                Hi,
                <div class=""><br class="">
                </div>
                <div class="">This idea sounds pretty cool</div>
                <div class="">Just some quick comments inlined below:<br
                    class="">
                  <div class=""><br class="">
                    <blockquote type="cite" class="">
                      <div class="">On Mar 23, 2019, at 1:57 PM,
                        preejackie via llvm-dev <<a
                          href="mailto:llvm-dev@lists.llvm.org" class=""
                          moz-do-not-send="true">llvm-dev@lists.llvm.org</a>>
                        wrote:</div>
                      <br class="Apple-interchange-newline">
                      <div class="">
                        <meta http-equiv="content-type"
                          content="text/html; charset=UTF-8" class="">
                        <div bgcolor="#FFFFFF" text="#000000" class="">
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt;" class=""><font
                              class="" face="Courier New, Courier,
                              monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Hi all, 
</span></font></div>
                          <p dir="ltr"
                            style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"
                            class=""><font class="" face="Courier New,
                              Courier,&#xA; monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">
</span></font></p>
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt;" class=""><font
                              class="" face="Courier New, Courier,
                              monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">I would like to propose "Speculative compilation support in ORC v2 JIT API" for this year GSoC summer project.</span></font></div>
                          <p dir="ltr"
                            style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"
                            class=""><font class="" face="Courier New,
                              Courier,&#xA; monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">
</span></font></p>
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt;" class=""><font
                              class="" face="Courier New, Courier,
                              monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Project Description: </span></font></div>
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt;" class=""><font
                              class="" face="Courier New, Courier,
                              monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">    </span><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Speculative compilation support. One of the selling points of the concurrent ORC APIs is that you can start compiling a function before you need it, in the hope that by the time that you do need it it is already compiled. However, if we just speculatively compile everything we're quickly going to overload our memory/CPU resources, which will be lousy for performance. What we really want to do is to take into account any information we have (from high level program representations, e.g. ASTs or CFGs, or from profiling data from previous executions) to try to guess what functions are worth speculatively compiling next. </span></font></div>
                          <font class="" face="Courier New, Courier,
                            monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Idea is proposed by Lang Hames.</span></font><font
                            class="" face="Courier New, Courier,
                            monospace"><br class="">
                          </font>
                          <p dir="ltr"
                            style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"
                            class=""><font class="" face="Courier New,
                              Courier,&#xA; monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">
</span></font></p>
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt;" class=""><font
                              class="" face="Courier New, Courier,
                              monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Current Status of ORC v2: </span></font></div>
                          <font class="" face="Courier New, Courier,
                            monospace"><br class="">
                          </font>
                          <ol style="margin-top:0pt;margin-bottom:0pt;"
                            class="">
                            <li dir="ltr" style="list-style-type: decimal; font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: 36pt;" class=""><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><font class="" face="Courier New, Courier, monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">ORC currently supports concurrent compilation and Lazy (on request compilation), trunk contains default new ORC JIT implementations as LLJIT, LLLazyJIT. </span></font></div></li>
                            <li dir="ltr" style="list-style-type: decimal; font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: 36pt;" class=""><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><font class="" face="Courier New, Courier, monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">[WIP]  Jit-linker a drop-in-replacement for RuntimeDyld atleast for MachO in ORC JIT.</span></font></div></li>
                            <li dir="ltr" style="list-style-type: decimal; font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: 36pt;" class=""><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><font class="" face="Courier New, Courier, monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Primitive code to handle speculative is in trunk. But it needs to refactored & designed to get generalized, simple APIs to support speculation.</span></font></div></li>
                            <li dir="ltr" style="list-style-type: decimal; font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: 36pt;" class=""><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><font class="" face="Courier New, Courier, monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Currently, no heuristics to support speculation in trunk.</span></font></div></li>
                          </ol>
                          <font class="" face="Courier New, Courier,
                            monospace"><br class="">
                          </font>
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt;" class=""><font
                              class="" face="Courier New, Courier,
                              monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Proposed Solution: </span></font></div>
                          <ol style="margin-top:0pt;margin-bottom:0pt;"
                            class="">
                            <li dir="ltr" style="list-style-type: decimal; font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: 36pt;" class=""><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><font class="" face="Courier New, Courier, monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">New APIs in ORC v2 to support speculation compilation of LLVM bitcode. LLSpecJIT - subtype of LLJIT, default JIT with speculation support in trunk. </span></font></div></li>
                            <li dir="ltr" style="list-style-type: decimal; font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: 36pt;" class=""><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><font class="" face="Courier New, Courier, monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Heuristics to guide speculation - </span></font></div></li>
                          </ol>
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt; margin-left:
                            108pt;" class=""><font class=""
                              face="Courier New, Courier, monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Currently, I’m going through some literature/research papers to find good basic heuristics. We can derive useful information from Control flow graphs, IR etc. So far I figured out that </span><span style="font-size: 12pt; background-color: transparent; font-weight: 700; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Region-based compilation </span><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">is more appropriate for speculation. </span></font></div>
                        </div>
                      </div>
                    </blockquote>
                    <div class=""><br class="">
                    </div>
                    <div class="">Can you justify your point? What do
                      you mean by saying “appropriate”? Is it easy to
                      implement or have better performance on the
                      generated code?</div>
                    <div class=""><br class="">
                    </div>
                    <div class="">Just a FYI:</div>
                    <div class="">The JIT compilation community has been
                      debating over which compilation region should be
                      chosen for quite some time.</div>
                    <div class="">The TL;DR answer is: there is NO
                      single answer, all depends on the usages and
                      engineering efforts. </div>
                    <div class="">Just give you examples on two of the
                      most adopted methods: trace-based(kind of similar
                      to region based) and function-based.</div>
                    <div class="">Famous users of trace-based JIT are
                      early versions of SpiderMonkey(i.e. JS engine in
                      Firefox) and Dalvik VM(i.e. the old VM in
                      Android). This approach can record hot path across
                      functions, and just like the old saying: global
                      optimizations are always preferred. However, it
                      requires more engineering efforts and
                      profiling/tracing is almost mandatory.</div>
                    <div class="">Function-based JIT is used by V8 and
                      ART(Android Runtime, the current VM in Android),
                      to name a few. The biggest advantage is that it’s
                      pretty easy to implement. And the performance is
                      actually not bad in most of the cases. The
                      downside is , of course, it will loose some global
                      optimization opportunities. </div>
                    <div class=""><br class="">
                    </div>
                    <div class="">Be honestly I’m pretty surprised you
                      didn’t mention any of the above projects. Of
                      course, none of them use LLVM, but all of them are
                      outstanding JIT engines with huge amount of users
                      and tested by time. Some of them are even
                      important milestones in the history of dynamic
                      compilation. I believe you can learn the key
                      insight of choosing a specific compilation region
                      from them.</div>
                    <br class="">
                    <blockquote type="cite" class="">
                      <div class="">
                        <div bgcolor="#FFFFFF" text="#000000" class="">
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt; margin-left:
                            108pt;" class=""><font class=""
                              face="Courier New, Courier, monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Since, unit of compilation (granularity) is key good dynamic compilation, region based compilation address that by forming frequently executed code as a region (unit), this can be basic block, function or group of functions. But since, LLVM JIT API needs interoperates with static compiler, unit of compilation here is a complete module. </span></font></div>
                        </div>
                      </div>
                    </blockquote>
                    <br class="">
                    <blockquote type="cite" class="">
                      <div class="">
                        <div bgcolor="#FFFFFF" text="#000000" class="">
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt; margin-left:
                            108pt;" class=""><font class=""
                              face="Courier New, Courier, monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">The plan in mind is to break the module into regions and compile regions speculatively using multiple JIT backend light weight threads. I’m still not sure, how this can be done, I would highly appreciate the feedback from community in deciding the heuristics & granularity to compile.</span></font></div>
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt;" class=""><font
                              class="" face="Courier New, Courier,
                              monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">    </span><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">   </span><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">3.Practical example with benchmarks: To my best of knowledge PostgreSQL using ORC API, it would be easier to get postgresql queries to get compile speculatively and compare results    with baseline (concurrent compiler without speculation).</span></font></div>
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt;" class=""><font
                              class="" face="Courier New, Courier,
                              monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">    </span><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">    </span><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">4. Unit tests + documentation.</span></font></div>
                          <font class="" face="Courier New, Courier,
                            monospace"><br class="">
                          </font>
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt;" class=""><font
                              class="" face="Courier New, Courier,
                              monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Benefits:</span><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">    </span></font></div>
                          <ol style="margin-top:0pt;margin-bottom:0pt;"
                            class="">
                            <li dir="ltr" style="list-style-type: decimal; font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: 72pt;" class=""><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><font class="" face="Courier New, Courier, monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">We can full use of multiple compilation threads, to compile code upfront with minimum false positive. </span></font></div></li>
                            <li dir="ltr" style="list-style-type: decimal; font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre; margin-left: 72pt;" class=""><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><font class="" face="Courier New, Courier, monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Stabilize JIT APIs which most clients looking for when transitioning to newer versions.</span></font></div></li>
                          </ol>
                          <font class="" face="Courier New, Courier,
                            monospace"><br class="">
                          </font>
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt;" class=""><font
                              class="" face="Courier New, Courier,
                              monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Further Opportunities : </span></font></div>
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt;" class=""><font
                              class="" face="Courier New, Courier,
                              monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">We can also use thinlto summaries in module to decide which code is worthier to compile next, based on this lighting </span><a
href="https://www.youtube.com/watch?v=ZCnHxRhQmvs"
                                style="text-decoration:none;" class=""
                                moz-do-not-send="true"><span style="font-size: 12pt; color: rgb(17, 85, 204); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;" class="">LLVM Dev talk by Stefan</span></a><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">. </span></font></div>
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt;" class=""><font
                              class="" face="Courier New, Courier,
                              monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Profile guided optimization - information will be helpful in this, provide further room for improvement.</span></font></div>
                          <p dir="ltr"
                            style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"
                            class=""><font class="" face="Courier New,
                              Courier,&#xA; monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class=""> </span></font></p>
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt;" class=""><font
                              class="" face="Courier New, Courier,
                              monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">I would highly appreciate the community feedback & suggestions :) 
</span></font></div>
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt;" class=""><font
                              class="" face="Courier New, Courier,
                              monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">I will try my best to address all the comments in the proposal. I'm currently familiarizing myself with new APIs and learning heuristics. I will try to get the draft proposal by next week.</span></font></div>
                          <p dir="ltr"
                            style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"
                            class=""><font class="" face="Courier New,
                              Courier,&#xA; monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">
</span></font></p>
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt;" class=""><font
                              class="" face="Courier New, Courier,
                              monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">References: HHVM JIT: A profile-Guided, Region-Based Compiler for PHP & Hack [<a moz-do-not-send="true" href="https://dl.acm.org/citation.cfm?id=3192374" class="">paper</a>].</span></font></div>
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt;" class=""><font
                              class="" face="Courier New, Courier,
                              monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">PostgreSQL [<a moz-do-not-send="true" href="https://doxygen.postgresql.org/structLLVMJitHandle.html" class="">JIT</a>]
</span></font></div>
                          <div style="line-height: 1.38; margin-top:
                            0pt;&#xA; margin-bottom: 0pt;" class=""><font
                              class="" face="Courier New, Courier,
                              monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">Execution Engine [<a moz-do-not-send="true" href="https://reviews.llvm.org/diffusion/L/browse/llvm/trunk/lib/ExecutionEngine/Orc/" class="">ORC</a>]
</span></font></div>
                          <p dir="ltr"
                            style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"
                            class=""><font class="" face="Courier New,
                              Courier,&#xA; monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class=""></span></font></p>
                          <p dir="ltr"
                            style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"
                            class=""><font class="" face="Courier New,
                              Courier,&#xA; monospace"><span style="font-size: 12pt; background-color: transparent; font-weight: 400; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;" class="">
</span></font></p>
                        </div>
                      </div>
                    </blockquote>
                    <div class=""><br class="">
                    </div>
                    <div class="">Best,</div>
                    <div class="">Bekket</div>
                    <br class="">
                    <blockquote type="cite" class="">
                      <div class="">
                        <div bgcolor="#FFFFFF" text="#000000" class="">
                          <pre class="moz-signature" cols="72"><font class="" face="Courier New, Courier, monospace">-- 
Have a great day!
PreeJackie</font></pre>
                        </div>
                        _______________________________________________<br
                          class="">
                        LLVM Developers mailing list<br class="">
                        <a href="mailto:llvm-dev@lists.llvm.org"
                          class="" moz-do-not-send="true">llvm-dev@lists.llvm.org</a><br
                          class="">
                        <a class="moz-txt-link-freetext"
                          href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev"
                          moz-do-not-send="true">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br
                          class="">
                      </div>
                    </blockquote>
                  </div>
                  <br class="">
                </div>
              </blockquote>
              <pre class="moz-signature" cols="72">-- 
Have a great day!
PreeJackie</pre>
            </div>
          </div>
        </blockquote>
      </div>
      <br class="">
    </blockquote>
    <pre class="moz-signature" cols="72">-- 
Have a great day!
PreeJackie</pre>
  </body>
</html>