<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.exupery">
    <title>gmane.comp.lang.smalltalk.exupery</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.exupery</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.exupery/342"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.exupery/341"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.exupery/340"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.exupery/339"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.smalltalk.exupery/338"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.exupery/342">
    <title>Re: Papers that inspire Exupery</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.exupery/342</link>
    <description>&lt;pre&gt;
Hmm, it is. I'll need to investigate.


Bytecode dispatch performance changes depending on what CPU you're
using. The Pentium 4's were the worst given how fast they were and how
badly they suffered from branch misspredicts. Later CPUs optimize for
branch prediction much more and so will suffer from the dispatch
overhead less.

Also stack bytecode is likely to be more compact with a decent encoding
which will reduce the amount of time spent fetching bytecode into the
CPU's caches.

I've noticed that the difference in performance of Exupery compared with
the bytecode interpreter changes wildly depending on the CPU. Exupery is
fasted compared with the bytecode interpreter on the P4 but it's never
been tuned for that CPU because I never owned a machine that used it.


If you can perform an optimization as a simple tree walk then that's
very fast. Exupery does many optimizations that way.

Exupery also does some analysis that's more sophisticated than simple
tree walks. 

Bryce
&lt;/pre&gt;</description>
    <dc:creator>Bryce Kampjes</dc:creator>
    <dc:date>2010-07-06T21:34:44</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.exupery/341">
    <title>Re: Papers that inspire Exupery</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.exupery/341</link>
    <description>&lt;pre&gt;

Link of your papers seems broken.



Thanks for your answer I agree that for the point of view of Jit there is no big deal.
But if you stay on the bytecode level then having some #sendArgTemp0: can avoid dispatching the #pushTemp:0  bytecode.

Also have you an idea on what is faster: 
 - Make a small optimization but work throw the tree many time.
 - Make a big optimization and avoiding tree walk

I guess you have some optimization that can't be done in several tree walk?


&lt;/pre&gt;</description>
    <dc:creator>Mathieu Suen</dc:creator>
    <dc:date>2010-07-06T17:02:44</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.exupery/340">
    <title>Re: Papers that inspire Exupery</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.exupery/340</link>
    <description>&lt;pre&gt;
http://wiki.squeak.org/squeak/5792

The short answer is it's an attempt build on the insights from Holzle's
work on Self compilation and allow type feedback to be used with solid
optimization.

Good inlining and type information through type feedback opens the door
to serious optimization but standard type feedback VMs rely on very fast
compilers which don't have time to optimize well.


My view is the bytecode should be stack based but the JIT register
based. It's easy to do very good register allocation across trees (i.e.
stack based). 

Trees are a convenient structure to work with and a stack based bytecode
is just a linear representation of a tree.

If you're optimizing heavily it doesn't matter too much what
representation you choose as you'll transform it through several
representations during compilation. If you're optimizing quickly and
simply trees are convenient.

Bryce
&lt;/pre&gt;</description>
    <dc:creator>Bryce Kampjes</dc:creator>
    <dc:date>2010-07-05T21:35:22</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.exupery/339">
    <title>Papers that inspire Exupery</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.exupery/339</link>
    <description>&lt;pre&gt;Hi Bryce,

I would like to know if you can provide us a list a papers on Jit.
Anything that inspire/explain what your doing in Exupery.

And also what do you think of stack base VM vs. register base VM?
I am asking because in smalltalk I am wondering if it worth register base VM.

Thanks

Mth









___________________________________________________________________________ 
Yahoo! Mail r&lt;/pre&gt;</description>
    <dc:creator>Mathieu Suen</dc:creator>
    <dc:date>2010-07-05T19:15:09</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.smalltalk.exupery/338">
    <title>Update on inlining</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.smalltalk.exupery/338</link>
    <description>&lt;pre&gt;There's been some progress on Exupery. The current task is inlining
methods that don't create blocks.

The last commit includes the ability to inline methods with arguments.

The remaining tasks are:
 * Accessing the literal frame from an inlined method
 * inlined self references
 * inlined super calls
 * inlined methods with temporaries
 * deoptimising inlined methods
 * updating the profilers to automatically inline methods.

After that it's time to add closure support to Exupery then inline
blocks.

Bryce
&lt;/pre&gt;</description>
    <dc:creator>Bryce Kampjes</dc:creator>
    <dc:date>2010-02-07T17:12:08</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.lang.smalltalk.exupery">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.lang.smalltalk.exupery</link>
  </textinput>
</rdf:RDF>

