Branch: refs/heads/Cog Home: https://github.com/OpenSmalltalk/opensmalltalk-vm Commit: 0e41737dbd5cdda9eb48392c8528f014e54768f9 https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/0e41737dbd5cdda9eb48392c8528f014e54768f9 Author: Eliot Miranda <[hidden email]> Date: 2020-09-25 (Fri, 25 Sep 2020) Changed paths: M nsspur64src/vm/cogit.h M nsspur64src/vm/cointerp.c M nsspur64src/vm/cointerp.h M nsspur64src/vm/gcc3x-cointerp.c M nsspursrc/vm/cogit.h M nsspursrc/vm/cointerp.c M nsspursrc/vm/cointerp.h M nsspursrc/vm/gcc3x-cointerp.c M nsspurstack64src/vm/gcc3x-interp.c M nsspurstack64src/vm/interp.c M nsspurstacksrc/vm/gcc3x-interp.c M nsspurstacksrc/vm/interp.c M platforms/Cross/vm/sqVirtualMachine.c M platforms/Cross/vm/sqVirtualMachine.h M platforms/Mac OS/vm/sqMacUnixCommandLineInterface.c M platforms/iOS/vm/OSX/sqSqueakOSXApplication.h M platforms/iOS/vm/OSX/sqSqueakOSXApplication.m M platforms/unix/vm/sqUnixMain.c M platforms/win32/vm/sqWin32Main.c M spur64src/vm/cogit.h M spur64src/vm/cointerp.c M spur64src/vm/cointerp.h M spur64src/vm/cointerpmt.c M spur64src/vm/cointerpmt.h M spur64src/vm/gcc3x-cointerp.c M spur64src/vm/gcc3x-cointerpmt.c M spurlowcode64src/vm/cogit.h M spurlowcode64src/vm/cointerp.c M spurlowcode64src/vm/cointerp.h M spurlowcode64src/vm/gcc3x-cointerp.c M spurlowcodesrc/vm/cogit.h M spurlowcodesrc/vm/cointerp.c M spurlowcodesrc/vm/cointerp.h M spurlowcodesrc/vm/gcc3x-cointerp.c M spurlowcodestack64src/vm/gcc3x-interp.c M spurlowcodestack64src/vm/interp.c M spurlowcodestacksrc/vm/gcc3x-interp.c M spurlowcodestacksrc/vm/interp.c M spursista64src/vm/cogit.h M spursista64src/vm/cointerp.c M spursista64src/vm/cointerp.h M spursista64src/vm/gcc3x-cointerp.c M spursistasrc/vm/cogit.h M spursistasrc/vm/cointerp.c M spursistasrc/vm/cointerp.h M spursistasrc/vm/gcc3x-cointerp.c M spursrc/vm/cogit.h M spursrc/vm/cointerp.c M spursrc/vm/cointerp.h M spursrc/vm/cointerpmt.c M spursrc/vm/cointerpmt.h M spursrc/vm/gcc3x-cointerp.c M spursrc/vm/gcc3x-cointerpmt.c M spurstack64src/vm/gcc3x-interp.c M spurstack64src/vm/interp.c M spurstack64src/vm/validImage.c M spurstacksrc/vm/gcc3x-interp.c M spurstacksrc/vm/interp.c M spurstacksrc/vm/validImage.c M src/plugins/AsynchFilePlugin/AsynchFilePlugin.c M src/plugins/BitBltPlugin/BitBltPlugin.c M src/plugins/BochsIA32Plugin/BochsIA32Plugin.c M src/plugins/BochsX64Plugin/BochsX64Plugin.c M src/plugins/ClipboardExtendedPlugin/ClipboardExtendedPlugin.c M src/plugins/GdbARMPlugin/GdbARMPlugin.c M src/plugins/GdbARMv8Plugin/GdbARMv8Plugin.c M src/plugins/GeniePlugin/GeniePlugin.c M src/plugins/HostWindowPlugin/HostWindowPlugin.c M src/plugins/ImmX11Plugin/ImmX11Plugin.c M src/plugins/InternetConfigPlugin/InternetConfigPlugin.c M src/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c M src/plugins/JoystickTabletPlugin/JoystickTabletPlugin.c M src/plugins/LargeIntegers/LargeIntegers.c M src/plugins/LocalePlugin/LocalePlugin.c M src/plugins/MIDIPlugin/MIDIPlugin.c M src/plugins/MacMenubarPlugin/MacMenubarPlugin.c M src/plugins/Mpeg3Plugin/Mpeg3Plugin.c M src/plugins/QuicktimePlugin/QuicktimePlugin.c M src/plugins/SerialPlugin/SerialPlugin.c M src/plugins/SocketPlugin/SocketPlugin.c M src/plugins/SoundPlugin/SoundPlugin.c Log Message: ----------- CogVM source as per VMMaker.oscog-eem.2823 Spur: Use bridges to use a single loop for allObjectsDo: et al. Hence save lots of space by avoiding three copies of the inner loop for several object enumeration operations. e.g. on MacOS X x86_64 saves over 1% of the VM executable. Install a bridge from freeStart (end of eden) to newSpaceStart and from pastSpaceStart (end of past space) to start of eden as required. Either or both of partSpace and eden may be empty. pastSpace may be completely full, or just one 64-bit word shy of eden. If one word shy use a "slim bridge", a bridge that fits in a single word. Slim bridge is a pun, a return to my youth: https://www.wwt.org.uk/wetland-centres/slimbridge# Note that slim bridges (shums would be a better name) could be the solution to object alignment; by preceding objects with suitable shims, the shims could both record what an object's alignment is, and be used to pad old space to bring an object into alignment. Allow sufficientSpaceAfterGC: (invoked from checkForEventsMayContextSwitch:) to attempt to shrink if there is lots of free space. sufficientSpaceAfterGC: invokes fullGC only if the heap has grown by the growth rarion since the last fullGC, and (before this change) only fullGC would attempt to shrink. So memory would never shrink if some large amout of space became available, since the heap would not grow again, and fullGC would never be called. Hence the free space would remain in the system. So this is needed to shrink when possible. Have growOldSpaceByAtLeast: set the needGC flag if growth is either disallowed or fails. This will cause the VM to invoke sufficientSpaceAfterGC: in a context of continuous growth that halts before, say, the growth ratio is reached. SocketPlugin: Make sure that all senders of socketValueOf: check for failure (e.g. primitiveSocketReceiveDataAvailable: primitiveSocketRemotePort: primitiveSocketSendDone: did not). Make the four send/receive primitives that take bits array arguments accept any of Spur's native bits types, byte, double byte, quad byte or octa byte. Add the bytesPerElement: function to InterpreterProxy/sqVirtualMachine to allow these primitives to determine the element size. Slang: Have the SmartSyntaxPlugins use the methodReturnFoo: protocol where they can. |
Free forum by Nabble | Edit this page |