Re: Caching question

David Hakim <dhakim-Gkm/TONP9n1Wk0Htik3J/[email protected]> Wed, 12 Feb 2003 11:16:50 -0500
Newsgroups gmane.comp.lang.moto.devel
Message-ID <[email protected]>
On Wednesday, February 12, 2003, at 11:07  AM, Shay Harding wrote:

> Ok, so basically you're saying "Don't do that" :)

Not exactly ... I'd like to say please keep doing that :) Then find out 
exactly what's going wrong in your case and help me fix it :)

>
> "Promotion of Moto Defined Classes is clumsy. The class itself AND all
> of its member variables must be promoted."
>
> heh, yeah this took me a few iterations to get everything promoted.
> Didn't realize I had to promote a String contained in an object.
>
Yeah, it sucks ... the ability to introspect classes that we will get 
out of the inheritance implementation should help a lot with this. We 
should be able to make 'promote' a method of all objects. When called 
the object itself can go through all of its members and promote them.
>
> Shay
>
-Dave

>> -----Original Message-----
>> From: David Hakim [mailto:dhakim-Gkm/TONP9n1Wk0Htik3J/[email protected]]
>> Sent: Wednesday, February 12, 2003 8:46 AM
>> To: Shay Harding
>> Cc: Moto Devel
>> Subject: Re: [moto-devel] Caching question
>>
>>
>> 	There are a couple of things that may be causing this behavior.
>>
>> 1) The most common reason this happens is that the module was
>> compiled
>> against a different version of moto (or moto extensions) than the
>> interpreter is loading. Under linux all symbols live in one namespace
>> so objects allocated by the interpreter are seen by the compiler and
>> vise versa. Moreover the dynamic loader under linux will
>> always look to
>> see if a symbol has already been loaded and if so use that
>> symbol. Thus
>> if a function or method defined in an extension changes, if
>> there is an
>> older mmc compiled module already loaded (that was compiled with the
>> old version of an extension function with the same name), the old
>> version will be used. I want to address at least some of the symbol
>> versioning problems in future versions of moto by allowing a
>> flag to be
>> passed to mmc to make the mmc compiled module dependent on the shared
>> version of an extension as opposed to the static version.
>>
>> 2) Moto Defined Classes can at times have different runtime
>> representations in compiled vs interpreted code. While this usually
>> isn't the case ... sometimes it is. I'm hoping to unify their
>> representations during the implementation of inheritance. The real
>> problem with these different representations is that on linux, when
>> both interpreted code and compiled code are running on the same
>> webserver they share the same shared segment. So when you put
>> an object
>> into the context from interpreted code, it may be taken out
>> and used in
>> compiled code (and vise versa). Unfortunately if the object has a
>> different representation in interpreted and compiled modes
>> methods from
>> one may not work right on objects allocated by the other.
>>
>> 3) Promotion of Moto Defined Classes is clumsy. The class itself AND
>> all of its member variables must be promoted. I'm hoping to
>> get rid of
>> the idea of promotion all together one of these days with the
>> inclusion
>> of a real garbage collector. I've had one mostly built for a
>> while but
>> its performance leaves too much to be desired for inclusion at this
>> point.
>>
>> -Dave
>>
>> On Wednesday, February 12, 2003, at 08:36  AM, Shay Harding wrote:
>>
>>> Is there a conflict between compiled moto mods and interpreted in
>>> regards to caching objects then retrieving them?
>>>
>>> I have a small moto program that stores data in a SymbolTable then
>>> promotes everything and caches it so the data is persistent.
>>> Everything works fine if I only run it from interpreted OR
>> only run it
>>> from compiled. When I run the interpreted then run the
>> compiled (or in
>>> reverse order) I get errors about null objects and such. The
>>> interpreted version actually doesn't kick out an error, it
>> just causes
>>> the Apache child to segfault.
>>>
>>>
>>>
>>> Shay
>>>
>>> ---
>>> Outgoing mail is certified Virus Free.
>>> Checked by AVG anti-virus system (http://www.grisoft.com).
>>> Version: 6.0.449 / Virus Database: 251 - Release Date: 1/27/2003
>>>
>>>
>>>
>>
>>
>> ---
>> Incoming mail is certified Virus Free.
>> Checked by AVG anti-virus system (http://www.grisoft.com).
>> Version: 6.0.449 / Virus Database: 251 - Release Date: 1/27/2003
>>
>>
>
> ---
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.449 / Virus Database: 251 - Release Date: 1/27/2003
>
>
>