Hi All, there are new versions of both the SimpleStackBasedCogit and the StackToRegisterMappingCogit Cog VMs in VM.r2339/<http://www.mirandabanda.org/files/Cog/VM/VM.r2339/> & VM.r2340/ <http://www.mirandabanda.org/files/Cog/VM/VM.r2340/> respectively. These contain fixes for rounding bug causing underestimate of openPICSize and resultant hard crashes, seen e.g. by trying to recover lost changes in a Pharo 1.2 image installed on c:\pharo. If you're trying to reproduce Cog crashes please upgrade to one of tthese two VMs.
TIA Eliot On Thu, Dec 30, 2010 at 6:02 PM, Eliot Miranda <[email protected]>wrote: > Hi All, > > I've released a new version of Cog that has a substantially improved > code generator along the lines of Peter Deutsch's HPS (VisualWorks) and > various of Ian Piumarta's VMs. These all use a simple tecnique to identify > constant references in bytecode and to support a register-based calling > convention. While this does produce faster code it tends to accelerate > low-level code much more than high-level code as you can see by the > following benchmarks: > > SimpleStackBasedCogit: [1 to: 100000000 do: [:i|]] timeToRun 691 > StackToRegisterMappingCogit: [1 to: 100000000 do: [:i|]] timeToRun 192 > 192 - 691 / 6.91 -72% > > SimpleStackBasedCogit: 0 tinyBenchmarks '753495217 bytecodes/sec; 64769127 > sends/sec' > StackToRegisterMappingCogit: 0 tinyBenchmarks '931756141 bytecodes/sec; > 128157989 sends/sec' > 931756141 - 753495217 / 7534952.17 -24% > 128157989 - 64769127 / 647691.27 -98% > > SimpleStackBasedCogit: [Compiler recompileAll] timeToRun 47013 (no > transcript > StackToRegisterMappingCogit: [Compiler recompileAll] timeToRun 43406 (no > transcript) > 43406 - 47013 / 470.13 -7.67234594686576 > > The status of this code is essentially beta. The test suite runs the same > on the new code generator as on the old, but I think there are still bugs > because I get the occasional transient error. I am therefore very > interested in any reproducible errors you can find. > > The VMs (http://www.mirandabanda.org/files/Cog/VM/VM.r2334/) contain a few > other important changes: > > - a bug fix to bytecode<->native pc mappng that produced incorrect results > for methods containing blocks with ^-returns in them. One symptom is > incorrect highlighting of the pc in the debugger, althoguh symptoms could be > much serious. > > - jitting interpreted methods on backward branches. Currently any > interpreted method that performs more than 20 backward branches will be > considered for JIT compilation and if it is suitable (default, <= 60 > literals) will be compiled to native code. > > - new callback support. I need to commit some changes to the Alien package > to provide access to this but essentially the VM's callback support is now > able to be ported to architectures with register-based calling conventions > (ARM, PowerPC, SPARC etc). I'll try and get the Alien code released soon, > and to back-port the changes to the standard VM before the end of the > holiday. > > One thing that is still /not/ fixed is the lack of a SoundPlugin on win32. > Apologies. I'll try and get a fix for this before the end of the holidays > too, but time might be too tight. There are other priorities such as > harmonising the standard and Cog VMs for the 4.2 release. > > best > Eliot > >
