Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:90907 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 98787 invoked from network); 25 Jan 2016 08:44:56 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 25 Jan 2016 08:44:56 -0000 Authentication-Results: pb1.pair.com header.from=dmitry@zend.com; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=dmitry@zend.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain zend.com designates 207.46.100.102 as permitted sender) X-PHP-List-Original-Sender: dmitry@zend.com X-Host-Fingerprint: 207.46.100.102 mail-by2on0102.outbound.protection.outlook.com Received: from [207.46.100.102] ([207.46.100.102:26024] helo=na01-by2-obe.outbound.protection.outlook.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 1B/31-26079-580E5A65 for ; Mon, 25 Jan 2016 03:44:55 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=RWSoftware.onmicrosoft.com; s=selector1-zend-com; h=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=FNh9Kc37trdHHQCqS70zNaLDT48CpG6kEGPBlLGLnMM=; b=gbjapX3lyhWs1Y2yc9dClw5r6WVkJG0z0JsN4OM5JZDTAmnvhtpyVwxBgoOXVJ/sbW7NQO/4CrbCfZZjHF9wcPEk7mcGVhwL9utEtUSPLu6OHh4KZ5x8xKGez+z4ls3OzMNEcAI7g/T/suz+8K/VnRqi+YgyRHTcAgveLZTP//U= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dmitry@zend.com; Received: from tpl2.home (92.62.57.172) by BLUPR0201MB1779.namprd02.prod.outlook.com (10.162.239.13) with Microsoft SMTP Server (TLS) id 15.1.390.13; Mon, 25 Jan 2016 08:44:48 +0000 To: Bob Weinand References: <56A5D921.7090800@zend.com> CC: Nikita Popov , PHP internals list Message-ID: <56A5E072.3020609@zend.com> Date: Mon, 25 Jan 2016 11:44:34 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [92.62.57.172] X-ClientProxiedBy: DB5PR02CA0001.eurprd02.prod.outlook.com (25.161.237.11) To BLUPR0201MB1779.namprd02.prod.outlook.com (25.162.239.13) X-Microsoft-Exchange-Diagnostics: 1;BLUPR0201MB1779;2:RVHo88cAnZmn/eCXrM98GZZ9rv9JqvRqOK7rj9FFbZ6lvIoLMr8XZz+5Ng2AC+I4YaN+yW+1k/Df9J4B7tj0JFSGTIzASDl7vVC75UqbZ4F6b3BFdCld+I6lZUFQDJRv33ZhGsmOlzZGGYMlQYI6Mw==;3:TSEkMSwUKrCTKZ2id1UutDmBuehez9Cr4Yu8FRDu1xwBZjvkFMTqKWNATeYRSoWK2vNQh6eCyIWrxFYgBtSdvjrnW18uPbV+65vYOxtMnHs+AIpLobz5eGpCSNLtzdjl;25:TZVz4KQ8K8CnO3MLn1CX2gfF4nlQQWW5FQrC8DfsMWFc8RVNrDPpAxuF8u/oAH/PUTsUyyQIM5KWQb75tPvgRqQVljT9xXSU2VyPs/gX8sUiM2jZlnjSB0puR84n9eXAly34SLTWCTog5ErEF+ARbSUQNox4nIquXPBoY7y5CmJFVmTOp4PaGqtJ85PoXBAzT+1sML6jF4tffxRxecbqpmPApJGH5LJ5FqZe+T1Ji7OPNvUc+ZfATNgp2Z+h7X1/ X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR0201MB1779; X-MS-Office365-Filtering-Correlation-Id: 9d7341aa-3785-4b4b-3ccc-08d32563c92d X-Microsoft-Exchange-Diagnostics: 1;BLUPR0201MB1779;20:Ye2yPl5bHiRbCkm1WD173rvHaHlAlsa2uwAM9pmayEr2h7O6WJqZZtqO6LfQucI/UQnsjob61Em01Z0g+3E7XOgVBnF7AX7opJ1ftUGPSP1f4CX/zYwq2yWTVtTJpSdow6Fn5bIU0xUH3snfQr2dVMmy8ncMciTx+HDFgA7arhNNM3rSQTsTg8UnbY4xZRZVjaffolDLVYpWH8qvld2DYAymtz51kN7sswqophTTAP+zvKc8wwIkf3SIDRCbwf8GM9ksiklxXlFWejdTArT1dOL9Rr9CdhWPKcdXU5MK3BxXGfJ47JeUxDFo52j71voI4IYLTF+/87uj/etI3QT/kHMXZFLJdM6di4tzKydExYokVm9uaxxWfasjXI/GpYQIQxeBdXUvC5ax9BWxb4lnkb05d7J3/ZmoXXp08uVA7NG5iJvimfygCJ8tAtbpImr4b4KBT7AnX2z+ynxO05hUbWJ70EIQ3IhMX9AHOHXIZsRRT/jygocwl6eP2SS8fns1;4:T4zgv6wI5K1XwxK2Fs6kyicA6eYk1lEqQRdKUS8ZnPvI91olcTTtdMdiy1do6YH8H0Sigg+V6qycoeq9vhmsEhhHK7AKBgmRierVpKQ1PO5fAG+MnyJ20DRu4S2J7gQyaCOyH6Gx2vo06Zw+8Wwkcui0xVpADajqGKdHJ8R3vhnMMJPfEdbAzNhdXNw0z6hZlUdw2M2RebzTfTJnuN/50WAkuRL0O1jwMtng4AWMRtUnezHgdNtUSLOEWyKWTHWpGUZIwTa8jF/Pt++n86j86u/K8QTJp9DBWdMXgAaOgVWQmmAqTAeqbk2OAc8/HWdq3Ao189SJZqVK0H4edH0LPCQA8yfTBiLdQxUQbTNfZjuleZEcW78noCNKrkbBPeFimy4EAJo3QOMcHbn+S8CYgRSWSoubiyjAo6aZvwYBP68EQa8scR9RhKM8cKwWGGwG X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(257391296339839); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(123027)(601004)(2401047)(5005006)(8121501046)(520078)(10201501046)(3002001);SRVR:BLUPR0201MB1779;BCL:0;PCL:0;RULEID:;SRVR:BLUPR0201MB1779; X-Forefront-PRVS: 083289FD26 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(479174004)(24454002)(164054003)(189002)(199003)(377454003)(230700001)(15975445007)(77096005)(5001960100002)(110136002)(54356999)(2950100001)(1096002)(6116002)(87266999)(50986999)(5008740100001)(105586002)(586003)(65816999)(76176999)(106356001)(97736004)(33656002)(4001350100001)(3846002)(81156007)(65956001)(189998001)(101416001)(66066001)(47776003)(65806001)(87976001)(19580395003)(69596002)(19580405001)(2906002)(122386002)(50466002)(42186005)(83506001)(4326007)(80316001)(36756003)(64126003)(59896002)(5004730100002)(21086003)(93886004)(40100003)(86362001)(23746002)(92566002);DIR:OUT;SFP:1102;SCL:1;SRVR:BLUPR0201MB1779;H:tpl2.home;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; Received-SPF: None (protection.outlook.com: zend.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;BLUPR0201MB1779;23:+YAD/C2Dt/DJD+kDCoZ6YgpBPImDIbbwROP?= =?Windows-1252?Q?MQRZLkE5Z9hAqfy3RQr+1ma5xtSd4GnBSvkttFAofT8FsGHhF56qhb7k?= =?Windows-1252?Q?92okY2t9TUSGICyqHLhlHf/asCb4z/6QIANaOXSB7LQid6CKFOddjZvm?= =?Windows-1252?Q?Qyo0KEWc78MSLZCA0V7xdPSt7zdztfmfx2u0dlJras0BjbSCj8d1Oey2?= =?Windows-1252?Q?hn75oxor0GL9/rvQ9IoWsvVDp+RxJ0ps4TBTIXIfBNNF+dUgixWUYXTw?= =?Windows-1252?Q?DhwUQvVBdMbY0nC+c3A3wTB2M59ldDK1U05G+Xm7ck2jLHO2Y5BmTAoe?= =?Windows-1252?Q?dPHnaZ6aOefPHEzxEohM8mx3vZa2MhZI/U5csfdPT5LwRlyIQ3FjrT1d?= =?Windows-1252?Q?nkK8J2M1BF6iAz+IUnnzFrVXxz41aaNdJG7BMIe7OQ0NohWFNS9B4tr5?= =?Windows-1252?Q?qpuGyOeV4p+Q40O3fEkfyPzVxb+FmiIVweCR8z8NYbtpW/QZzLLctkVN?= =?Windows-1252?Q?vicUspLVxNItDvNcRXNia8zO+/B9ojQLKoBQu9f/Spo4zk/JV82D4cTR?= =?Windows-1252?Q?dGiGw02j/0Tk6ZIPJJKVwjo4zXpigaBeZbiMHF0D2n7RieEbftan5kpe?= =?Windows-1252?Q?kG12StWa4oohlfqzvUdTEI8a8Cj0x3Eu4Xkd+ce97m2hubiLsy1L/bQY?= =?Windows-1252?Q?kaysEcoCtKuxEDWotvWFpe7R2IZ9126fOQasoOiAE+LKcvQleBy3HCCr?= =?Windows-1252?Q?7CkjXP6znHVgLxgra8oyehjOnlLlKSM1fmQ1Mjf55S7tn7yxIgpwZTi9?= =?Windows-1252?Q?Lto0WtWI2GPoPFbhOOoD2MBVa+8CE5ncEJQCg/a3n/alshTzQ792k8pT?= =?Windows-1252?Q?BEP8KSx2dYAAN2NDrJ3JPzjG/0eyeqAhdLbCN1FnFX9u0ROEY9PlRBMx?= =?Windows-1252?Q?AIAA43MNaqUHWcpM14Db3OL3Xd20U3JGoEtIneNSzKozfrmuNSi+8Dqh?= =?Windows-1252?Q?BGZkVYDgJTVVtApPGgrNLPln5HCTprHgKfQBEa8/MxCTRo3rT0+eoDlg?= =?Windows-1252?Q?CHYSFkwgXG4PL4Y76y07+Oai7FQhjnQ78TMl6UHs2p86WPV6Lk6TSOs8?= =?Windows-1252?Q?SqsoqUIM/07SO3W4nHsiyO3NJOvbWtH2JC9eW48zMW09j6lIIATblog0?= =?Windows-1252?Q?/TEEwrlJhzTbnfbCkD7CnCas7RFmm2bufDi0Z8MxgpqCdWo/+zZbERU2?= =?Windows-1252?Q?aJt3Q0UjwH/+CuwumZcKZCCfo34Qgg/gICr26odqSYsL13a7vMYsZF61?= =?Windows-1252?Q?7GCEKdxswSV/IPktUayttrGFS+k0pERPkDSamUCWO1Goa1XNvVfNIWaK?= =?Windows-1252?Q?MswoO9k+KH+dYhOrmCwnPNmDfpyx8zhTj+I8JOy7YLOiL1TqTIlYTUuV?= =?Windows-1252?Q?PYvQP8OBDh0ifXLf0/PE6GH693a+Lt1b8LWBcAERebHtXkafVJ2KyN8W?= =?Windows-1252?Q?FcD/ehqH9R0HzWSVybqQU4J9dx6mUMUnxOZS7hHn991vRi5UOZQ=3D?= =?Windows-1252?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR0201MB1779;5:gTnuKXYTGH86Thz8+u07bJgVy4S6rZ7xYMjneI0L4PnsXnVsm5s//LpQwZeiruYXGCBxEOIRZIJv4zZj5X0uP+gA0lEryald3LunJDhItHqAjVc6euQk9kMXm+luFMIaUbsMfcZEsA/u7p9i5N1Xyw==;24:jGR4SqP6hAUiFmMiLouPLNyVC1H5MVBsbgaNyzLlJ3Fy+vXqXOGZM3FHK2QpPxGoqC6Wq0Iwr7nYi5aZp8hjOBuYmvBn6U9x6ZgN4iYbOXg= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: zend.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2016 08:44:48.8421 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0201MB1779 Subject: Re: [PHP-DEV] Re: Reusing main VM stack for generators From: dmitry@zend.com (Dmitry Stogov) On 01/25/2016 11:36 AM, Bob Weinand wrote: >> Am 25.01.2016 um 09:13 schrieb Dmitry Stogov : >>> We basically need a way to properly first fetch the args (beware: func_arg fetches...) before instantiating the call frame, an issue which for example could be solved if we applied my vm_stack_restructuring patch (because it only installs call frames after all args were fetched). >> I thought about that approach, but the amount of changes doesn't worth the result. Doing this only for generators doesn't make a lot of sense. > After all, we still have that 2% performance improvement. And the main VM stack reusage for Generators. > > And I believe the proposed layout is also much more close to the C calling convention and thus more compatible if we ever go the route down to compiling to assembly. > Ultimately it gives us more flexibility as we also could put point the return temporary/cv of some opcodes to the right place, ready to call. > We aren't that far yet with the Optimizer, but I think I see it coming, where we'll benefit more from fixed places. It might be just a few moves less, but function arg passing is very common in PHP, so the benefit will be more significant the more optimizations we apply. > > Remember that small thing removing ZEND_SEND_VAL_SPEC_TMP_TMP_HANDLERs where unnecessary? When we'll be able to know which variables may hold references or which not, we'll suddenly be able to directly write to the function parameter slot in much more cases. > > I still stand by the point that doing it now (which small, but non-negligible improvement), will bring us a bigger improvement later. Many small improvements built around this patch will give us a big one in the end. I put a note about "postponed" idea at https://wiki.php.net/php-7.1-ideas. May be we will return to this later. Thanks. Dmitry. Thanks. Dmitry. > > Thanks, > Bob