MaxLiterals (was: Re: [squeak-dev] Daily Commit Log)

Ben Coman btc at openinworld.com
Tue Aug 25 23:34:25 UTC 2015


Would it be benficial/possible to have a primtive returning a
dictionary of limits compiled into the VM?  I am thinking of a case
where the VM might be compiled to run in an embedded environment (e.g.
robotics).  Then these limits would only need changing in one spot.
How big would such a list be?
cheers -ben

On Wed, Aug 26, 2015 at 4:50 AM, Levente Uzonyi <leves at elte.hu> wrote:
> I guess then we should change a few 255s and 65535s to 32767. I've uploaded
> Compiler-ul.307, and Kernel-ul.946 to the Inbox with some changes. There may
> be more methods with the obsolete limit in the image, and my changes may not
> be correct. Please review them!
>
> Levente
>
> On Tue, 25 Aug 2015, Eliot Miranda wrote:
>
>>
>>
>> On Tue, Aug 25, 2015 at 10:40 AM, Levente Uzonyi <leves at elte.hu> wrote:
>>       Hi Eliot,
>>
>>       That was me who updated the method, because if was failing.
>> CompilerTest #testMaxLiterals verifies a certain literal limit, and
>> checks if adding one more literal will make the compilation fail.
>>
>>
>> Ah, OK.  I just wanted to point out that the limit is 32767, not 65535.
>>
>>
>>
>>       Levente
>>
>>       On Tue, 25 Aug 2015, Eliot Miranda wrote:
>>
>>             Hi Tobias,
>>
>>             Sent from my iPhone
>>
>>                   On Aug 22, 2015, at 2:55 PM, commits at source.squeak.org
>> wrote:
>>
>>                   Changes to Trunk (http://source.squeak.org/trunk.html)
>> in the last 24 hours:
>>
>>
>> http://lists.squeakfoundation.org/pipermail/packages/2015-August/008871.html
>>
>>                   Name: Tests-ul.325
>>                   Ancestors: Tests-topa.324
>>
>>                   Increased maxLiterals in CompilerTest's #testMaxLiterals
>> and #testMaxLiteralsWithClassReferenceInClosure to make them pass again.
>>                   In theory Spur supports literals up to 65535, but I
>> think the compiler will have to be changed to be able to use that many.
>>
>>
>>             In the end I made the literal limit 32767, leaving bit 15 for
>> a flag identifying methods generated by the dynamic optimizer, when we have
>> one.
>>
>>             Why do you think the compiler needs modifying to allow for
>> more than 255 literals?  I think it's a bytecode set issue, not a compiler
>> issue.  Both the Newspeak V4 and Sista V1 bytecode
>>             sets support 64k literals.
>>
>>                   =============================================
>>
>>
>> http://lists.squeakfoundation.org/pipermail/packages/2015-August/008872.html
>>
>>                   Name: Tests-ul.326
>>                   Ancestors: Tests-ul.325
>>
>>                   PointTest's #testNormal and #testTheta seem to get
>> decompiled correctly.
>>
>>                   =============================================
>>
>>
>> http://lists.squeakfoundation.org/pipermail/packages/2015-August/008873.html
>>
>>                   Name: Collections-ul.644
>>                   Ancestors: Collections-ul.643
>>
>>                   Extracted and enhanced Bitset from WideCharacterSet.
>>
>>                   =============================================
>>
>>
>> http://lists.squeakfoundation.org/pipermail/packages/2015-August/008874.html
>>
>>                   Name: CollectionsTests-ul.247
>>                   Ancestors: CollectionsTests-ul.246
>>
>>                   Added BitSetTest.
>>
>>                   =============================================
>>
>>
>> http://lists.squeakfoundation.org/pipermail/packages/2015-August/008875.html
>>
>>                   Name: Collections-ul.645
>>                   Ancestors: Collections-ul.644
>>
>>                   Use the extracted Bitset in WideCharacterSet:
>>                   - decreased chunk size from 65536 to 256. This should
>> give a purpose to use a dictionary instread of an array for map, because its
>> size will have a chance to be larger than
>>                   64.
>>                   - byteArrayMap is always initialized, so there's no need
>> to use the method to reference it, nor to check if it's initialized
>>                   - moved #remove: behavior to #remove:ifAbsent:, just
>> like it's done by most collections. Kept the existing behavior of #remove:
>> to not signal an error when the character is
>>                   not in the collection.
>>                   - use #atAllPut: to clear the byteArrayMap in
>> #removeAll, because it should be faster than allocating a new instance
>>                   - improved #size's performance
>>                   - migrate instances on-the-fly
>>                   - migrate any unmigrated instaces during the postscript
>>                   - removed the unused methods
>>
>>                   =============================================
>>
>>
>> http://lists.squeakfoundation.org/pipermail/packages/2015-August/008876.html
>>
>>                   Name: Collections-ul.646
>>                   Ancestors: Collections-ul.645
>>
>>                   - removed migration code from WideCharacterSet
>>
>>                   =============================================
>>
>>
>> http://lists.squeakfoundation.org/pipermail/packages/2015-August/008877.html
>>
>>                   Name: Tools-eem.631
>>                   Ancestors: Tools-ul.630
>>
>>                   Remove the become[Un]Compact messages from MethodFinder
>> as these are going away.
>>
>>                   =============================================
>>
>>
>> http://lists.squeakfoundation.org/pipermail/packages/2015-August/008878.html
>>
>>                   Name: System-eem.758
>>                   Ancestors: System-ul.757
>>
>>                   Reimplement the post-load enumeration of loaded objects
>> to use the revised primitive available in the VMMaker.oscog-eem.1441 /3427
>> VMs that becomes the loaded segment into
>>                   an Array of the loaded objects.  Hence endMarker
>> disappears and allObjectsDo: is trivially implemented as do: sent to the
>> segment.
>>
>>                   This change requires users to upgrade their VMs but as
>> the alternative is crashes in ImageSegment loads this is acceptable.  AFAIA
>> this fixes ImageSegments in Spur but they
>>                   clearly need pounding on.
>>
>>                   =============================================
>>
>>
>> http://lists.squeakfoundation.org/pipermail/packages/2015-August/008879.html
>>
>>                   Name: SMBase-eem.134
>>                   Ancestors: SMBase-bf.133
>>
>>                   Reimplement the post-load enumeration of loaded objects
>> to use the revised primitive available in the VMMaker.oscog-eem.1441 /3427
>> VMs that becomes the loaded segment into
>>                   an Array of the loaded objects.  Hence endMarker
>> disappears and allObjectsDo: is trivially implemented as do: sent to the
>> segment.
>>
>>                   This change requires users to upgrade their VMs but as
>> the alternative is crashes in ImageSegment loads this is acceptable.  AFAIA
>> this fixes ImageSegments in Spur but they
>>                   clearly need pounding on.
>>
>>                   =============================================
>>
>>
>> http://lists.squeakfoundation.org/pipermail/packages/2015-August/008880.html
>>
>>                   Name: KernelTests-eem.297
>>                   Ancestors: KernelTests-ul.296
>>
>>                   Remove the compact class index tests from
>> LargeNegativeInteger as the compact class code is going away.
>>
>>                   =============================================
>>
>>
>> http://lists.squeakfoundation.org/pipermail/packages/2015-August/008881.html
>>
>>                   Name: Kernel-eem.944
>>                   Ancestors: Kernel-ul.943
>>
>>                   Nuke the compact class support in Kernel and the
>> ClassBuilder.  Spur has a regular 64-bit object header format with no
>> special cases.
>>
>>                   Fix CompiledMethod>>at:ifAbsent: to work with the
>> initialPC to endPC range and run the ifAbsent: block for indices outside
>> this range.
>>
>>                   Categorize isCompiledMethodClass correctly.
>>
>>                   =============================================
>>
>>
>> http://lists.squeakfoundation.org/pipermail/packages/2015-August/008882.html
>>
>>                   Name: Collections-ul.647
>>                   Ancestors: Collections-ul.646
>>
>>                   - in Spur we can speed up Character >> #sameAs: by using
>> #==
>>
>>                   =============================================
>>
>>
>> http://lists.squeakfoundation.org/pipermail/packages/2015-August/008883.html
>>
>>                   Name: Regex-Core-ul.40
>>                   Ancestors: Regex-Core-ul.39
>>
>>                   RxsPredicate:
>>                   - added \t \n escapes for tab and lf
>>                   - unified all single character predicates as
>> #beCharacter:
>>                   - postscript reinitializes the dictionary
>>
>>                   RxMatchOptimizer:
>>                   - removed lookarounds, because they were never used,
>> just collected
>>                   - all collections get initialized lazily
>>                   - CharacterSet are used for storing characters
>>                   - IdentitySets are used where unique objects are stored
>> (e.g. symbols)
>>                   - use #== and #~~ for character comparison
>> (Spur-specific change)
>>
>>                   RxMatcher:
>>                   - reuse previous markerPositions
>>                   - use String >> #new:streamContents: where possible
>>                   - use #== and #~~ for character comparison
>> (Spur-specific change)
>>                   - quick returns in #tryMatch
>>
>>                   General:
>>                   - renamed RxmLookahaed to RxmLookahead
>>                   - in RxmPredicate >> #matchAgainst: use the fact that
>> aMatcher is providing a ReadStream of characters, so nil means end of stream
>>                   - reimplemented RxmSubstring
>>
>>                   =============================================
>>
>>
>> http://lists.squeakfoundation.org/pipermail/packages/2015-August/008884.html
>>
>>                   Name: Regex-Tests-Core-ul.1
>>                   Ancestors:
>>
>>                   - tests from Pharo
>>
>>                   =============================================
>>
>>
>>
>>
>>
>>
>>
>> --
>> _,,,^..^,,,_
>> best, Eliot
>>
>
>
>


More information about the Squeak-dev mailing list