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

Bob Arning arning315 at comcast.net
Tue Jan 10 14:48:54 UTC 2017


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/1c578190/attachment.html>


More information about the Squeak-dev mailing list