[Vm-dev] New Cog VMs available

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Sun Jun 29 07:33:39 UTC 2014


2014-06-29 6:02 GMT+02:00 Eliot Miranda <eliot.miranda at gmail.com>:

>
> ...in http://www.mirandabanda.org/files/Cog/VM/VM.r3021/.
>
> In particular, these fix VM crashes when running the AllocationTest in
> Spur.
>
> CogVM source as per VMMaker.oscog-eem.787/r3021
>
> Fix mixup of old & young spaces in primitiveVMParameter, and
> comment some new parameters.
>
> Fix return types for positive[64/32]BitValueOf:.
> positive32BitValueOf: must answer a usqInt,
> positive64BitValueOf: must answer a usqLong.
>
>
Great!
I have this in my 32bits large integer experiments for so long.
If you look a little deeper, you'll see that you can logically declare the
parameter unsigned for the inverse operation #positive32BitIntegerFor: & co.
The only problem I got is that slang inliner is unaware of signed/unsigned
int differences.
As a workaround, it still works by adding a few temporary variables with
unsigned declaration hints when performing this later change.

Nicolas

Use positiveMachineIntegerValueOf: to decode arg in primitiveNewWithArg
> and ensure positiveMachineIntegerValueOf: is inlined there-in.
>
> win32:
> Set the IMAGE_FILE_LARGE_ADDRESS_AWARE flag in the image header of the
> Windows
> executables to allow e.g. Spur to allocate more than 2Gb.
>
> Spur:
> Fix sign and overflow issues in instantiating larger objects
> and determining the size of large instances.
>
> Fix some freeChunk accesses that used fetchPointer:ofObject:.
>
> Cog ARM:
> Fix prim return for compileInterpreterPrimitive: on RISCs.  On return from
> interpreter prim, ret pc is in instructionPointer and must return to whence
> it came, which is the stack on CISC and the LinkReg on RISC.  Hence
> restoring
> the receiver reg requires different offsets in the two cases.
>
> Rework the rotatable quick constant logic a little and clean up users.
> Fix concretizeMoveRXbrR to do byte not word loads.
> Fix concretizeConditionalJumpLong: to actually be conditional. Oops.
>
> Correct mistaken callersaved reg stuff for ARM
> Fix concretizedRetN to not over-bump the SP
>
> The method abort trampolines shouldn't pop anything, especially
> now we have the pushLinkreg: arg to manage the LinkReg more easily.
>
> Slang:
> Rip out the UseRightShiftForDivide optimization.  It gets unsigned division
> wrong, and C compilers can and will optimize this correctly themselves.
>
>
> --
> best,
> Eliot
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20140629/cd1abf70/attachment.htm


More information about the Vm-dev mailing list