[squeak-dev] primitives

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

[squeak-dev] primitives

Mark Volkmann
Where can I read about the standard primitives in Squeak? I can find  
lots of resources on writing my own primitives, but I want to know  
what the existing ones do. For example, I'm looking at the "new"  
method in Behavior and I see "<primitive: 70>". Where can I find a  
description of that does? Is there an easy way to find the  
corresponding C source code?

---
Mark Volkmann





Reply | Threaded
Open this post in threaded view
|

[squeak-dev] Re: primitives

Nicolas Cellier-3
Mark Volkmann a écrit :

> Where can I read about the standard primitives in Squeak? I can find
> lots of resources on writing my own primitives, but I want to know what
> the existing ones do. For example, I'm looking at the "new" method in
> Behavior and I see "<primitive: 70>". Where can I find a description of
> that does? Is there an easy way to find the corresponding C source code?
>
> ---
> Mark Volkmann
>
>
>

I forgot the links, but search for Smalltalk blue book at Stephane
Ducasse site.

If you load VMMaker, you will have the code for most of these primitives
in Smalltalk pseudo-C code (slang). Most of C "source" is in fact
generated from that.

Nicolas


Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] primitives

Yoshiki Ohshima-2
In reply to this post by Mark Volkmann
At Sat, 1 Nov 2008 10:17:38 -0500,
Mark Volkmann wrote:
>
> Where can I read about the standard primitives in Squeak? I can find  
> lots of resources on writing my own primitives, but I want to know  
> what the existing ones do. For example, I'm looking at the "new"  
> method in Behavior and I see "<primitive: 70>". Where can I find a  
> description of that does?

  For "new", you would probably like to know the object and object
memory format as well.  So, reading the related sections in:

http://www.google.com/search?q=squeak+back+to+the+future

would help.  Then, the source is the best "resource".  Install the
VMMaker and look at the Interpreter class>>initializePrimitiveTable.
It says primitive 70 is primitiveNew.  So browse the implementor(s) of
primitiveNew and you see what it does.

Or, you can view the versions up to when the Interpreter was still
maintained in the image at:

http://tinlizzie.org:8080/seaside/examples/authorship2

check off the "show only existing" box, and navigate to Interpreter
and navigate to primitiveNew.  You see the code with diffs.

> Is there an easy way to find the  
> corresponding C source code?

  The best thing is to generate the C code by yourself from VMMaker,
but just to get the feel of it, go to:

http://squeakvm.org/cgi-bin/viewcvs.cgi/trunk/platforms/unix/src/vm/interp.c?rev=1870&view=auto

and search for primitiveNew.

It is also a good idea to download an old image where the
InterpreterSimulator still works. Squeak 2.4c would be good, if I
remember correctly.

-- Yoshiki

Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] primitives

David T. Lewis
On Sat, Nov 01, 2008 at 08:41:16AM -0700, Yoshiki Ohshima wrote:

> At Sat, 1 Nov 2008 10:17:38 -0500,
> Mark Volkmann wrote:
> >
> > Is there an easy way to find the  
> > corresponding C source code?
>
>   The best thing is to generate the C code by yourself from VMMaker,
> but just to get the feel of it, go to:
>
> http://squeakvm.org/cgi-bin/viewcvs.cgi/trunk/platforms/unix/src/vm/interp.c?rev=1870&view=auto
>
> and search for primitiveNew.
>

Also, if you want to browse the generated C code within the image, you can use
SlangBrowser:
   http://wiki.squeak.org/squeak/5916

This will let you view the C code directly in Squeak browsers, with and without
method inlining. In other words, you can look at the #primitiveNew method as it
is written in Smalltalk, switch to a "translate to C" view to see the same
method translated to C, then switch to a "translate inlined C" view to see the
effect of method inlining (this is how the function will appear in the generated
interp.c file).

Dave


Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] primitives

johnmci
In reply to this post by Mark Volkmann

On Nov 1, 2008, at 8:17 AM, Mark Volkmann wrote:

> Where can I read about the standard primitives in Squeak? I can find  
> lots of resources on writing my own primitives, but I want to know  
> what the existing ones do. For example, I'm looking at the "new"  
> method in Behavior and I see "<primitive: 70>". Where can I find a  
> description of that does? Is there an easy way to find the  
> corresponding C source code?
>
> ---
> Mark Volkmann

As mentioned the VM is built from Slang code, but it requires some  
platform specific code to interact with the
operating system, there is now some documentation at  http://isqueak.org/PlatformVMAP

Of course if you don't have an operating system http://sourceforge.net/projects/squeaknos/



--
=
=
=
========================================================================
John M. McIntosh <[hidden email]>
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
=
=
=
========================================================================