<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Klein and Squeak VM architectures</title>
	<atom:link href="http://blog.selflanguage.org/2009/07/04/klein-and-squeak-vm/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.selflanguage.org/2009/07/04/klein-and-squeak-vm/</link>
	<description>The power of simplicity</description>
	<lastBuildDate>Sat, 20 Feb 2010 01:16:22 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Adam Spitz</title>
		<link>http://blog.selflanguage.org/2009/07/04/klein-and-squeak-vm/#comment-58</link>
		<dc:creator>Adam Spitz</dc:creator>
		<pubDate>Tue, 14 Jul 2009 21:51:25 +0000</pubDate>
		<guid isPermaLink="false">http://blog.selflanguage.org/?p=25#comment-58</guid>
		<description>Feel free to ask questions here, or on the &lt;a href=&quot;http://forum.selflanguage.org/&quot; rel=&quot;nofollow&quot;&gt;Self mailing list&lt;/a&gt;.

I&#039;ve never been quite sure which of Self&#039;s ideas are already well-understood by the rest of the Smalltalk community. Maybe it&#039;d be fun to have a series of posts here on the ways in which Self differs from Smalltalk.</description>
		<content:encoded><![CDATA[<p>Feel free to ask questions here, or on the <a href="http://forum.selflanguage.org/" rel="nofollow">Self mailing list</a>.</p>
<p>I&#8217;ve never been quite sure which of Self&#8217;s ideas are already well-understood by the rest of the Smalltalk community. Maybe it&#8217;d be fun to have a series of posts here on the ways in which Self differs from Smalltalk.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Cunnington</title>
		<link>http://blog.selflanguage.org/2009/07/04/klein-and-squeak-vm/#comment-57</link>
		<dc:creator>Chris Cunnington</dc:creator>
		<pubDate>Tue, 14 Jul 2009 20:29:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.selflanguage.org/?p=25#comment-57</guid>
		<description>Hi Adam, 

Great to see you at the Toronto Smalltalk Users Group last night. This blog and the Self homepage are going to be very useful. I&#039;m going to try to figure out how some of this stuff works over this summer. 

Chris</description>
		<content:encoded><![CDATA[<p>Hi Adam, </p>
<p>Great to see you at the Toronto Smalltalk Users Group last night. This blog and the Self homepage are going to be very useful. I&#8217;m going to try to figure out how some of this stuff works over this summer. </p>
<p>Chris</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jecel Assumpcao Jr</title>
		<link>http://blog.selflanguage.org/2009/07/04/klein-and-squeak-vm/#comment-56</link>
		<dc:creator>Jecel Assumpcao Jr</dc:creator>
		<pubDate>Wed, 08 Jul 2009 01:40:00 +0000</pubDate>
		<guid isPermaLink="false">http://blog.selflanguage.org/?p=25#comment-56</guid>
		<description>Yeah, email is better for a detailed discussion. If you look at the Jazelle technology that ARM uses to speed up Java you can get a good idea of what I am talking about.

http://en.wikipedia.org/wiki/Jazelle</description>
		<content:encoded><![CDATA[<p>Yeah, email is better for a detailed discussion. If you look at the Jazelle technology that ARM uses to speed up Java you can get a good idea of what I am talking about.</p>
<p><a href="http://en.wikipedia.org/wiki/Jazelle" rel="nofollow">http://en.wikipedia.org/wiki/Jazelle</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ken Causey</title>
		<link>http://blog.selflanguage.org/2009/07/04/klein-and-squeak-vm/#comment-55</link>
		<dc:creator>Ken Causey</dc:creator>
		<pubDate>Tue, 07 Jul 2009 16:18:58 +0000</pubDate>
		<guid isPermaLink="false">http://blog.selflanguage.org/?p=25#comment-55</guid>
		<description>OK, then I guess I would really like to hear some details regarding that, what can help the bytecode interpreter written in machine language.  But perhaps this is not the place.</description>
		<content:encoded><![CDATA[<p>OK, then I guess I would really like to hear some details regarding that, what can help the bytecode interpreter written in machine language.  But perhaps this is not the place.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jecel Assumpcao Jr</title>
		<link>http://blog.selflanguage.org/2009/07/04/klein-and-squeak-vm/#comment-54</link>
		<dc:creator>Jecel Assumpcao Jr</dc:creator>
		<pubDate>Tue, 07 Jul 2009 15:35:43 +0000</pubDate>
		<guid isPermaLink="false">http://blog.selflanguage.org/?p=25#comment-54</guid>
		<description>Ken, I eliminated B-BC (the bytecode interpreter written in bytecodes) in step 1, so the hardware in step 2 is supposed to help out C-BC (the bytecode interpreter written in machine language).

These odd abbreviations don&#039;t help much - a drawing or animation would be best.</description>
		<content:encoded><![CDATA[<p>Ken, I eliminated B-BC (the bytecode interpreter written in bytecodes) in step 1, so the hardware in step 2 is supposed to help out C-BC (the bytecode interpreter written in machine language).</p>
<p>These odd abbreviations don&#8217;t help much &#8211; a drawing or animation would be best.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ken Causey</title>
		<link>http://blog.selflanguage.org/2009/07/04/klein-and-squeak-vm/#comment-52</link>
		<dc:creator>Ken Causey</dc:creator>
		<pubDate>Mon, 06 Jul 2009 18:06:12 +0000</pubDate>
		<guid isPermaLink="false">http://blog.selflanguage.org/?p=25#comment-52</guid>
		<description>Jecel, did you mean B-BC in &#039;step 2)&#039;?  I have to assume so given the mention of bytecodes.  If not then I think this could use some further explanation.</description>
		<content:encoded><![CDATA[<p>Jecel, did you mean B-BC in &#8217;step 2)&#8217;?  I have to assume so given the mention of bytecodes.  If not then I think this could use some further explanation.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jecel Assumpcao Jr</title>
		<link>http://blog.selflanguage.org/2009/07/04/klein-and-squeak-vm/#comment-51</link>
		<dc:creator>Jecel Assumpcao Jr</dc:creator>
		<pubDate>Mon, 06 Jul 2009 02:18:36 +0000</pubDate>
		<guid isPermaLink="false">http://blog.selflanguage.org/?p=25#comment-51</guid>
		<description>Your understanding of the Squeak-VM is correct, but some of the work I am doing on SiliconSqueak might be of interest. While the VM is actually structured as a class Interpreter which implements the bytecode engine and most of the primitives, and which inherits from ObjectMemory (unlike the &quot;blue book&quot; VM), I will explain it as if it were three roughly equal parts: B-BC (the bytecode interpreter in Slang (bytecodes), B-OM (the object memory in Slang) and B-PR (primitives in Slang). These get translated into C and compiled into machine code, becoming C-BC, C-OM and C-PR which run the tinyBenchmarks about 1000 times faster than the B versions.

step 1) short circuit B-BC so that whenever it would have been invoked we have C-BC actually interpret the bytecodes.

step 2) have special hardware speed up C-BC so that bytecodes run at roughly the same speed as machine language.

step 3) now C-OM isn&#039;t really faster than B-OM nor C-PR than B-PR, so we add a detour so the Slang versions are used instead of the native code ones. The InterpreterSimulator is no longer dealing with a second and separate image, but in a Klein bottle style twist it is now controlling the image in which it is running.

Many of the complications you mentioned apply to this scheme as well: how do you send messages without more sending messages, or allocate objects without allocating more objects. And while the system I described is an interpreter, adding Cog native compilation would make it even nicer.

About the danger, one possible solution is to go back to having two images. A system image operates on itself (with all the advantages and risks) and it also operates on a user image running the actual application.</description>
		<content:encoded><![CDATA[<p>Your understanding of the Squeak-VM is correct, but some of the work I am doing on SiliconSqueak might be of interest. While the VM is actually structured as a class Interpreter which implements the bytecode engine and most of the primitives, and which inherits from ObjectMemory (unlike the &#8220;blue book&#8221; VM), I will explain it as if it were three roughly equal parts: B-BC (the bytecode interpreter in Slang (bytecodes), B-OM (the object memory in Slang) and B-PR (primitives in Slang). These get translated into C and compiled into machine code, becoming C-BC, C-OM and C-PR which run the tinyBenchmarks about 1000 times faster than the B versions.</p>
<p>step 1) short circuit B-BC so that whenever it would have been invoked we have C-BC actually interpret the bytecodes.</p>
<p>step 2) have special hardware speed up C-BC so that bytecodes run at roughly the same speed as machine language.</p>
<p>step 3) now C-OM isn&#8217;t really faster than B-OM nor C-PR than B-PR, so we add a detour so the Slang versions are used instead of the native code ones. The InterpreterSimulator is no longer dealing with a second and separate image, but in a Klein bottle style twist it is now controlling the image in which it is running.</p>
<p>Many of the complications you mentioned apply to this scheme as well: how do you send messages without more sending messages, or allocate objects without allocating more objects. And while the system I described is an interpreter, adding Cog native compilation would make it even nicer.</p>
<p>About the danger, one possible solution is to go back to having two images. A system image operates on itself (with all the advantages and risks) and it also operates on a user image running the actual application.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
