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.
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