[Vm-dev] Building OSProcessPlugin on macs

Eliot Miranda eliot.miranda at gmail.com
Thu Jul 7 17:21:40 UTC 2011


On Wed, Jul 6, 2011 at 8:36 PM, Igor Stasenko <siguctua at gmail.com> wrote:

>
> On 7 July 2011 05:28, David T. Lewis <lewis at mail.msen.com> wrote:
> >
> > On Wed, Jul 06, 2011 at 06:38:10PM -0700, Eliot Miranda wrote:
> >>
> >> On Wed, Jul 6, 2011 at 6:31 PM, Igor Stasenko <siguctua at gmail.com>
> wrote:
> >>
> >> >
> >> > With a new version of plugin submitted by Eliot it no longer crashing
> :)
> >> >
> >>
> >> Slang is occasionally super-tricky.  If you write
> >>
> >>     self atexit: #sendSignalToPids
> >>
> >> it generates
> >>
> >>     atexit("sendSignalToPids")
> >>
> >> which will crash.  You must write
> >>
> >>     self atexit: #sendSignalToPids asSymbol
> >>
> >> to get it to generate
> >>
> >>     atexit(sendSignalToPids)
> >>
> >> (where sendSignalToPids is some function to be called at exit).
> >>
> >> If course we should change this but there's backwards-compatibility for
> >> plugin to consider.  Does anyone depend on the old behavior?  I've been
> >> bitten more than a few times by this.  Sigh...
> >
> > Symbols and strings are used more or less interchangably in C translation
> > (aka "slang") and in pragmas. So I think that there is a general
> expectation
> > that either a symbol or a string would translate to C as a string. In
> > the case of #sendSignalToPids, this is actually a function pointer that
> > is being used in a rather specialized context. So even though the
> > translation of 'self atexit: #sendSignalToPids' produces a surprising
> > result in this case, I would still say that is reasonable to expect
> > Smalltalk symbols and strings to both translate into C strings, and
> > it would not be reasonable to expect a simple C translator to do
> > enough type checking to figure out that in this particular case the
> > '#sendSignalToPids' should be treated as a function pointer rather
> > than as a string.
> >
>
> I concur not. As to me a least surprising behaviour for code generator
> would be to covert symbols to
> identifiers with same name, instead of literal strings.
>

+1


>
>
> > The original method in UnixOSProcessPlugin is written as follows in
> > order to avoid this issue:
> >
> >        self cCode: 'atexit(sendSignalToPids)'.
> >
>
> the problem with above code that it doesn't tells code generator to
> keep sendSignalToPids method around,
> instead of pruning it since nobody using it.
> That's why in hydra i added this special asCIdentifier to not only
> convert symbol to identifier (instead of quoted C string)
> but also make sure that if given symbol matching the method name ,
> then make sure that this method won't be pruned.
>
> And of course , when browsing the code i can see senders of it, while
> if i forced to use cCode: 'yaddayadda',
> it will hide the usage from our eyes.
>
> So, one way or another, but the less cCode: we have, the better.
>

+1000


>
> > I also note that the purpose of SlangBrowser is to make it easy to
> > review code like this while it is being written, so I guess that I
> > should get off my butt and get this working in the oscog branch one
> > of these days :-/
> >
> > Dave
> >
> >
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>



-- 
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20110707/1ac6da3d/attachment.htm


More information about the Vm-dev mailing list