<div dir="ltr">...in <a href="http://www.mirandabanda.org/files/Cog/VM/VM.r3021/">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>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>