[Vm-dev] Re: [squeak-dev] Re: Separate TeaTime (was Re: Re:
Teleplace is hiring...)
Andreas Raab
andreas.raab at gmx.de
Wed Mar 30 08:01:03 UTC 2011
On 3/30/2011 4:12, Eliot Miranda wrote:
> Classes *don't* inherit from nil. nil is at the end of their
> superclass chain. That's different from inheriting.
>
> At least in current images UndefinedObject includesBehavior: nil is
> false, which seems right to me. nil is not a behavior; its use as the
> sentinel at the end of the superclass chain doesn't imply it is a
> behavior. So I propose that we change includesBehavior:ThatOf: to
> something like
>
> StackInterpreter methods for plugin primitive support
> includesBehavior: aClass ThatOf: aSuperclass
> "Return the equivalent of
> aClass includesBehavior: aSuperclass.
> Note: written for efficiency and better inlining (only 1 temp)"
> | theClass |
> <inline: true>
> aSuperclass = objectMemory nilObject ifTrue:
> [^false].
> theClass := aClass.
> [theClass = aSuperclass ifTrue:
> [^true].
> theClass ~= objectMemory nilObject] whileTrue:
> [theClass := self superclassOf: theClass].
> ^false
>
> I don't think this will affect anything other than FFI and Alien since
> those are the only uses I can find, and in my reading of that code the
> proposed change seems fine; safer in fact.
>
> Agreed?
Sounds reasonable to me. The one thing to check is if there are any
places that currently assume that includesBehavior:ThatOf: returns true
for a nil argument. If so, we can still add an explicit check that tests
for interpreterProxy classAlien to be nil but I agree that the above
would be the better solution.
Cheers,
- Andreas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20110330/a410c6b3/attachment.htm
More information about the Vm-dev
mailing list