[squeak-dev] how to see primitive source these days?

Bob Arning arning315 at comcast.net
Tue Jan 10 18:20:34 UTC 2017


I got the 64-bit macos vm and the problem is still there.


/Users/bob/squeak/Squeak5.1-16548-64bit-All-in-One/Squeak5.1-16548-64bit-All-in-One.app/Contents/Resources/CocoaFast.app/Contents/MacOS/Squeak
Croquet Closure Cog[Spur] VM [CoInterpreterPrimitives 
VMMaker.oscog-cb.1919]
Mac OS X built on Sep 25 2016 16:07:11 UTC Compiler: 4.2.1 Compatible 
Apple LLVM 6.0 (clang-600.0.54)
platform sources revision VM: 201608171728 
https://github.com/OpenSmalltalk/opensmalltalk-vm.git $ Date: Wed Aug 17 
10:28:01 2016 -0700 $ Plugins: 201608171728 
https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
CoInterpreter VMMaker.oscog-cb.1919 uuid: 
00a8dd2a-bc8d-4552-b400-be781c8aabec Sep 25 2016
StackToRegisterMappingCogit VMMaker.oscog-cb.1919 uuid: 
00a8dd2a-bc8d-4552-b400-be781c8aabec Sep 25 2016


On 1/10/17 1:00 PM, David T. Lewis wrote:
> It sounds like a VM bug. I am away and cannot check anything further right
> now, but one thing I would mention is that there has been a good deal of
> recent VM development that may be related to this, so if you don't mind
> experimenting you may want to try one of the latest VMs here:
>
> https://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/201608171728
>
> That will at least let you see if it is a bug that someone has already
> fixed (which I think is quite likely).
>
> Dave
>
>
>> Thanks, Dave,
>>
>> There are a number of errors possible in that primitive and I don't know
>> if one can see the particular code after a failure. I was able to narrow
>> it down, though. Adding this to FloatArray:
>>
>> testreplaceFrom: start to: stop with: replacement startingAt: repStart
>> "
>> (FloatArray new: 8) testreplaceFrom: 1 to: 3 with: (FloatArray new: 3)
>> startingAt: 1
>> "
>>       <primitive: 105>
>>       self halt.
>>
>> Runs fine in 32-bit squeak and halts in 64-bit.
>>
>> -----------succeeds on-----------
>>
>> Virtual Machine
>> ---------------
>> /Users/bob/squeak/old squeak5.1/ast 5.1.app/Contents/MacOS/Squeak
>> Croquet Closure Cog[Spur] VM [CoInterpreterPrimitives
>> VMMaker.oscog-cb.1919] 32 bit
>> Mac OS X built on Aug 17 2016 18:59:49 UTC Compiler: 4.2.1 Compatible
>> Apple LLVM 6.0 (clang-600.0.54)
>> platform sources revision VM: 201608171728
>> https://github.com/OpenSmalltalk/opensmalltalk-vm.git $ Date: Wed Aug 17
>> 10:28:01 2016 -0700 $ Plugins: 201608171728
>> https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
>> CoInterpreter VMMaker.oscog-cb.1919 uuid:
>> 00a8dd2a-bc8d-4552-b400-be781c8aabec Aug 17 2016
>> StackToRegisterMappingCogit VMMaker.oscog-cb.1919 uuid:
>> 00a8dd2a-bc8d-4552-b400-be781c8aabec Aug 17 2016
>>
>> --------fails on--------
>>
>> Virtual Machine
>> ---------------
>> /Users/bob/squeak/Squeak5.1-16548-64bit-All-in-One/Squeak5.1-16548-64bit-All-in-One.app/Contents/MacOS/Squeak
>> Croquet Closure Cog[Spur] VM [CoInterpreterPrimitives
>> VMMaker.oscog-cb.1919] 64 bit
>> Mac OS X built on Aug 17 2016 18:51:56 UTC Compiler: 4.2.1 Compatible
>> Apple LLVM 6.0 (clang-600.0.54)
>> platform sources revision VM: 201608171728
>> https://github.com/OpenSmalltalk/opensmalltalk-vm.git $ Date: Wed Aug 17
>> 10:28:01 2016 -0700 $ Plugins: 201608171728
>> https://github.com/OpenSmalltalk/opensmalltalk-vm.git $
>> CoInterpreter VMMaker.oscog-cb.1919 uuid:
>> 00a8dd2a-bc8d-4552-b400-be781c8aabec Aug 17 2016
>> StackToRegisterMappingCogit VMMaker.oscog-cb.1919 uuid:
>> 00a8dd2a-bc8d-4552-b400-be781c8aabec Aug 17 2016
>>
>>
>>
>>
>> On 1/10/17 9:06 AM, David T. Lewis wrote:
>>> How to see primitive source these days:
>>>
>>> The code is in the VMMaker repository
>>> 'http://source.squeak.org/VMMaker'.
>>>
>>> For the Spur VM, the package is 'VMMaker.oscog'. For purposes of just
>>> taking a quick look at the code, you can load the latest version
>>> VMMaker.oscog-eem.2079 (this will not exactly corresponding to the
>>> version
>>> you are running but here I assume you just want a quick look at what
>>> primitive 105 is doing).
>>>
>>> To find the numbered primitive, see CoInterpreter
>>> class>>initializePrimitiveTable,
>>> which calls StackInterpreter class>>initializePrimitiveTable, which
>>> shows
>>> primitive 105 as #primitiveStringReplace.
>>>
>>> The Smalltalk code for this primitive is
>>> InterpreterPrimitives>>primitiveStringReplace.
>>> The generated C code for this can be found in the GitHub repository
>>> https://github.com/OpenSmalltalk/opensmalltalk-vm, look for the
>>> primitiveStringReplace function in
>>> opensmalltalk-vm/src/vm/gcc3x-cointerpmt.c.
>>>
>>> Dave
>>>
>>>
>>>
>>> On Tue, Jan 10, 2017 at 07:57:31AM -0500, Bob Arning wrote:
>>>> I'm was copying a FloatArray and it seems not to be using the primitive
>>>> to move the data over to the copy.
>>>> Float>>replaceFrom:to:with:startingAt: says it uses a primitive, but it
>>>> seem to fallback to the code in SequenceableCollection. How can I see
>>>> the priitive code to see what the issue may be? This is what it says it
>>>> does:
>>>>
>>>> replaceFrom: start to: stop with: replacement startingAt: repStart
>>>> "Primitive. This destructively replaces elements from start to stop in
>>>> the receiver starting at index, repStart, in the collection,
>>>> replacement. Answer the receiver. Range checks are performed in the
>>>> primitive only. Optional. See Object documentation whatIsAPrimitive."
>>>>       <primitive: 105>     super replaceFrom: start to: stop with:
>>>> replacement startingAt: repStart
>>>>
>>>> This is what I did to see if the prim failed:
>>>>
>>>> replaceFrom: start to: stop with: replacement startingAt: repStart
>>>> "Primitive. This destructively replaces elements from start to stop in
>>>> the receiver starting at index, repStart, in the collection,
>>>> replacement. Answer the receiver. Range checks are performed in the
>>>> primitive only. Optional. See Object documentation whatIsAPrimitive."
>>>>       <primitive: 105>     WOOPS ifNil: [         WOOPS _ #WOOPS.
>>>> self halt     ].     super replaceFrom: start to: stop with:
>>>> replacement
>>>> startingAt: repStart
>>>>
>>>> And it did fail and I'm puzzled as to why:
>>>>
>>>> Halt:
>>>> 10 January 2017 7:46:09.382669 am
>>>>
>>>> VM: Mac OS - Smalltalk
>>>> Image: Squeak5.1 [latest update: #16548]
>>>>
>>>> SecurityManager state:
>>>> Restricted: false
>>>> FileAccess: true
>>>> SocketAccess: true
>>>> Working Dir
>>>> /Users/bob/squeak/Squeak5.1-16548-64bit-All-in-One/Squeak5.1-16548-64bit-All-in-One.app/Contents/Resources
>>>> Trusted Dir /Users/bob/Library/Application Support/Squeak/
>>>> Untrusted Dir /Users/bob/Documents/Squeak/
>>>>
>>>> FloatArray(Object)>>halt
>>>>       Receiver: a FloatArray(0.0 0.0 0.0)
>>>>       Arguments and temporary variables:
>>>>
>>>>       Receiver's instance variables:
>>>> a FloatArray(0.0 0.0 0.0)
>>>> FloatArray>>replaceFrom:to:with:startingAt:
>>>>       Receiver: a FloatArray(0.0 0.0 0.0)
>>>>       Arguments and temporary variables:
>>>>           start:     1
>>>>           stop:     3
>>>>           replacement:     a FloatArray(1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
>>>> 1.0 1.0 1.0 1.0 1.0 1...etc...
>>>>           repStart:     1
>>>>       Receiver's instance variables:
>>>> a FloatArray(0.0 0.0 0.0)
>>>> FloatArray(SequenceableCollection)>>copyFrom:to:
>>>>       Receiver: a FloatArray(1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
>>>> 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1...etc...
>>>>       Arguments and temporary variables:
>>>>           start:     1
>>>>           stop:     3
>>>>           newSize:     3
>>>>       Receiver's instance variables:
>>>> a FloatArray(1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
>>>> 1.0
>>>> 1.0 1.0 1.0 1.0 1...etc...
>>>> ConvolutionalLayer>>forward:isTraining:
>>>>
>>
>>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20170110/698891ac/attachment.html>


More information about the Squeak-dev mailing list