After much hacking I have a new alpha of VMMaker for 64 bit clean code.
I found a quite long list of changes neccessary, some of which might be controversial. Before I release this widely I'd like to see if we can all agree with the changes. Image fileins: I've cut down all the 'normal' image changes to a bare minimum for release into the 3.8 update stream. See attached VMM38-64bit-imageUpdates/1/cs. I have _not_ done anything with any of the image code that is not directly related to making VMMaker work. SystemTracer etc were left alone. I also made a 'remove all leftover VMM code' file to get the few remaining vmm related methods out of the main image. See RemoveLeftoverVMMbits-38b4/1/cs. VMMaker changes: Added GCInstrumentJMMImprovementsAR64bit.3.cs - needs several int->sqInt changes - adds several prims using named-in-no-module approach - removes a couple of instvars and classvars - alters prim table to correct a couple of missed obsoletes Clean out new gc & instrumentation code to changeset. SystemDictionary stuff to new fileout for update stream (VMM38-gc-instrument-image). LowSpaceAndInterruptHandler-2-dtl needs to go into update stream. VMMLowSpace- dtl-tpr-2 is corrected VM changes, included in VMM. Lowspace problem in initializeMemoryFirstFree: which steals memory just when we are short of it. I recommend setting the lowspacethreshold to 3-4Mb instead of 200kb. We could do some tweaking in the VM code to help but when you're down to 200kb things are going to get ugly no matter what. Virtual memory might stay execution a while but even that will run out sometime. add fix for FloatArrat>primitiveDivFloatArray quick-0 test. fix primVMParameters to merge GC changes and wordSize revert #isIntegerValue: to use EOR trick - works for 32 & 64 bit machine, I think. Explicit range check will not work for actual 64bits. fix storeInteger:ofObject:withValue: to skip root oop check and many storePointerUnchecked where SmallInt is used, save checking for young. (several %speedup) make pop:thenPushIntegerOf:, check sends of pop: and pushInteger: add an instantiate but don't fill, used for small classes like points and the one that will annoy Ian, macros for longAtput etc in sqMemoryAccess.h This proved neccessary after John & I discovered a noticable drop in benchmark results when using the inlined accessor functions. Examing the compiled code for both ARM and PPC showed that the inlining was being done (quite neatly I thought for ARM) but not quite neatly enough in some crucial cases. It was causing a 20% or so overall hit and 40% for tinyBenchmarks, a bit less for OSX. Still to do: there are lots of places where potential signed/unsigned/oop comparisons are done and might cause problems. 'oop < endOfMemory' is pretty common in the interp.c file. There is a stricly temporary .mcz file on my website that should be readable as http://www.rowledge.org/tim/squeak/SqFiles/release/VMMaker-tpr.27.mcz and I should have the changed sqMemoryAccess.h file committed sometime today. tim -- Tim Rowledge, [hidden email], http://www.rowledge.org/tim Useful Latin Phrases:- Romani quidem artem amatoriam invenerunt. = You know, the Romans invented the art of love. RemoveLeftoverVMMbits-38b4.1.cs (4K) Download Attachment VMM38-64bit-imageUpdates.1.cs (3K) Download Attachment VMM38-gc-instrument-image.1.cs (6K) Download Attachment LowSpaceAndInterruptHandler-2-dtl.cs (9K) Download Attachment |
Tim Rowledge <[hidden email]> wrote:
> After much hacking I have a new alpha of VMMaker for 64 bit clean code. > > I found a quite long list of changes neccessary, some of which might be > controversial. Before I release this widely I'd like to see if we can all agree > with the changes. > > Image fileins: > I've cut down all the 'normal' image changes to a bare minimum for release into > the 3.8 update stream. See attached VMM38-64bit-imageUpdates/1/cs. I have _not_ Ehmmm, is the idea to post this as a post-3.8-release update? Because 3.8 went final today. :) Since we have said that we plan to maintain post-release fixes for 3.8 I assume this can be doable, or have I missed something? regards, Göran |
I don't see any problem in making these be post-release updates aside from the
usual one of occasionally having to remind people to update. Given the time constraints we all suffer from we just have to live with it and try not to make it 'suffer with it'. There is a perfectly ok VMMaker release for general use (3.8b3) until we finally release the 64bit clean stuff, it just doesn't have the very latest lowspace signalling and weak array GCing fixes. My opinion is that the VMM3.8- 64b stuff is pretty solid even in its unfinished state. tim -- Tim Rowledge, [hidden email], http://www.rowledge.org/tim Avoid GOTOs completely if you can to keep the program readable. |
Free forum by Nabble | Edit this page |