RE: [PHP-DEV] [PATCH] Resubmitted for review
| From: | Robert Silva | Date: | Fri, 15 Oct 2004 07:00:25 +0000 |
| Subject: | RE: [PHP-DEV] [PATCH] Resubmitted for review | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-13338@lists.php.net to get a copy of this message | ||
Don't completely follow you since I don't have the required knowledge of the
Zend Engine (yet). The problem that I ran into (I think) was that
destroy_zend_class gets called before rshutdown and it was releasing the
entries in the constants_table before I had a chance to do it, hence the
patch which lets the engine manage them.
Sorry if I'm totally lost, but I don't understand why class constants would
be handled any differently than properties which are created and destroyed
with the class. (Which, on the surface at least, appears to work, they get
released during destroy_zend_class).
Bob Silva
-----Original Message-----
From: Andi Gutmans [mailto:andi@zend.com]
Sent: Thursday, October 14, 2004 5:14 PM
To: Robert Silva; internals@lists.php.net
Subject: Re: [PHP-DEV] [PATCH] Resubmitted for review
Hi Robert,
If I remember correctly, we came to the conclusion a while ago, that unless
we make some big changes (which I'm not quite sure yet how far reaching
they would be), then we could not malloc() constants. You would really need
to emalloc()/efree() them on each request because the engine could connect
to these malloced()'ed variables and all hell would break loose. Also we do
a zval_update_constant() today in order to initialize constants with
constants just before they are being used the first time.
What this basically means that you'd initialize and free these constants in
RINIT()/RSHUTDOWN(). Not too sexy but looking at how much this is needed
it's not too bad.
Andi
At 11:54 PM 10/11/2004 -0700, Robert Silva wrote:
>This patch allows php extension authors to declare constants on internal
>objects. This pretty much just duplicates the zend_declare_property_*
>functions but for constants. Currently there is no way for C level class
>authors to declare constants on their objects since the engine has to
>allocate space for them.
>
>Bob Silva
>
>--
>PHP Internals - PHP Runtime Development Mailing List
>To unsubscribe, visit: http://www.php.net/unsub.php
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php