<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">2014-06-29 6:02 GMT+02:00 Eliot Miranda <span dir="ltr">&lt;<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>&gt;</span>:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br><div dir="ltr">...in <a href="http://www.mirandabanda.org/files/Cog/VM/VM.r3021/" target="_blank">http://www.mirandabanda.org/files/Cog/VM/VM.r3021/</a>.<div>
<br></div><div>In particular, these fix VM crashes when running the AllocationTest in Spur.</div>
<div><br></div><div><div>CogVM source as per VMMaker.oscog-eem.787/r3021<br></div><div><br></div><div>Fix mixup of old &amp; young spaces in primitiveVMParameter, and</div><div>comment some new parameters.</div><div><br>
</div>
<div>Fix return types for positive[64/32]BitValueOf:.</div><div>positive32BitValueOf: must answer a usqInt,</div><div>positive64BitValueOf: must answer a usqLong.</div><div><br></div></div></div></blockquote><div><br></div>
<div>Great!<br></div><div>I have this in my 32bits large integer experiments for so long.<br></div><div>If you look a little deeper, you&#39;ll see that you can logically declare the parameter unsigned for the inverse operation #positive32BitIntegerFor: &amp; co.<br>
</div><div>The only problem I got is that slang inliner is unaware of signed/unsigned int differences.<br>As a workaround, it still works by adding a few temporary variables with unsigned declaration hints when performing this later change.<br>
</div><div><br></div><div>Nicolas<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div></div><div>Use positiveMachineIntegerValueOf: to decode arg in primitiveNewWithArg</div>

<div>and ensure positiveMachineIntegerValueOf: is inlined there-in.</div><div><br></div><div>win32:</div><div>Set the IMAGE_FILE_LARGE_ADDRESS_AWARE flag in the image header of the Windows</div><div>executables to allow e.g. Spur to allocate more than 2Gb.</div>

<div><br></div><div>Spur:</div><div>Fix sign and overflow issues in instantiating larger objects</div><div>and determining the size of large instances.</div><div><br></div><div>Fix some freeChunk accesses that used fetchPointer:ofObject:.</div>

<div><br></div><div>Cog ARM:</div><div>Fix prim return for compileInterpreterPrimitive: on RISCs.  On return from</div><div>interpreter prim, ret pc is in instructionPointer and must return to whence</div><div>it came, which is the stack on CISC and the LinkReg on RISC.  Hence restoring</div>

<div>the receiver reg requires different offsets in the two cases.</div><div><br></div><div>Rework the rotatable quick constant logic a little and clean up users.</div><div>Fix concretizeMoveRXbrR to do byte not word loads.</div>

<div>Fix concretizeConditionalJumpLong: to actually be conditional. Oops.</div><div><br></div><div>Correct mistaken callersaved reg stuff for ARM</div><div>Fix concretizedRetN to not over-bump the SP</div><div><br></div>
<div>
The method abort trampolines shouldn&#39;t pop anything, especially</div><div>now we have the pushLinkreg: arg to manage the LinkReg more easily.</div><div><br></div><div>Slang:</div><div>Rip out the UseRightShiftForDivide optimization.  It gets unsigned division</div>

<div>wrong, and C compilers can and will optimize this correctly themselves.</div><div><br></div><div><br></div>-- <br>best,<div>Eliot</div>
</div></div>
<br></blockquote></div><br></div></div>