[squeak-dev] New Cog & Spur VMs available

Herbert König herbertkoenig at gmx.net
Fri Jun 13 05:31:18 UTC 2014


That's a lot!

Thanks Eliot

Herbert

Am 13.06.2014 01:08, schrieb Eliot Miranda:
> see http://www.mirandabanda.org/files/Cog/VM/VM.r2987/
>
>
> CogVM binaries as per VMMaker.oscog-eem.769/r2987
>
> platform code:
> Type the memory allocators as accepting and answering usqInts to give 
> a chance
> at allocating more than 2Gb.
>
> Use unsigned comparisons when testing if there's sufficient heap space in
> readImageFromFile:HeapSize:StartingAt:.  Leads to accurate failure 
> message when
> failing to allocate large heap.
>
> Correct syntax of inline assembler for byte and word swap operations 
> in win32
> 16-bit displays.  Thanks to Nicolai Hess!
>
> sqUnixX11.c:
> Include the right X11 include file to pull in the def for XK_equal
> (keysym.h vs keysymdef.h).
> Don't define BytesPerOop or BaseHeaderSize; these should be taken from 
> interp.h.
>
> Integrate Philippe Back's fix for numberic keypads on X11;
> see https://pharo.fogbugz.com/f/cases/11352/.
>
> Add the XDisplayControlPlugin to the plugins loaded by the image build 
> script.
>
> Use pthread_atfork to reinstall the heartbeat thread post fork.
>
> Make sure SIGALRM is unblocked if using the interval timer heartbeat 
> on linux.
>
> Remove RPATH spec from unix builds.
>
> Include the executable name in the crash.dmp report.
>
> Fix stack backtrace printing on Mac & Unix to not segfault when 
> invoked from
> error(char *msg) function.
>
>
>
> CoInterpreter:
> No longer inline CoInterpreter>>pre/postGCAction: for VM profiling.
>
> Fix instantiation of large non-byte objects.  The old code for
> sufficientSpaceToInstantiate:indexableSize: stupidly subtracted 
> BytesPerWord
> instead of ShiftForWord from LongSizeNumBits in determining the max size.
>
> Garbage collect/remap the primTraceLog correctly.  If a GC happens
> very early in start-up the log circular buffer may not be full and the
> existing code assumed it always was.
>
> Add Spur-specific interpreter proxy functions for immediate character and
> pinning access.  Implement the new Spur interpreterProxy API for 
> ObjectMemory
> (of course pinObject: fails, and isCharacterValue: has a smaller range).
>
>
> Fix a bug in printing frame flags (order was the wrong way around).
>
> Allow vmParameterAt: 26 put: 0 to disable the heartbeat itimer.
>
> Add AioPlugin to Mac VMs.
>
> Make CoInterpreter>>printFrame: not mislead as to the number of
> temps in a block activation.
>
> Change the time primitives to access the time now, not the time as 
> updated by
> the heartbeat (but /don't/ change the time basis for event checking. 
>  This for
> performance because use of gettimeofday in e.g. stack overflow can be a
> signficant performance overhead.  Move the simulated time implementations
> (ioSeconds et al) up to StackInterpreter to reduce duplication.  Add
> ioSecondsNow et al to the platform code to support this.
>
> Fix regression in primitiveUtcWithOffset, answer the correct local 
> time offset.
>
> Fix ioSecondsNow to use the time now, not the heartbeat time.
>
> Revamp primitiveVMParameter to avoid overflow in values such as total 
> heap size.
> Make statProcessSwitch, statIOProcessEvents, statForceInterruptCheck,
> statCheckForEvents, statStackOverflow & statStackPageDivorce 64-bit to 
> avoid
> wrapping.  Make sure that positive64BitIntegerFor: will not cause a GC 
> just as
> positive32BitIntegerFor: doesn't.
>
> Make primitiveClone cope with variable args, cloning its last
> argument.  This for the Newspeak VMMirror.
>
> Add primitiveAllObjects, adapted from VMMaker-dtl.339.mcz
>
> Add Nicolas Cellier's bitblt speedups, reference:
> Mantis issue 7802: Fast-up BitBlt rgbAdd rule
> Mantis issue 7803: Fast-up BitBlt alpha blending rules
>
> Check for valid bitmap in primitivePixelValueAt aka BitBltSimulation>>
> primitivePixelValueAtX:y: Fix provided by Nicolas Cellier. Reference 
> Mantis 7799
>
> Avoid including the instructionPointer in the context when marrying 
> the top
> frame during divorceAllFrames for voidVMState..If:.  (how did this 
> ever work??)
>
> Fix a bug in BitBltPlugin>>lockSurfaces.
>
> Add the compression prims to the Newspeak VM's ZipPlugin.
>
> Fix roomToPushNArgs:; the Cog VMs can be more lenient because of the 
> use of a
> stack instead of contexts. Fixes some valueWithArguments: failures.
>
> Integrate Nice's improved SmallInteger generated primitives that support
> int x float comparison, & hence speed-up int x float comparison 
> enormously.
>
> Integrate VMMaker-dtl.328 (failure of primitiveDisplayString to 
> advance destX).
>
> Integrate 2792, fix memory leaks in SqueakSSL on unix.
>
> Integrate VMMaker-tpr.325 7247: BitBlt Bug in alphaSourceBlendBits8.
>
> Integrate VMMaker-tpr.326, Fix a single-bit constant error in
> BitBltSimulation>>copyBits:Fallback: - change 16r3FFF to 16r7FFF to
> correct tallyIntoMap behaviour for Scratch using BenBlt on the Pi.
>
> Restrict at-cache to bytecodePrimAt[Put], eliminating it from
> primitive[String]At[Put].  Sionara the explicit noAtCache at:[put:] 
> machinery
> in CoInterpreter now that the atCache is confined to the interpreter's 
> special
> selector at:[put:] bytecodes.  Speeds up Stack VM signfiicantly, e.g. 
> a compile
> of Compiler package falls from 1.6s to 1.4s on 2.2GHz Intel Core i7 
> MacBook Pro.
>
> Restrict at-cache to bytecodePrimAt[Put], eliminating it from 
> primitive[String]
> At[Put].  Undoes need for fix in VMMaker-oscog.44 of 7 January 2011:
> "Fix leaking of objects into the atCache due to ceSend:super:to:numArgs:'s
> use of executeNewMethod without always setting messageSelector."
> This renders messageSelector and lkupClass ephemeral, since they are 
> live only
> during message lookup and because createActualMessageTo will not cause 
> a GC
> these cannot change during message lookup. Hence eliminate them from
> markAndTraceInterpreterOops: & mapVMRegisters.
>
> Fix arg count for primPCREExecfromto
>
>
> Cogit:
> Streamline the genPrimReturnEnterCogCodeEnilopmart.
> Streamline genExternalizePointersForPrimitiveCall
>
> Have StackToRegisterMappingCogit>>genPushReceiverBytecode
> use ReceiverResultReg if it contains self.
>
> Fix a double free bug in unlinkSendsOf:isMNUSelector:.  Harmless cuz 
> the result
> is only a bogus count of how many methods freed.  Beef up the cog method
> integrity check to verify a its methodObject is a CompiledMethod.
>
> Fix bug in unlinkSendsOf:isMNUSelector: (primitiveFlushCacheBySelector)
> where old code could free the method of an active frame.
>
> Fix an assert fail in mapFor:bcpc:performUntil:arg: (this for
> primitiveClass where the class table reference can be the first map 
> entry).
>
> Fix a bug in Newspeak remapIfObjectRef:pc:hasYoung: with dynamic super
> sends which could compute an invalid target method.
>
> Rename pushExplicitOuterSendReceiverBytecode et al to
> pushExplicitOuterReceiverBytecode et al.  These are not sends.
>
> Fix pc-mapping for NewspeakV4.  Dynamic super sends should
> /not/ be annotated with IsNSSendCall, but wth the vanilla IsSendCall.
> This fixes a bug converting an interpreter activation of a method
> with a loop and a dynamic super send to a machine code frame.
>
> For performance, specify that mapFor:[bcpc:]performUntil:arg: are
> inlined, eliminating the perform/indirect function call.  This adds of
> the order of 3% to the size of a cogit.o's text seg so is acceptable.
>
> Print (nil) next to the selector for cog methods with a nil selector.
>
> Fix bug in Cogit>>unlinkSendsOf:isMNUSelector:, used by
> primitiveFlushCacheBySelector.  The method could leave sends
> linked to freed MNU PICs.
>
>
> -- 
> best,
> Eliot
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20140613/42e2dbf3/attachment.htm


More information about the Squeak-dev mailing list