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