<?xml version="1.0"?>
<rss version="2.0.">
  <channel>
    <title>Advogato blog for gary</title>
    <link>http://www.advogato.org/person/gary/</link>
    <description>Advogato blog for gary</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Sat, 17 May 2008 17:56:50 GMT</pubDate>
    <item>
      <pubDate>Thu, 15 May 2008 03:21:35 GMT</pubDate>
      <title>15 May 2008</title>
      <link>http://www.advogato.org/person/gary/diary.html?start=204</link>
      <guid>http://gbenson.net/?p=73</guid>
      <description>&lt;p&gt;Today I got my second method working, &lt;code&gt;String.hashCode()&lt;/code&gt;.  Now I have conditional and unconditional branching, field access, array loads, a whole bunch of integer operators, and returning with a result implemented and (somewhat) tested.  The &lt;a href="http://gbenson.net/?page_id=71" &gt;bytecode coverage chart&lt;/a&gt; says I&amp;#8217;m 50% done, but I don&amp;#8217;t believe it.&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Sat, 10 May 2008 08:11:31 GMT</pubDate>
      <title>10 May 2008</title>
      <link>http://www.advogato.org/person/gary/diary.html?start=203</link>
      <guid>http://gbenson.net/?p=72</guid>
      <description>&lt;p&gt;Well, it&amp;#8217;s taken a month and a half &amp;mdash; and over 2000 lines of code &amp;mdash; but I finally got a &lt;a href="http://gbenson.net/?page_id=70" &gt;method&lt;/a&gt; out of Shark.&lt;/p&gt;
&lt;p&gt;I made a &lt;a href="http://gbenson.net/?page_id=71" &gt;chart&lt;/a&gt; showing which bytecodes are implemented, which I&amp;#8217;ll keep updated as I progress.  The estimated total coverage of 18% is slightly fanciful as it treats all bytecodes as equally complex, with &lt;code&gt;nop&lt;/code&gt; having the same weight as &lt;code&gt;new&lt;/code&gt; for example.  Some codes are marked as complete but untested too.  The way the compiler is structured means that in simple cases I can copy and paste whole blocks of bytecodes from the server compiler, so where I was doing one bytecode in a block I&amp;#8217;ve copied the lot across.  Most of them ought to be fine, but a couple are dubious.  I&amp;#8217;m still shuffling things around to try and make things less so.&lt;/p&gt;
&lt;p&gt;Onwards&amp;#8230;&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Fri, 11 Apr 2008 16:18:12 GMT</pubDate>
      <title>11 Apr 2008</title>
      <link>http://www.advogato.org/person/gary/diary.html?start=202</link>
      <guid>http://gbenson.net/?p=69</guid>
      <description>&lt;p&gt;Shark just JITted its first bytecode:&lt;/p&gt;
&lt;pre&gt;
load i32* %local0               ; &lt;i32&gt;:15 [#uses=1]
inttoptr i32 %sp to i32*        ; &lt;i32*&gt;:16 [#uses=1]
store i32 %15, i32* %16
%sp1 = sub i32 %sp, 4           ; &lt;i32&gt; [#uses=2]
&lt;/pre&gt;
&lt;p&gt;Ladies and gentlemen, it is &lt;code&gt;aload_0&lt;/code&gt;!&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Tue, 1 Apr 2008 08:23:22 GMT</pubDate>
      <title>1 Apr 2008</title>
      <link>http://www.advogato.org/person/gary/diary.html?start=201</link>
      <guid>http://gbenson.net/?p=68</guid>
      <description>&lt;p&gt;Yesterday I had a mini-milestone in that I got enough bits and pieces written to have HotSpot call my JIT&amp;#8217;s &lt;code&gt;compile_method()&lt;/code&gt; method. The next trick will be to get a piece of code back into HotSpot without it being relocated on the way.&lt;/p&gt;
&lt;p&gt;Of course, the zero interpreter doesn&amp;#8217;t have profiling, so it only works if you force it with &lt;code&gt;-Xcomp&lt;/code&gt; at the moment.&lt;/p&gt;
&lt;p&gt;Also, I disabled &lt;code&gt;InlineIntrinsics&lt;/code&gt;, which reminded me that there was some kind of fast accessor thing for JNI that I disabled in the original ppc port. I should fix that at some point.&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Mon, 31 Mar 2008 10:25:32 GMT</pubDate>
      <title>31 Mar 2008</title>
      <link>http://www.advogato.org/person/gary/diary.html?start=200</link>
      <guid>http://gbenson.net/?p=67</guid>
      <description>&lt;p&gt;Towards the end of last week I started trying to figure out how to slot an LLVM-based JIT into IcedTea. I had a vague idea that I could simply port C1 to it, but I&amp;#8217;m not sure that would work so well.  Both existing JITs expect to manage register allocation, for example, which LLVM will have to do. So I started hacking at the build system to have it build an entirely new JIT.  I called it &#x201C;shark&#x201D; &amp;mdash; I was going to call it C0 what with the other JITs being called C1 and C2, but I didn&amp;#8217;t like the mild confusion that having them named &lt;em&gt;and&lt;/em&gt; numbered causes, and shark was too good a name to waste on a one-off dummy architecture.&lt;/p&gt;
&lt;p&gt;And speaking of one-off dummy architectures, my &amp;ldquo;if I can build on a platform that doesn&#x2019;t even exist then I can build on anything&amp;rdquo; proved short lived &amp;mdash; it doesn&amp;#8217;t help on architectures that &lt;em&gt;do&lt;/em&gt; exist but have really stupid unames that need truncating.  I&amp;#8217;m talking about ARM, of course, uname freak of the cosmos.  So I&amp;#8217;m going to try and get that working this week too.&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Wed, 26 Mar 2008 12:17:01 GMT</pubDate>
      <title>26 Mar 2008</title>
      <link>http://www.advogato.org/person/gary/diary.html?start=199</link>
      <guid>http://gbenson.net/?p=66</guid>
      <description>&lt;p&gt;As of about an hour ago it should be possible to build icedtea6 on any Linux system with no more effort than &lt;code&gt;./configure&lt;/code&gt; and &lt;code&gt;make&lt;/code&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Tue, 25 Mar 2008 16:19:46 GMT</pubDate>
      <title>25 Mar 2008</title>
      <link>http://www.advogato.org/person/gary/diary.html?start=198</link>
      <guid>http://gbenson.net/?p=65</guid>
      <description>&lt;p&gt;I&amp;#8217;m in the final stages of a build system for zero that will work on any architecture.  For kicks, I hacked my &lt;code&gt;/bin/uname&lt;/code&gt; to say &amp;ldquo;shark&amp;rdquo; instead of &amp;ldquo;ppc&amp;rdquo;.  I figure if I can build on a platform that doesn&amp;#8217;t even exist then I can pretty much build on anything.&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Thu, 13 Mar 2008 11:19:50 GMT</pubDate>
      <title>13 Mar 2008</title>
      <link>http://www.advogato.org/person/gary/diary.html?start=197</link>
      <guid>http://gbenson.net/?p=64</guid>
      <description>&lt;p&gt;&lt;a href="http://gbenson.net/wp-content/uploads/2008/03/armv5tejl.jpg" &gt;&lt;img src="http://gbenson.net/wp-content/uploads/2008/03/armv5tejl-tn.jpg" alt="IcedTea on ARM!"/&gt;&lt;/a&gt;&lt;br&gt;Xerxes R&amp;aring;nby sent me this&amp;#8230;</description>
    </item>
    <item>
      <pubDate>Fri, 7 Mar 2008 11:22:23 GMT</pubDate>
      <title>7 Mar 2008</title>
      <link>http://www.advogato.org/person/gary/diary.html?start=196</link>
      <guid>http://gbenson.net/?p=61</guid>
      <description>&lt;p&gt;I got two emails with zero patches yesterday.  One I was expecting, from Yi Zhan of HP who has it working on ia64; the other was totally out of the blue, from Ruediger Oertel of SuSE who has it building on s390 and s390x.  I always hoped it would Just Work&amp;trade; but I never quite believed it!  Now all I need is the time to integrate it all!&lt;/p&gt;
&lt;p&gt;Which I may just have. While I was poking around trying to fix the IcedTea 7 stack overflow I discovered that a)&amp;nbsp;we mark a lot of stack unusable with 64kb pages, and b)&amp;nbsp;the stack region locator doesn&amp;#8217;t seem to work, at least for the cases with guard pages, or for ia64, or possibly with 64kb pages when the Java thread is an initial thread.  I spent some time looking into it and rewriting it, and I think I have it sussed.  (If you ever wanted to know where ia64 puts its guard pages then you need &lt;a href="http://inauspicious.org/files/icedtea/ia64-stack-banger.c" &gt;this&lt;/a&gt;!) Now it all seems to work I&amp;#8217;m going to spend the afternoon writing some emails to the &lt;a href="http://mail.openjdk.java.net/mailman/listinfo/hotspot-dev" &gt;HotSpot list&lt;/a&gt;, then next week I intend to hole up and implement my holy grail of a zero build system that does not require &lt;em&gt;any&lt;/em&gt; patching to build on a new architecture.&lt;/p&gt;
&lt;p&gt;So don&amp;#8217;t expect any action from me until that&amp;#8217;s done :)&lt;/p&gt;
</description>
    </item>
    <item>
      <pubDate>Wed, 5 Mar 2008 13:09:30 GMT</pubDate>
      <title>5 Mar 2008</title>
      <link>http://www.advogato.org/person/gary/diary.html?start=195</link>
      <guid>http://gbenson.net/?p=60</guid>
      <description>&lt;p&gt;The 64kb pages issue turned out to be really simple.  HotSpot reserves a bunch of pages at the end of the stack for overflow recovery.  There&amp;#8217;s one &amp;ldquo;red&amp;rdquo; page, two &amp;ldquo;yellow&amp;rdquo; pages, and three &amp;ldquo;shadow zone&amp;rdquo; pages.  I don&amp;#8217;t know what any of these pages actually do, but I do know that a 512k stack of eight 64k pages less six reserved pages and one glibc guard page leaves&amp;#8230; 64k page for everything else.  It was throwing a &lt;code&gt;StackOverflowError&lt;/code&gt; because it was running out of stack.&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
