[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
|