[Vm-dev] VM Maker: VMMaker-oscog.33.mcz
Eliot Miranda
eliot.miranda at gmail.com
Sun Sep 26 15:07:33 UTC 2010
On Sun, Sep 26, 2010 at 4:45 AM, stephane ducasse <
stephane.ducasse at gmail.com> wrote:
>
> Eliot
>
> I wanted to understand what: ' Have various places check for
> isOopCOmpiledMethod:
> rather than isCompiledMethod: to allow SmallIntegers to be used as
> methods.'
> means
> in which circumstances do we want to have smalltalkIntegers used as
> methods?
> when we put an object instead of a compiled method and that by
> accident this is an integer?
>
Looking at the code for the standard Interpreter, if anyone tried
self class addSelector: #foo withMethod: 0.
self foo.
then the VM would crash trying to determine if 0 was a compiled method
because the VM uses isCompiledMethod: and isCompiledMethod: does not (and
should not, because it is used elsewhere) guard against a tagged object.
isOopCompiledMethod: does guard against a tagged object:
isOopCompiledMethod: oop
^(self isNonIntegerObject: oop) and: [self isCompiledMethod: oop]
isCompiledMethod: obj
^(self formatOf: obj) >= 12
So in practice it's not an issue; presumably no-one is using SmallIntegers
as methods ("Doctor it hurts when I..."). But if the VM provides a facility
it is nice for it to provide that facility robustly (if there is no
significant impact on performance).
HTH
Eliot
>
> Stef
>
>
> >
> >
> > Name: VMMaker-oscog.33
> > Author: eem
> > Time: 25 September 2010, 7:13:51 am
> > UUID: 733b7c50-b973-4ca0-9831-5c84d09032bf
> > Ancestors: VMMaker-oscog.32
> >
> > OSCogVM:
> > Support object-as-method:
> > Eagerly evaluate the interpreter version of a primitive
> > to ease the object-as-method implementation and to
> > improve interpreter performance.
> > Refuse to enter anything that isn't a CompiledMethod
> > into the method-lookup cache to avoid open PICs having
> > to check for valid compiled methods.
> > Have various places check for isOopCOmpiledMethod:
> > rather than isCompiledMethod: to allow SmallIntegers to
> > be used as methods.
> > Interpreter:
> > Have various places check for isOopCOmpiledMethod:
> > rather than isCompiledMethod: to allow SmallIntegers to
> > be used as methods.
> > Slang:
> > support super sends by expanding them at translation
> > time. This allows CoInterpreter>>addMethodToCache
> > to avoid cacheing non-compiled methods via a super
> > send, avoiding duplicating SrackInterpreter's method.
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20100926/f5a8b500/attachment.htm
More information about the Vm-dev
mailing list