CogVM binaries as per VMMaker.oscog-eem.1722/r3643 General: Change vm parameter 65 to be a set of flags, not merely the boolean for MULTIPLE_BYTECODE_SETS, and make the flags answer MULTIPLE_BYTECODE_SETS & IMMUTABILITY. Nuke unused named prim primitiveOriginalMillisecondClock so VM can eliminate ioOldMSecs. Nuke ioOldMSecs and ioLowResMSecs to simplify the tiume management and avoid mistakes were we use different versions of clocks for different parts of the same basic io operations. Nuke SqueakUIFlushUseHighPercisionClock preference. Make the leak checker operational in the non-assert (& non-debug) VM. Cogit: Revise the register saving convention for trampoline calls. Instead of passing in a boolean to indicate if all registers should be saved or not (an aproach Ryan correctly notes is bogus), pass in a register mask of registers to be saved. If the trampoline call has a machine code continuation then the argument is usually callerSavedRegMask, and on MIPS and ARM this is empty. Use the above to move the saving of registers in the store-check into the store-check trampoline and out of the call of the trampoline. Further, use genJumpImmediate: in the immediate test, which saves an instruction. 64-bit Cogit: Fix primtive 171 (primitiveImmediateAsInteger) in the Cogit for SmallFloat. The old code only dealt with Characters. The new code replicates the rotatedFloatBitsOf: scheme in Spur64BitMemoryManager. Spur: Resolve the conflict between 32-bit and 64-bit tag assignments. In 32-bits we have 1=even SmallIntegers, 2=Characters, 3=odd SmallIntegers, and in 64-bits we had 1=SmallIntegers, 2=Characters, 3=SmallFloats. Hence we would want SmallFloat64's identityHash to be 3, which conflicts with 32 bits' odd SmallIntegers. Change is for 64-bits to use 1=SmallIntegers, 2=Characters, 4=SmallFloats. This also means single-bit tests in the Cogit, which produces better code, and no scratch registers to hold masked tags. Hence roll the 64-bit Spur image format version number from 68019 to 68021. Delegate to the object memories to determine the image format version number. Fix the bug in markAndTraceClassOf: that causes the first class table page to become a visible array. Plugins: Fix primitiveFFIIntegerAt for signed 4-byte results. Wuth the support for 64-bit results, signed 4-byte results must be sign-extended to 64-bits. Update primitiveFileRead for Spur. It doesn't need the PrimErrObjectMayMove handling since Spur has pinning. Don't use cCode: pointer aliasing for storing/fetching float/double in FFI primitives. Replace with a call to mem:cp:y: - the first one is dangerous with modern C compilers - while the second is optimized away (no call to memcpy) Fix a missing guard in SmartSyntaxPlugin like explained at Fix two missing guards in VM profiling primitives: one should not use the result of stackObjectValue: before checking for success, otherwise a null pointer exception will occur in case of failure. _,,,^..^,,,_ best, Eliot |
Free forum by Nabble | Edit this page |