Nicolas I tried to find the new primitive and I did not find it here
https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/src/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c I found the old one. Did I look in the wrong place? Stef > On 10 Apr 2019, at 13:46, ducasse <steph...@netcourrier.com> wrote: > > Thanks nicolas so we can use them then. > >> On 10 Apr 2019, at 11:59, Nicolas Cellier >> <nicolas.cellier.aka.n...@gmail.com >> <mailto:nicolas.cellier.aka.n...@gmail.com>> wrote: >> >> VMMaker.oscog-sk.2367 >> Author: sk >> Time: 19 April 2018, 12:02:35.661622 pm >> UUID: 0c2401e3-1450-4f73-8e81-958f50171595 >> Ancestors: VMMaker.oscog- nice.2366 >> >> ** new primitive to compare strings (slang + JIT) >> answers negative smi, 0 or positive smi (instead of 1, 2 or 3 in the >> MiscPlugin) >> >> * Slang (primitiveCompareWith) >> order is optionnal. >> comparison loop performed in rawCompare: string1 length: strLength1 with: >> string2 length: strLength2 accessBlock: accessBlock >> >> * JIT (genPrimitiveStringCompareWith) >> the JIT primitive does not take order as parameter (assumed asciiOrder) >> quick jump if one of the strings is empty >> >> Le mer. 10 avr. 2019 à 11:56, ducasse <steph...@netcourrier.com >> <mailto:steph...@netcourrier.com>> a écrit : >> >> >>> On 10 Apr 2019, at 11:42, Cyril Ferlicot <cyril.ferli...@gmail.com >>> <mailto:cyril.ferli...@gmail.com>> wrote: >>> >>> On Wed, Apr 10, 2019 at 10:42 AM Stéphane Ducasse >>> <stephane.duca...@inria.fr <mailto:stephane.duca...@inria.fr>> wrote: >>>> >>>> Hi >>>> >>>> I recall that clement told me that returning 1,2 or 3 instead of negative, >>>> zero, positive was slow. >>>> And I wonder if the primitive got change to the logic clement proposed? >>>> >>>> Could we not introduce another primitive and use it from the image? >>> >>> Hi, >>> >>> I think Sophie already did most of the work to introduce a new >>> primitive. The missing steps to use the new optimized way to compare >>> strings are: >>> - Add the primitive to the primitive table VM side for Pharo/Squeak and >>> Newspeak >> >> If you know that it is done from the VM side let us know. >> >>> - Use the new primitive in the image and call this one for string comparison >>> >>> With this new primitive performances on string comparison can be >>> improved around x2.5 to x5 times faster. >>> >>>> >>>> compare: string1 with: string2 collated: order >>>> "Return 1, 2 or 3, if string1 is <, =, or > string2, with the collating >>>> order of characters given by the order array." >>>> >>>> | len1 len2 c1 c2 | >>>> <primitive: 'primitiveCompareString' module: 'MiscPrimitivePlugin'> >>>> <var: #string1 declareC: 'unsigned char *string1'> >>>> <var: #string2 declareC: 'unsigned char *string2'> >>>> <var: #order declareC: 'unsigned char *order'> >>>> >>>> len1 := string1 size. >>>> len2 := string2 size. >>>> 1 to: (len1 min: len2) do: >>>> [:i | >>>> c1 := order at: (string1 basicAt: i) + 1. >>>> c2 := order at: (string2 basicAt: i) + 1. >>>> c1 = c2 ifFalse: >>>> [c1 < c2 ifTrue: [^ 1] ifFalse: [^ 3]]]. >>>> len1 = len2 ifTrue: [^ 2]. >>>> len1 < len2 ifTrue: [^ 1] ifFalse: [^ 3]. >>>> >>>> -------------------------------------------- >>>> Stéphane Ducasse >>>> http://stephane.ducasse.free.fr <http://stephane.ducasse.free.fr/> >>>> http://www.synectique.eu <http://www.synectique.eu/> / >>>> http://www.pharo.org <http://www.pharo.org/> >>>> 03 59 35 87 52 >>>> Assistant: Julie Jonas >>>> FAX 03 59 57 78 50 >>>> TEL 03 59 35 86 16 >>>> S. Ducasse - Inria >>>> 40, avenue Halley, >>>> Parc Scientifique de la Haute Borne, Bât.A, Park Plaza >>>> Villeneuve d'Ascq 59650 >>>> France >>>> >>> >>> >>> -- >>> Cyril Ferlicot >>> https://ferlicot.fr <https://ferlicot.fr/> >