Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:43886 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 37985 invoked from network); 11 May 2009 21:17:39 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 11 May 2009 21:17:39 -0000 Authentication-Results: pb1.pair.com smtp.mail=paul.biggar@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=paul.biggar@gmail.com; sender-id=pass; domainkeys=bad Received-SPF: pass (pb1.pair.com: domain gmail.com designates 74.125.46.28 as permitted sender) DomainKey-Status: bad X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: paul.biggar@gmail.com X-Host-Fingerprint: 74.125.46.28 yw-out-2324.google.com Received: from [74.125.46.28] ([74.125.46.28:19401] helo=yw-out-2324.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id F9/76-05302-2F5980A4 for ; Mon, 11 May 2009 17:17:39 -0400 Received: by yw-out-2324.google.com with SMTP id 3so1789380ywj.83 for ; Mon, 11 May 2009 14:17:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :from:date:message-id:subject:to:cc:content-type :content-transfer-encoding; bh=eUORsaKx82CHuSryK2IgjKIJ94oMToSEpg8DlOIAX/A=; b=gkNH1e3R+Y6umbvWbuw5nwBOKfTWbUFe/kpbbqd83QD7H7qP9RfmsuZSadBH1Dj9IU mdW6tgHBBU0Wf9pB+533bCkdmJV2rwUMQrzx5oSyX0pRgyJuJuoPdSlaKmThX1fCVmb4 Ny9sjRVZSJPsLNkwWfnER1ZiYHZtgvXIo7y00= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:content-transfer-encoding; b=vq1LiWow1Y6QzTQtVGFa6m/OFqRHybUP311GVOxMvOiEOdhr4zEi60CfmpDeoabor+ NIUnZy18yj8nXkSiVxn92aSO1OmkL7rTLFYW/1tRCZ+BJeHCqq7+yq7ipwmlisVCPihN h0zqip0ApiFKNgmEZP3M/sytIONWsSR0ccAEI= MIME-Version: 1.0 Received: by 10.231.35.13 with SMTP id n13mr4634377ibd.24.1242076656074; Mon, 11 May 2009 14:17:36 -0700 (PDT) In-Reply-To: References: <155749706.20090117211737@marcus-boerger.de> <497872B8.60807@zend.com> Date: Mon, 11 May 2009 22:17:16 +0100 Message-ID: To: Guilherme Blanco Cc: Dmitry Stogov , Marcus Boerger , Timm Friebe , internals@lists.php.net Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] Method call improvements From: paul.biggar@gmail.com (Paul Biggar) On Mon, May 11, 2009 at 7:47 PM, Guilherme Blanco wrote: > What's the status on this one?! I think it died from neglect. But it was a really good idea. One question that was raised was: > On Thu, Jan 22, 2009 at 10:20 AM, Dmitry Stogov wrote: >> However we can introduce some indirect table associated with op_array, which >> can be used to implement inline caches without direct opcode modification >> (in the same way as IS_CV variables work). There are a lot of papers about >> polymorphic inline caches (e.g. >> http://research.sun.com/self/papers/pics.html) which we probably should use >> to not to invite bicycle. You can't actually use PICs or even ICs with the Zend engine, because you can't insert code into the callee method's header (you would need a JIT). You also wouldn't want to, since PHP can't use the recompilation techniques that Self had. You can use lookup caches, which is exactly what the original patch was. FWIW, since PHP has a static inheritence chain, the best approach seems to be to build a virtual dispatch table, instead of a hashtable for functions. However, there might be some esoteric extensions which make this difficult. Paul -- Paul Biggar paul.biggar@gmail.com