On Thu, 20 Sep 2007, Stefan Esser wrote: > Derick Rethans schrieb: > > On Thu, 20 Sep 2007, Stefan Esser wrote: > > > > > >> One problem I and others have run into is that from time to time we need > >> to store extra information for specific opcode arrays. For simple values > >> it is possible to use one of the reserved slots in the op_array > >> structure, but in the past that has been unrelieable because APC for > >> example simply overwrote the first slots without asking the Zend Engine > >> to reserve some space. > >> > > > > Have a pointer on how this is done? I sortof need/want to do this in > > Xdebug as well, however I don't want opcode caches to remember this > > value. > > > Well the "official" way to use the reserved area of an opcode array is > to get an handle from the zend engine for reserved space. > This is done by > ZEND_API int zend_get_resource_handle(zend_extension *extension) > it returns an index you can simply use. (I think meanwhile APC will > honor this and will not overwrite the first bytes).
Yes, it does: void apc_zend_init(TSRMLS_D) { zend_extension dummy_ext; #ifdef ZEND_ENGINE_2 APCG(reserved_offset) = zend_get_resource_handle(&dummy_ext); assert(APCG(reserved_offset) == dummy_ext.resource_number); assert(APCG(reserved_offset) != -1); assert(sizeof(apc_opflags_t) <= sizeof(void*)); #endif For Xdebug I don't need to use the dummy ext though as it's a real zend extension. regards, Derick -- Derick Rethans http://derickrethans.nl | http://ez.no | http://xdebug.org -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php