[Vm-dev] Unix 4.4.7

David T. Lewis lewis at mail.msen.com
Sun Jan 23 23:48:28 UTC 2011


On Sun, Jan 23, 2011 at 07:56:08PM +0900, Ian Piumarta wrote:
> 
> Folks,
> 
> I've updated Unix to the latest VMMaker from Dave Lewis and fixed the consequent issues.  Changes are checked in and new archives of source and binaries (for linux/386 and darwin/386), and the image used to generate the VM, are available in the usual place:
> 
> http://squeakvm.org/unix
> 
> Cheers,
> Ian

Following is a summary of changes in the VMMaker standard interpreter since
the last official VM release. This summarized functional changes only, details
of other changes related to code generation, tool updates, merging Cog
changes, Pharo image support, etc can be found in the Monticello version
history.

For the Squeak 4.2 release, the major functional changes are the weak
finalization support (substantion performance improvement), and
interoperability with Cog (image can be run and saved from SqueakVM or
Cog without image version problems).

This list will also apply to the Windows and Mac standard interpreters.
Some differences are to be expected between SqueakVM and Cog, but note
that some of the updates listed below are either adopted from oscog or
related to things that were already working properly in Cog.

- Dave

=== updates in VM 4.4.7-2356 since prior version 4.0.3-2202 ===

Add Igor's VM changes to support better finalization (weak-finalizers-VM.1.cs merged with Alien support updates).
Reference Mantis 7473: VM changes for better finalization support

Allow a standard interpreter VM to load and run an image that was saved from a Cog or StackInterpreter VM. On image load, the storage format of Float objects is returned to normalized word ordering (different from platform word order for little endian platforms) and unrecognized header flags are cleared. The image will be saved in standard interpreter format (image format 6504 for a 32-bit image), which may subsequently be loaded by a Cog or StackInterpreter VM.

Add FilePlugin>>primitiveFileStdioHandles adapted from oscog.
Reference Mantis 0007591: Add #primitiveFileStdioHandles to standard VM

Add the changes for atomic suspend. For some reason these were missing in VMMaker proper.

Include support for Alien FFI in the interpreter. 

Adopt JPEGReaderWriter2Plugin from oscog.
JPEGReaderWriter2Plugin is gives incorrect results as reported by Bert:
http://lists.squeakfoundation.org/pipermail/vm-dev/2010-September/005481.html
JPEGReaderWriter2Plugin from oscog branch works correctly.
Merge John's 64-bit changes for JPEGReaderWriter2Plugin.
Add unit tests based on Bert's test in original bug report.
With these patches JPEGReaderWriter2Plugin works with the VM compiled in either 32-bit or 64-bit mode.

Adopt LargeIntegerPlugin fixes from oscog for #digitSubLarge:With: and #unsaveByteOf:at:. KernelTests-Numbers are green both before and after the change, but oscog updates are more recent and presumed to be correct.

Add ClipboardExtended plugin as part of VMMaker.

Change ObjectMemory>>isExcessiveAllocationRequest:shift: to permit very large allocation requests for a 64-bit image running on a 64-bit host.
Background: http://bugs.squeak.org/view.php?id=7405
Change GC primitives and #primitiveVMParameter to answer valid LargePositiveInteger values, required for large 64-bit object memory.
Permit allocation of very large individual objects, e.g. "String new: 1024 * 1024 * 1024 * 4" for 64 bit object memory on 64 bit host. Resulting object may not display properly in an inspector, but is otherwise valid and can be successfully garbage collected.

Add Andreas' patch for TMethod>>argConversionExprFor:stackIndex: This adds a check to ensure that a primitive parameter declared as type char * is a byte indexed object, and fails the primitive if it is not. The change addresses an error condition in ByteString>>findSubstring:in:startingAt:matchTable when one or more of the parameters is a WideString.
Add IncludedMethodsTest unit tests to verify this fix, and to verify the presence of other primitives translated from ByteString. Placeholders provided for other tests to cover other included method primitives.

Add Esteban's change to declare 'static struct foo' for improved performance.
<http://lists.squeakfoundation.org/pipermail/vm-dev/2010-December/005940.html>

Update interpreter primitives to match oscog.
Add #primitiveAdoptInstance from oscog.
Add large integer (64-bit) numbered primitives from oscog.
Remove #primitiveDoNamedPrimitiveWithArgs.
Remove #primitiveObsoleteIndexedPrimitive.
Remove the obsoleteNamedIndexPrimitiveTable and obsoleteIndexedPrimitiveTable from Interpreter.
Adopt #initializePrimitiveTable from oscog, except for VM implementor primitives 250 - 253 which are different in the platform support code.

Fix objects as methods for SmallInteger by adding missing #isNonIntegerObject: check in Interpreter>>lookupMethodInDictionary. StackInterpreter and Cog have addressed this problem already, so all VMs should now handle SmallInteger as method without crashing the VM.

Adopt #isOopCompiledMethod: from oscog and update accordingly:
  Interpreter>>primitiveClosureValue
  Interpreter>>primitiveClosureValueNoContextSwitch
  Interpreter>>primitiveClosureValueWithArgs
Merge isOopCompiledMethod: call into #primitiveExecuteMethodArgsArray (VMMaker version has 64 bit changes not applicable to oscog).
Use is#OopCompiledMethod: idiom in Interpreter>>lookupMethodInDictionary:
Merge #primitivePerform and #primitivePerformAt. This adds checks for SmallInteger as as method missing from the previous update (allow foo perform: #bar where bar is a SmallInteger in the method cache).




More information about the Vm-dev mailing list