process name in InterpreterSimulator

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

process name in InterpreterSimulator

Ang BeePeng
Hi all.

I want to learn about processes, so I have InterpreterSimulator run, and try to print name of current running process. A process is an instance of SmallInteger (not Process), is it because simulator process as VM point of view?

How can I print a process name?

http://askoh.net/mmu/beepeng/Smalltalk/Squeak/video/20100202-InterpreterSimulator/20100202-InterpreterSimulator.html

Thanks.

Ang Beepeng
Reply | Threaded
Open this post in threaded view
|

Re: process name in InterpreterSimulator

David T. Lewis
On Tue, Feb 02, 2010 at 09:40:46AM -0800, Ang BeePeng wrote:

>
> Hi all.
>
> I want to learn about processes, so I have InterpreterSimulator run, and try
> to print name of current running process. A process is an instance of
> SmallInteger ???not Process), is it because simulator process as VM point of
> view?
>
> How can I print a process name?
>
> http://askoh.net/mmu/beepeng/Smalltalk/Squeak/video/20100202-InterpreterSimulator/20100202-InterpreterSimulator.html

You are looking at an object pointer (OOP) referring to the process.
The integer value is a reference to a position in the object memory.
This object reference points to the object header of your Process
object (i.e. a location in the object memory), and one of the fields
in that object would be another OOP pointing to the header for the
process name (a string object).

I do not know an easy way to print the process name to the transcript
from within the simulated interpreter, but in principle you can start
with the object pointer value, use #longAt: to find the object header,
find the #name instance var in the object, do another #longAt: to get
the string object, and look at the values in the string object to figure
out the process name.

I'm sure there must be some simpler way, but I can't think of it
right now.

Dave