<div dir="ltr"><div>Hi All,</div><div><br></div><div>    after a period of instability due to internal changes needed for the Spur 64-bit V I hope that these latest VMs will be more stable.</div><div><br><div>------------------------------------------------------------------------</div><div>CogVM source as per VMMaker.oscog-eem.1080/r3263</div><div><br></div><div>Mostly internal changes due to better inlining and type inferrence machinery</div><div>in Slang.</div><div><br></div><div>General:</div><div>Fix a type declaration error uncovered by the new inlining.</div><div>Simplify primitiveMakePoint. Include primitiveMethodXray</div><div>Include freeMethod: in Cogit&#39;s api for method xray.</div><div><br></div><div>Spur:</div><div>Fix a typing bug in initializeOldSpaceFirstFree:.</div><div><br></div><div>Newspeak:</div><div>Move the Newspeak plugins to nsspursrc/plugins.</div><div><br></div><div>Fix privacy violation checking for super sends.</div><div>Fix some type warnings in Spur stack VMs.</div><div><br></div><div>Slang:</div><div>More improvement to type inferrence/propagation.  Support ifTrue:ifFalse:.</div><div>Better separate the passes in inferTypesForImplicitlyTypedVariablesAndMethods.</div><div>Fix slip in nodeToCast:to:.  Provide types for atan, et al.  Avoid casting nil.</div><div><br></div><div>Don&#39;t inline complex expressions that are bound to variables used in asserts.</div><div><br></div><div>General:</div><div>Add an option to control FailUnbalancedPrimitives and</div><div>no longer burden the Stack VMs with the responsibility.</div><div><br></div><div>Fix typing multiple assignments to a variable</div><div>- promote the type to the largest integral type of all assignments</div><div><span class="" style="white-space:pre">        </span>(primitiveDecompressFromByteArray)</div><div>- do /not/ promote a variable typed with integral type to a floating point type</div><div><span class="" style="white-space:pre">        </span>(transformColor:)</div><div><br></div><div>On type compatibility of inlined expressions, insist on signed compatibility or</div><div>accept an untyped actual.</div><div><br></div><div>Improve the type inferrence machinery further to</div><div>support pointer subtraction.  Eliminate code duplication</div><div>(determineTypeFor:in: now uses returnTypeForSend:, etc).</div><div><br></div><div>Change the heuristic for inlining expressions to include a maximum usage count.</div><div><br></div><div>Slang:</div><div>Rescue translation of the non-64-bit Spur VMs by</div><div>a) doing a better job of super expansions, handling expansions</div><div><span class="" style="white-space:pre">        </span>that are returning ifs as well as just returns correctly.</div><div>b) transforming variable := expr ifTrue: [s1] ifFalse: [s2] into</div><div>    expr ifTrue: [variable := s1] ifFalse: [variable := s2]</div><div>to allow inlining of s1 &amp; s2.</div><div><br></div><div>And take advantage of the better inlining in copyAndForward:</div><div><br></div><div>General:</div><div>Simplify primitiveDisplayString given isArray:.</div><div><br></div><div>Refactor positive32BitIntegerFor: and signed32BitIntegerFor: in the realization</div><div>that these reduce to essentially integerObjectOf: in 64-bit Spur.  The idea is</div><div>to inline if in 64-bit Spur but not if in the 32-bit VMs.  Add notOption:</div><div>processing to allow excluding noInlineSigned32BitIntegerFor: et al.  Add</div><div>hasSixtyFourBitImmediates to no longer assume that wordSize = 8 implies 64-bit</div><div>immediates.</div><div><br></div><div>Use positiveMachineIntegerFor: in place of</div><div>positive32BitIntegerFor: in some plugins.</div><div><br></div><div>Simplify two B3DAcceleratorPlugin prims given topRemappableOop and isArray:</div></div>-- <br><div class="gmail_signature">best,<div>Eliot</div></div>
</div>