<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<div>
<p dir="ltr">Sorry guys that was the wrong&nbsp; channel...I was telling them that I enjoy reading this list&nbsp; :)</p>
<p dir="ltr">BR, basti </p>
<div class="x_quote">Am 12.12.2014 14:25 schrieb &quot;vm-dev-request@lists.squeakfoundation.org&quot; &lt;vm-dev-request@lists.squeakfoundation.org&gt;:<br type="attribution">
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">Send Vm-dev mailing list submissions to<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vm-dev@lists.squeakfoundation.org<br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://lists.squeakfoundation.org/mailman/listinfo/vm-dev">http://lists.squeakfoundation.org/mailman/listinfo/vm-dev</a><br>
or, via email, send a message with subject or body 'help' to<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vm-dev-request@lists.squeakfoundation.org<br>
<br>
You can reach the person managing the list at<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vm-dev-owner@lists.squeakfoundation.org<br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than &quot;Re: Contents of Vm-dev digest...&quot;<br>
<br>
<br>
Today's Topics:<br>
<br>
&nbsp;&nbsp; 1. GCC version &gt; 4.4 (Norbert Hartl)<br>
&nbsp;&nbsp; 2. Re: Vm-dev Digest, Vol 102, Issue 47 (Kruck, Bastian)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Fri, 12 Dec 2014 14:22:41 &#43;0100<br>
From: Norbert Hartl &lt;norbert@hartl.name&gt;<br>
Subject: [Vm-dev] GCC version &gt; 4.4<br>
To: Squeak Virtual Machine Development Discussion<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vm-dev@lists.squeakfoundation.org&gt;<br>
Message-ID: &lt;4DDE316D-34B7-4631-AEBE-498C38A0796C@hartl.name&gt;<br>
Content-Type: text/plain; charset=us-ascii<br>
<br>
I tried to compile the vm with a newer gcc than 4.4. It didn't work with 4.9 and I tested 4.8 and 4.7 which do not work either. The last one I was successful was 4.4. Trying to compile it gives an error about conflicting types. Looking into brought to the signature
 of procedures in cogit.c. Here we have something like<br>
<br>
static sqInt abstractRegisterForConcreteRegister(AbstractInstruction * self_in_abstractRegisterForConcreteRegister, sqInt reg) NoDbgRegParms;<br>
<br>
and the definition is<br>
<br>
static sqInt<br>
abstractRegisterForConcreteRegister(AbstractInstruction * self_in_abstractRegisterForConcreteRegister, sqInt reg)<br>
{<br>
<br>
It seems that the NoDbgRegParms is changing the game. So I assume the signatures have to be exactly the same. Putting NoDbgRegParms after the parentheses in the definition does not work. So I changed both to have it in front like<br>
<br>
NoDbgRegParms static sqInt abstractRegisterForConcreteRegister(AbstractInstruction * self_in_abstractRegisterForConcreteRegister, sqInt reg);<br>
<br>
and<br>
<br>
NoDbgRegParms static sqInt<br>
abstractRegisterForConcreteRegister(AbstractInstruction * self_in_abstractRegisterForConcreteRegister, sqInt reg)<br>
{<br>
<br>
and this compiles for me. So two questions:<br>
<br>
- am I write with my assumption and is the change a valid solution for the problem<br>
- if yes will you change it or should I give it a try. It will take some time for me to figure out where that is exactly in the VMMaker code and I assume that it is a no-brainer for someone developing actively with VMMaker<br>
<br>
regards,<br>
<br>
Norbert<br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Fri, 12 Dec 2014 13:25:49 &#43;0000<br>
From: &quot;Kruck, Bastian&quot; &lt;Bastian.Kruck@student.hpi.uni-potsdam.de&gt;<br>
Subject: [Vm-dev] Re: Vm-dev Digest, Vol 102, Issue 47<br>
To: &quot;vm-dev@lists.squeakfoundation.org&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vm-dev@lists.squeakfoundation.org&gt;<br>
Message-ID:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;C977D65C57965347851FA58806AFD2550E1BC6B7@MXSTU2012.hpi.uni-potsdam.de&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
Content-Type: text/plain; charset=&quot;iso-8859-1&quot;<br>
<br>
Oh Mann, das ist spannend, die&nbsp; vm-dev List zu verfolgen!<br>
<br>
Danke Tobi f?r die Aufforderung, mich da einzischreiben,<br>
<br>
Danke Bert f?r die Diskussionen<br>
<br>
:=]]<br>
<br>
Basti<br>
<br>
Am 12.12.2014 13:01 schrieb &quot;vm-dev-request@lists.squeakfoundation.org&quot; &lt;vm-dev-request@lists.squeakfoundation.org&gt;:<br>
Send Vm-dev mailing list submissions to<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vm-dev@lists.squeakfoundation.org<br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://lists.squeakfoundation.org/mailman/listinfo/vm-dev">http://lists.squeakfoundation.org/mailman/listinfo/vm-dev</a><br>
or, via email, send a message with subject or body 'help' to<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vm-dev-request@lists.squeakfoundation.org<br>
<br>
You can reach the person managing the list at<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vm-dev-owner@lists.squeakfoundation.org<br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than &quot;Re: Contents of Vm-dev digest...&quot;<br>
<br>
<br>
Today's Topics:<br>
<br>
&nbsp;&nbsp; 1. Re: Re: Pharo/Squeak versions (using CogVM?) fail immediately<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; when executed on AMD Athlon XP (Steve Rees)<br>
&nbsp;&nbsp; 2. VM Maker: VMMaker.oscog-eem.978.mcz (commits@source.squeak.org)<br>
&nbsp;&nbsp; 3. VM Maker: VMMaker.oscog-eem.979.mcz (commits@source.squeak.org)<br>
&nbsp;&nbsp; 4. VM Maker: VMMaker.oscog-eem.980.mcz (commits@source.squeak.org)<br>
&nbsp;&nbsp; 5. 32/64 bit VM and image combinations (was: egg sucking&nbsp;&nbsp;&nbsp;&nbsp; alert)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (David T. Lewis)<br>
&nbsp;&nbsp; 6. 64-bit FFI (was: egg sucking alert) (David T. Lewis)<br>
&nbsp;&nbsp; 7. Re: egg sucking alert (Stefan Marr)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Thu, 11 Dec 2014 22:50:53 &#43;0000<br>
From: Steve Rees &lt;squeak-vm-dev@vimes.worldonline.co.uk&gt;<br>
Subject: Re: [Vm-dev] Re: Pharo/Squeak versions (using CogVM?) fail<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; immediately&nbsp;&nbsp;&nbsp;&nbsp; when executed on AMD Athlon XP<br>
To: vm-dev@lists.squeakfoundation.org<br>
Message-ID: &lt;548A1FCD.4010406@vimes.worldonline.co.uk&gt;<br>
Content-Type: text/plain; charset=UTF-8; format=flowed<br>
<br>
<br>
On 11/12/2014 19:29, osl wrote:<br>
&gt; Eliot Miranda-2 wrote<br>
&gt;&gt; But an Athlon is 15 years old now and very sloooooow.&nbsp; You could pick up a<br>
&gt;&gt; modern machine very cheaply. Can you not upgrade your hardware?<br>
&gt; I guess it's a mix of nostalgia and an &quot;if it ain't broke don't upgrade it&quot;<br>
&gt; mindset. :)<br>
Well, in this context at least, you could class it as &quot;broke&quot; in that it<br>
won't run the stuff you want, if you are looking for an excuse to upgrade :D<br>
<br>
Steve<br>
<br>
--<br>
You can follow me on twitter at <a href="http://twitter.com/smalltalkhacker">http://twitter.com/smalltalkhacker</a><br>
<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Thu, 11 Dec 2014 22:58:04.522 0000<br>
From: commits@source.squeak.org<br>
Subject: [Vm-dev] VM Maker: VMMaker.oscog-eem.978.mcz<br>
To: vm-dev@lists.squeakfoundation.org<br>
Message-ID:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mailman.0.1418385633.10973.vm-dev@lists.squeakfoundation.org&gt;<br>
<br>
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:<br>
<a href="http://source.squeak.org/VMMaker/VMMaker.oscog-eem.978.mcz">http://source.squeak.org/VMMaker/VMMaker.oscog-eem.978.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: VMMaker.oscog-eem.978<br>
Author: eem<br>
Time: 11 December 2014, 2:56:59.634 pm<br>
UUID: 1af5bc4f-0f74-4dcb-bebb-24e2d2265a05<br>
Ancestors: VMMaker.oscog-eem.977<br>
<br>
Generate the right casts for left shift beyond the int<br>
range.<br>
Generate the right error code for negative arguments<br>
to primitiveSizeInBytesOfInstance<br>
<br>
=============== Diff against VMMaker.oscog-eem.977 ===============<br>
<br>
Item was changed:<br>
&nbsp; ----- Method: CCodeGenerator&gt;&gt;generateShiftLeft:on:indent: (in category 'C translation') -----<br>
&nbsp; generateShiftLeft: msgNode on: aStream indent: level<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;Generate a C bitShift.&nbsp; If we can determine the result<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; would overflow the word size, cast to a long integer.&quot;<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | rcvr arg valueBeyondInt castToLong |<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | rcvr arg bitSizeOfInt |<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bitSizeOfInt := 1 bitShift: BytesPerWord * 4. &quot;The default type of const &lt;&lt; N is int.&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rcvr := msgNode receiver.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arg := msgNode args first.<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; valueBeyondInt := 1 bitShift: BytesPerWord * 4. &quot;The default type of const &lt;&lt; N is int.&quot;<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; castToLong := false.<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rcvr constantNumbericValueOrNil ifNotNil:<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [:rcvrVal|<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arg constantNumbericValueOrNil ifNotNil:<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [:argVal|<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; castToLong := rcvrVal &lt; valueBeyondInt<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [(rcvrVal bitShift: argVal) &gt;= valueBeyondInt]]].<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; castToLong<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ifTrue:<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [rcvr isConstant<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ifTrue:<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [self emitCExpression: rcvr on: aStream.<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aStream nextPutAll: 'LL']<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ifFalse:<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [aStream nextPutAll: '((unsigned long)'.<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self emitCExpression: rcvr on: aStream.<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aStream nextPut: $)]]<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ifFalse:<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [self emitCExpression: rcvr on: aStream].<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self emitCExpression: rcvr on: aStream.<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (rcvr isConstant and: [arg isConstant<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [rcvr value isInteger and: [arg value isInteger<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [rcvr value &lt; (1 bitShift: BytesPerWord * 8)<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [(rcvr value bitShift: arg value) &gt;= bitSizeOfInt]]]]]) ifTrue:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [aStream nextPutAll: 'LL'].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aStream nextPutAll: ' &lt;&lt; '.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self emitCExpression: arg on: aStream!<br>
<br>
Item was changed:<br>
&nbsp; ----- Method: SpurMemoryManager&gt;&gt;byteSizeOfInstanceOf:withIndexableSlots:errInto: (in category 'indexing primitive support') -----<br>
&nbsp; byteSizeOfInstanceOf: classObj withIndexableSlots: nElements errInto: errorBlock<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | instSpec classFormat numSlots |<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;var: 'numSlots' type: #usqInt&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; classFormat := self formatOfClass: classObj.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instSpec := self instSpecOfClassFormat: classFormat.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instSpec caseOf: {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [self arrayFormat]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [numSlots := nElements].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [self indexablePointersFormat]&nbsp; -&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [numSlots := (self fixedFieldsOfClassFormat: classFormat) &#43; nElements].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [self weakArrayFormat]&nbsp; -&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [numSlots := (self fixedFieldsOfClassFormat: classFormat) &#43; nElements].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [self sixtyFourBitIndexableFormat]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [numSlots := self bytesPerOop = 4 ifTrue: [nElements * 2] ifFalse: [nElements]].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [self firstLongFormat]&nbsp; -&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [numSlots := self bytesPerOop = 4 ifTrue: [nElements] ifFalse: [nElements &#43; 1 // 2]].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [self firstShortFormat] -&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [numSlots := self bytesPerOop = 4 ifTrue: [nElements &#43; 1 // 2] ifFalse: [nElements &#43; 3 // 4]].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [self firstByteFormat]&nbsp; -&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [numSlots := nElements &#43; (self bytesPerOop - 1) // self bytesPerOop].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [self firstCompiledMethodFormat]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt; &quot;Assume nElements is derived from CompiledMethod&gt;&gt;basicSize.&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [numSlots := nElements &#43; (self bytesPerOop - 1) // self bytesPerOop] }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; otherwise: [^errorBlock value: PrimErrBadReceiver negated]. &quot;non-indexable&quot;<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; numSlots &gt;= (1 asLong &lt;&lt; (self bytesPerOop * 8 - self logBytesPerOop)) ifTrue:<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [^errorBlock value: (nElements &lt; 0 ifTrue: [PrimErrBadArgument] ifFalse: [PrimErrLimitExceeded])].<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; numSlots &gt;= (1 &lt;&lt; (self bytesPerOop * 8 - self logBytesPerOop)) ifTrue:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [^errorBlock value: PrimErrLimitExceeded].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^self objectBytesForSlots: numSlots!<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 3<br>
Date: Fri, 12 Dec 2014 01:15:09.064 0000<br>
From: commits@source.squeak.org<br>
Subject: [Vm-dev] VM Maker: VMMaker.oscog-eem.979.mcz<br>
To: vm-dev@lists.squeakfoundation.org<br>
Message-ID:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mailman.1.1418385633.10973.vm-dev@lists.squeakfoundation.org&gt;<br>
<br>
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:<br>
<a href="http://source.squeak.org/VMMaker/VMMaker.oscog-eem.979.mcz">http://source.squeak.org/VMMaker/VMMaker.oscog-eem.979.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: VMMaker.oscog-eem.979<br>
Author: eem<br>
Time: 11 December 2014, 5:14:05.949 pm<br>
UUID: 6e5d060a-75ea-42ab-8dd3-ac3d7a550ed9<br>
Ancestors: VMMaker.oscog-eem.978<br>
<br>
Handle not in nilOrBooleanConstantReceiverOf:<br>
<br>
Don't do the 32-bit swap in a 32-bit words object in<br>
64-bit Spur.&nbsp; May have to do it in a 64-bit word obj<br>
in 64-bit Spur, but it can wait.<br>
<br>
=============== Diff against VMMaker.oscog-eem.978 ===============<br>
<br>
Item was changed:<br>
&nbsp; ----- Method: CCodeGenerator&gt;&gt;nilOrBooleanConstantReceiverOf: (in category 'utilities') -----<br>
&nbsp; nilOrBooleanConstantReceiverOf: aNode<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;Answer nil or the boolean constant that is the receiver of the given message send.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Used to suppress conditional code when the condition is a translation-time constant.&quot;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | val receiver argument |<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; generateDeadCode ifTrue:[^nil].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((self isConstantNode: aNode valueInto: [:v| val := v])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [#(true false) includes: val]) ifTrue:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [^val].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aNode isSend ifTrue:<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [aNode selector == #not ifTrue:<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [(self nilOrBooleanConstantReceiverOf: aNode receiver) ifNotNil:<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [:bool| ^bool not]].<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((#(or: and:) includes: aNode selector)<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [((#(or: and:) includes: aNode selector)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [aNode args last isStmtList<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [aNode args last statements size = 1]]) ifTrue:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [(self nilOrBooleanConstantReceiverOf: aNode receiver) ifNotNil:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [:rcvr|<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((rcvr == false and: [aNode selector == #and:])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; or: [rcvr == true and: [aNode selector == #or:]]) ifTrue:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [^rcvr].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (self nilOrBooleanConstantReceiverOf: aNode args last statements first) ifNotNil:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [:arg|<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^rcvr perform: aNode selector with: [arg]]]].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((#(= ~= &lt; &gt; &lt;= &gt;=) includes: aNode selector)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [(self isConstantNode: aNode receiver valueInto: [:v| receiver := v])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [receiver isInteger<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [(self isConstantNode: aNode args first valueInto: [:v| argument := v])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [argument isInteger]]]]) ifTrue:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [^receiver perform: aNode selector with: argument]].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^nil!<br>
<br>
Item was changed:<br>
&nbsp; ----- Method: StackInterpreter&gt;&gt;updateObjectsPostByteSwap (in category 'image save/restore') -----<br>
&nbsp; updateObjectsPostByteSwap<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;Byte-swap the words of all bytes objects in the image, including Strings, ByteArrays,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and CompiledMethods. This returns these objects to their original byte ordering<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; after blindly byte-swapping the entire image. For compiled&nbsp; methods, byte-swap<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; only their bytecodes part. Ensure floats are in platform-order.&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | swapFloatWords |<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; swapFloatWords := objectMemory vmEndianness ~= imageFloatsBigEndian.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self assert: ClassFloatCompactIndex ~= 0.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objectMemory allObjectsDo:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [:oop| | fmt wordAddr methodHeader temp |<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fmt := objectMemory formatOf: oop.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fmt &gt;= self firstByteFormat ifTrue: &quot;oop contains bytes&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [wordAddr := oop &#43; objectMemory baseHeaderSize.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fmt &gt;= self firstCompiledMethodFormat ifTrue: &quot;compiled method; start after methodHeader and literals&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [methodHeader := self longAt: oop &#43; objectMemory baseHeaderSize.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wordAddr := wordAddr &#43; (((objectMemory literalCountOfMethodHeader: methodHeader) &#43; LiteralStart) * objectMemory bytesPerOop)].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objectMemory reverseBytesFrom: wordAddr to: oop &#43; (objectMemory sizeBitsOf: oop)].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fmt = self firstLongFormat ifTrue: &quot;Bitmap, Float etc&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [(swapFloatWords<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [(objectMemory compactClassIndexOf: oop) = ClassFloatCompactIndex])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ifTrue:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [temp := self longAt: oop &#43; objectMemory baseHeaderSize.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self longAt: oop &#43; objectMemory baseHeaderSize put: (self longAt: oop &#43; objectMemory baseHeaderSize &#43; 4).<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self longAt: oop &#43; objectMemory baseHeaderSize &#43; 4 put: temp]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ifFalse:<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [(objectMemory hasSpurMemoryManagerAPI not<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [objectMemory wordSize = 8]) ifTrue: &quot;Object contains 32-bit half-words packed into 64-bit machine words.&quot;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [objectMemory wordSize = 8 ifTrue: &quot;Object contains 32-bit half-words packed into 64-bit machine words.&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [wordAddr := oop &#43; objectMemory baseHeaderSize.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objectMemory reverseWordsFrom: wordAddr to: oop &#43; (objectMemory sizeBitsOf: oop)]]]]!<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 4<br>
Date: Fri, 12 Dec 2014 01:26:36.921 0000<br>
From: commits@source.squeak.org<br>
Subject: [Vm-dev] VM Maker: VMMaker.oscog-eem.980.mcz<br>
To: vm-dev@lists.squeakfoundation.org<br>
Message-ID:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;mailman.2.1418385633.10973.vm-dev@lists.squeakfoundation.org&gt;<br>
<br>
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:<br>
<a href="http://source.squeak.org/VMMaker/VMMaker.oscog-eem.980.mcz">http://source.squeak.org/VMMaker/VMMaker.oscog-eem.980.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: VMMaker.oscog-eem.980<br>
Author: eem<br>
Time: 11 December 2014, 5:25:43.82 pm<br>
UUID: 3d7d339f-6a22-4bd1-b959-cddf9c41cc60<br>
Ancestors: VMMaker.oscog-eem.979<br>
<br>
And fix the regression in generateShiftLeft:on:indent:<br>
<br>
=============== Diff against VMMaker.oscog-eem.979 ===============<br>
<br>
Item was changed:<br>
&nbsp; ----- Method: CCodeGenerator&gt;&gt;generateShiftLeft:on:indent: (in category 'C translation') -----<br>
&nbsp; generateShiftLeft: msgNode on: aStream indent: level<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;Generate a C bitShift.&nbsp; If we can determine the result<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; would overflow the word size, cast to a long integer.&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | rcvr arg valueBeyondInt castToLong |<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rcvr := msgNode receiver.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arg := msgNode args first.<br>
&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; valueBeyondInt := 1 bitShift: 32. &quot;The default type of const &lt;&lt; N is int.&quot;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; valueBeyondInt := 1 bitShift: BytesPerWord * 4. &quot;The default type of const &lt;&lt; N is int.&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; castToLong := false.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rcvr constantNumbericValueOrNil ifNotNil:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [:rcvrVal|<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arg constantNumbericValueOrNil ifNotNil:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [:argVal|<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; castToLong := rcvrVal &lt; valueBeyondInt<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [(rcvrVal bitShift: argVal) &gt;= valueBeyondInt]]].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; castToLong<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ifTrue:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [rcvr isConstant<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ifTrue:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [self emitCExpression: rcvr on: aStream.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aStream nextPutAll: 'LL']<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ifFalse:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [aStream nextPutAll: '((unsigned long)'.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self emitCExpression: rcvr on: aStream.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aStream nextPut: $)]]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ifFalse:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [self emitCExpression: rcvr on: aStream].<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aStream nextPutAll: ' &lt;&lt; '.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self emitCExpression: arg on: aStream!<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 5<br>
Date: Thu, 11 Dec 2014 23:25:06 -0500<br>
From: &quot;David T. Lewis&quot; &lt;lewis@mail.msen.com&gt;<br>
Subject: [Vm-dev] 32/64 bit VM and image combinations (was: egg<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sucking alert)<br>
To: Squeak Virtual Machine Development Discussion<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vm-dev@lists.squeakfoundation.org&gt;<br>
Message-ID: &lt;20141212042506.GA3243@shell.msen.com&gt;<br>
Content-Type: text/plain; charset=us-ascii<br>
<br>
On Thu, Dec 11, 2014 at 10:30:41AM -0800, John McIntosh wrote:<br>
&gt;<br>
&gt; Recall at the time Apple didn't have 64bit support for a program to run<br>
&gt; under Cocoa, plus only a limited number of machines support 64 bit kernels.<br>
&gt; The fact you could go with a a 64 bit image on an 32bit machine allowed us<br>
&gt; to debug the base VM.<br>
&gt;<br>
&gt; I agree the 32/64 64/32 is nice and symmetric, but I'm afraid it's a nice<br>
&gt; to have versus need now. If it's not seamless to write software and plugins<br>
&gt; that honour that agreement, then it's a world of trouble and hassle that<br>
&gt; it's not worth pursuing further.<br>
<br>
For the record, and possibly to offer some perspective:<br>
<br>
Getting the VM to work for all combinations of 32/64 bit image and VM was<br>
not any extra work at all. The hard part was getting the 64-bit VM with<br>
32-bit image to work. Once the type declarations were cleaned up well enough<br>
to support this, the rest came along for free.<br>
<br>
The 64-bit VMs work fine, and I have been using them for a long time (several<br>
years I guess). Linux users can find one at <a href="http://squeakvm.org/unix/">http://squeakvm.org/unix/</a>.<br>
<br>
The 64-bit VM with 32-bit image is a particularly important configuration,<br>
because it involves 64-bit machine pointers and 32-bit ints. This combination<br>
will quickly expose the majority of problems related to pointer and word sizes.<br>
If you want to make a plugin 32/64 bit clean (and there are several remaining<br>
to be tidied up), this configuration is essential.<br>
<br>
Dave<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 6<br>
Date: Thu, 11 Dec 2014 23:32:14 -0500<br>
From: &quot;David T. Lewis&quot; &lt;lewis@mail.msen.com&gt;<br>
Subject: [Vm-dev] 64-bit FFI (was: egg sucking alert)<br>
To: Squeak Virtual Machine Development Discussion<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vm-dev@lists.squeakfoundation.org&gt;<br>
Message-ID: &lt;20141212043214.GB3243@shell.msen.com&gt;<br>
Content-Type: text/plain; charset=us-ascii<br>
<br>
On Thu, Dec 11, 2014 at 10:28:04AM -0800, Eliot Miranda wrote:<br>
&gt;<br>
&gt; On Thu, Dec 11, 2014 at 3:12 AM, Bert Freudenberg &lt;bert@freudenbergs.de&gt; wrote:<br>
&gt; &gt;<br>
&gt; &gt; On 11.12.2014, at 03:01, Eliot Miranda &lt;eliot.miranda@gmail.com&gt; wrote:<br>
&gt; &gt;<br>
&gt; &gt; There's an oddity of a 32-bit VM compiled in 64-bit mode on a 64-bit<br>
&gt; &gt; machine.&nbsp; I don't know of anyone using it.<br>
&gt; &gt;<br>
&gt; Right.&nbsp; But since the rationale for this VM is only to interface with<br>
&gt; 64-bit libraries, it depends on a 64-bit FFI, which we do not have.<br>
<br>
I realize that this refers to the VMs and FFI implementations that are<br>
actually available in released VMs, but just for the historical record:<br>
<br>
A working 64-bit FFI has been available since 2008, but the patches were not<br>
adopted. Source patches and issue status are here:<br>
<br>
&nbsp; <a href="http://bugs.squeak.org/view.php?id=7237">http://bugs.squeak.org/view.php?id=7237</a><br>
<br>
My intention had been to make this a top priority for the VM team circa 2009,<br>
but other priorities took precedence.<br>
<br>
Since then, the original FFI has been rendered obsolete by later development,<br>
and as a practical matter there is no 64-bit FFI available today.<br>
<br>
There were image side changes to the Mantis 7237 patches, and I'm not sure<br>
if these will be relevant to Eliot's newer FFI implementation. I'll try<br>
to look into this and report back if I find anything of interest.<br>
<br>
Dave<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 7<br>
Date: Fri, 12 Dec 2014 11:03:00 &#43;0100<br>
From: Stefan Marr &lt;smalltalk@stefan-marr.de&gt;<br>
Subject: Re: [Vm-dev] egg sucking alert<br>
To: Squeak Virtual Machine Development Discussion<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;vm-dev@lists.squeakfoundation.org&gt;<br>
Message-ID: &lt;BEBAC3AD-5E96-4401-990F-D87B13699DD1@stefan-marr.de&gt;<br>
Content-Type: text/plain; charset=us-ascii<br>
<br>
Hi:<br>
<br>
&gt; On 11 Dec 2014, at 19:28, Eliot Miranda &lt;eliot.miranda@gmail.com&gt; wrote:<br>
&gt;<br>
&gt; Bollocks.&nbsp; long is an integral type defined to be large enough to take a pointer.<br>
<br>
Ignoring all the other issues in this thread, I would be very hesitant to take this statement as a general truth.<br>
The last time I checked, the C standard defined only intptr_t and uintptr_t to be guaranteed to be a capable of holding pointers.<br>
<br>
Best regards<br>
Stefan<br>
<br>
--<br>
Stefan Marr<br>
INRIA Lille - Nord Europe<br>
<a href="http://stefan-marr.de/research/">http://stefan-marr.de/research/</a><br>
<br>
<br>
<br>
<br>
<br>
------------------------------<br>
<br>
_______________________________________________<br>
Vm-dev mailing list<br>
Vm-dev@lists.squeakfoundation.org<br>
<a href="http://lists.squeakfoundation.org/mailman/listinfo/vm-dev">http://lists.squeakfoundation.org/mailman/listinfo/vm-dev</a><br>
<br>
<br>
End of Vm-dev Digest, Vol 102, Issue 47<br>
***************************************<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <a href="http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20141212/f2b51d79/attachment.htm">
http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20141212/f2b51d79/attachment.htm</a><br>
<br>
------------------------------<br>
<br>
_______________________________________________<br>
Vm-dev mailing list<br>
Vm-dev@lists.squeakfoundation.org<br>
<a href="http://lists.squeakfoundation.org/mailman/listinfo/vm-dev">http://lists.squeakfoundation.org/mailman/listinfo/vm-dev</a><br>
<br>
<br>
End of Vm-dev Digest, Vol 102, Issue 48<br>
***************************************<br>
</div>
</span></font>
</body>
</html>