Hi Denis,

On Tue, Apr 4, 2017 at 9:53 AM, Denis Kudriashov <[email protected]>
wrote:

>
> 2017-04-04 18:45 GMT+02:00 Esteban Lorenzano <[email protected]>:
>
>> still is not there, because is not the same primitive :)
>> look, this is the way where it is generated:
>>
>> translatedPrimitives
>> "an assorted list of various primitives"
>> (ByteString compiledMethodAt: 
>> #findSubstringViaPrimitive:in:startingAt:matchTable:
>> ifAbsent: []) ifNotNil:
>> [^#("Pharo uses findSubstringViaPrimitive:in:startingAt:matchTable:"
>> (Bitmap compress:toByteArray:)
>> (Bitmap decompress:fromByteArray:at:)
>> (Bitmap encodeBytesOf:in:at:)
>> (Bitmap encodeInt:in:at:)
>> (ByteString compare:with:collated:)
>> (ByteString translate:from:to:table:)
>> (ByteString findFirstInString:inSet:startingAt:)
>> (ByteString indexOfAscii:inString:startingAt:)
>> (String findSubstringViaPrimitive:in:startingAt:matchTable:)
>> (ByteArray hashBytes:startingWith:)
>> (SampledSound convert8bitSignedFrom:to16Bit:))].
>> ^#(
>> (Bitmap compress:toByteArray:)
>> (Bitmap decompress:fromByteArray:at:)
>> (Bitmap encodeBytesOf:in:at:)
>> (Bitmap encodeInt:in:at:)
>> (ByteString compare:with:collated:)
>> (ByteString translate:from:to:table:)
>> (ByteString findFirstInString:inSet:startingAt:)
>> (ByteString indexOfAscii:inString:startingAt:)
>> (ByteString findSubstring:in:startingAt:matchTable:)
>> (ByteArray hashBytes:startingWith:)
>> (SampledSound convert8bitSignedFrom:to16Bit:)
>> )
>>
>> means that Pharo uses #indSubstringViaPrimitive:in:startingAt:matchTable:
>> while squeak uses #findSubstring:in:startingAt:matchTable:.
>>
>
> Ok maybe I not understand anything :) But to clarify lets look at image
> side methods.
> in Squeak:
>
> ByteString>>findSubstring: key in: body startingAt: start matchTable:
> matchTable
> <primitive: 'primitiveFindSubstring' module: 'MiscPrimitivePlugin'>
>
>
> in Pharo:
>
> String>>findSubstringViaPrimitive: key in: body startingAt: start
> matchTable: matchTable
> <primitive: 'primitiveFindSubstring' module: 'MiscPrimitivePlugin'>
>
>
> So to me they both uses same VM primitive primitiveFindSubstring. Does
> they are really different inside VM?
>

No they're not different; they're the same.  But the primitive works only
with ByteString, so it should not be on String where it will try and work
on WideString and return completely incorrect results.

-- 
_,,,^..^,,,_
best, Eliot

Reply via email to