Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:90904 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 93583 invoked from network); 25 Jan 2016 08:13:42 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 25 Jan 2016 08:13:42 -0000 Authentication-Results: pb1.pair.com smtp.mail=dmitry@zend.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=dmitry@zend.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain zend.com designates 157.56.111.141 as permitted sender) X-PHP-List-Original-Sender: dmitry@zend.com X-Host-Fingerprint: 157.56.111.141 mail-bn1bon0141.outbound.protection.outlook.com Received: from [157.56.111.141] ([157.56.111.141:53878] helo=na01-bn1-obe.outbound.protection.outlook.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id BF/20-26079-339D5A65 for ; Mon, 25 Jan 2016 03:13:40 -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=kTr7hbOn7bRGwkv6Lz1eMRccTrIZqwK3NC2KzoyCx/c=; b=cRLaNFxzBCmLfgywwdATj4BdbEzjfaBNPEnpWQrTQHLsk6AH6tJo0JP/GdvzJMLNj9ivLCL1acBBlUD4s5oBG42ASkRnw6QmGN859C0J7p+OJ5Zu148oaCk8BDDqxTtVFUXNUDctpACwTHTkUJ/vuY6K4PXDRxwxX0V/ni2aJ7Q= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dmitry@zend.com; Received: from tpl2.home (92.62.57.172) by SN1PR0201MB1791.namprd02.prod.outlook.com (10.162.228.21) with Microsoft SMTP Server (TLS) id 15.1.365.19; Mon, 25 Jan 2016 08:13:33 +0000 To: Bob Weinand References: CC: Nikita Popov , PHP internals list Message-ID: <56A5D921.7090800@zend.com> Date: Mon, 25 Jan 2016 11:13:21 +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: multipart/alternative; boundary="------------050700050607030207090109" X-Originating-IP: [92.62.57.172] X-ClientProxiedBy: DB4PR01CA0041.eurprd01.prod.exchangelabs.com (10.242.152.31) To SN1PR0201MB1791.namprd02.prod.outlook.com (25.162.228.21) X-Microsoft-Exchange-Diagnostics: 1;SN1PR0201MB1791;2:NXSVdKqErGlvl7dKd0it7jxXc25SVjToFLBsoTzztk4ewYCcjD3gxe2Kv22MmWIWCKMqZ0eyxMxyguzpPXFTzJf3UBDzDUFeJ70rqSYvzpgMTzi6Wvj4PsAJ47vyEBcJCjECSDc9ZZCw5rRt3GHl2A==;3:CuiJNWuL4qlJoenklfhoyQVE7bi6PHl/JopCVl5t4CqOZi7fLG1f6Epf9Zt2iAgovKniN+iuilj3ba93CtXkvHLZMZGsOoHsxEqFBrtch+JFIQpCMnN07AYRvkG6pvOJ;25:Q13HZBKCd5QSbjQeg0FTSyZfp0cnPK1rxg1xuIT/tM3bKwK7kOkIpbtpkYHDpAQD2EWGg5UeA/N4v17FQo0lwnPelu1yzdV/qApjGEY5mhoWfvcoVc96XfasKahI+moJY3Q+x5qA5cApYcODJ8gVNkOj0CBXSz919DKeLMv7Kp9Ed+z3sNy1bBSnc6lDXuU5LDIf4auQ9pITQMjl+nb+wRm7YYDMj7QsP4Pmbjgq9zvC1MUzZcwKDTXMmFhLNl0I X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR0201MB1791; X-MS-Office365-Filtering-Correlation-Id: 8c8141b5-6cec-4d4b-0313-08d3255f6b3c X-Microsoft-Exchange-Diagnostics: 1;SN1PR0201MB1791;20:aYPGxViIZHosgW48O6xPBa1/oSXQozvNRyUqm0nLwSogG9R983YTEzSwxbmD4vW35ryV0whwnxsYK3krVZ2tssLr8pX+F7Suz9mSpv5WtuRooxSD5VzwkNhuWWyQCmzr7twvr3pm1x1FTq10EG06PMTVLZ6rrap49pg1/uidqwXiojQuIZZluiATcVd1wdFfhl3nDsQeB9X57HUZGJnSZK0boEKGZ0BtajxcuFRzLyXbJZieJXrfpQELCjl8j0rskHE8mnB+SoBhuVGTZwzv85dQNncpuoPZDLIjaNiyHRI15NE3ej004Z/+ixShYFR9mJ8cfBZAvYmlEfK/kZ+CkcpBWwdXgT6F9JqYeRoi1fT+jCH6nODF5a8ASGELzAmf0MVPuI6Gv6JdRmz/HwPYjOW3czeTJwzS4vizQQIsG4SrOQ2N6ImMwRQRRGQZUqTMZvoa0kvLjRhEiV1IM6rlpI6W+XcExLY/s6hZPWmbJoL68DhlT4NTjnrhdnO1Sk/d;4:JKIt+LHsxsQxFZoAU/QLTWaAYmEKqd6oFABcSKykknxeUoC9jAi+vBTgAXyT4bJU/lYBNlt5gyYA6RVVcCsy8GCMorFisk9aWoM1V0P/v3QE+AiiqvtfFa+HfXkrwNX3zG6pjMcptAVbgo28Swbzvi2lxWJMG8ZqkPQuTtm4CaUqcfUu317wHgQHJo7JtlnzOOhph5Ky2z624Btw4kV9u+JyDcxsOEL21eecXcXvcqG0UVp3Qn1OAVhQVWSxtSgaSlp7FjKOh8BOsxt+7u6frCinyJkSrfDi2SUCvVOFfrCLOjyqBSrpjkpFuRGX2KFodW85WYqS7YKDDibc/xhvFk0GicjKIkViHXOQnqIrXZ4955iJkBg5VuZ58Xp/DVgiwiGtpc+StEzFW31lpq5kGTI/ZU5J7c7OlzihRwZxOiL21MeE8s8hErlFUF594J1R X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(257391296339839); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(8121501046)(5005006)(3002001)(10201501046);SRVR:SN1PR0201MB1791;BCL:0;PCL:0;RULEID:;SRVR:SN1PR0201MB1791; X-Forefront-PRVS: 083289FD26 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(189002)(164054003)(24454002)(199003)(377454003)(479174004)(4326007)(83506001)(80316001)(2906002)(19580405001)(69596002)(87976001)(19580395003)(42186005)(512874002)(122386002)(86362001)(40100003)(92566002)(64126003)(36756003)(84326002)(5004730100002)(21086003)(59896002)(19617315012)(6116002)(1096002)(110136002)(5001960100002)(15975445007)(77096005)(2950100001)(54356999)(3846002)(81156007)(33656002)(97736004)(66066001)(16236675004)(4001350100001)(65806001)(65956001)(189998001)(101416001)(87266999)(65816999)(586003)(106356001)(76176999)(5008740100001)(50986999)(105586002);DIR:OUT;SFP:1102;SCL:1;SRVR:SN1PR0201MB1791;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: =?us-ascii?Q?1;SN1PR0201MB1791;23:WN/Cl30bjs//RZDHI6e436+V6vADH8GvCZIeyQ4?= =?us-ascii?Q?uORQf1JcwuKdhGWjDyC46LQIwD2CBatETzvjJl76mROScWoZ7VkT9CLWiXF+?= =?us-ascii?Q?fpNW4OgzRZY6kZU0soh0tG8VSiVQ9/FPESqoXVrWu+7JPgAT/cfTZ4/DBdcG?= =?us-ascii?Q?hLduqu8rrQeEkqTpczjs16nWVid34xgSUiVYXTQtwZrD42JdZ4a+lLQpshpX?= =?us-ascii?Q?2THHmJZ3FEikZPx0OXBcsFrUGuBz8IaVWuv8MGVL1IxBra+DE1WYP6hZf5u9?= =?us-ascii?Q?wiIwKWNF3SjFQKqEb4KZmy1CnvoBRFUTSabIBudwjhCDTR/Vppf5GMxhLCSY?= =?us-ascii?Q?MfrFgCToQoyA8qQ+x8sS67NppKmO8UkagvztDA0RwNkFZa2bve8obrF4vI3m?= =?us-ascii?Q?i75dL8TntpKhrDblegn+XAoN3nbYiBcaGX7ujXz45ojvhKxp0sf1vy7Zrtwt?= =?us-ascii?Q?7wDoz3JtIu9vVcNxUollREqstg9GbBiMmhN6BUtGaSwdCaUwFFboAVdv5CK8?= =?us-ascii?Q?mNo/7RSN6NyxDDJtvxxCIsDyiFU0hU8C0P48s4OejagElcrKG3+9Vk+JNvn5?= =?us-ascii?Q?uZ0O36+r6a9mKk7309i0b/Q2/AIhAjV4KnJ7boN/6DLIbE2Pi5yTaRX8OQdt?= =?us-ascii?Q?e6N9whRYaZdpErMNb0Cz26T1YxzX22tJhqjX+NWUUSgRh6hzcNuemP206rnH?= =?us-ascii?Q?Kz1Z6ul5v2y+7HtegMNcVjhjmSINTxCk972cZz+4WfBYfHpxeBEHpCguo4Yo?= =?us-ascii?Q?68sn6sWKE+UOt2Zaq6/nwxxb9hyXn9ErTO4RkuOQwj/Bv35HV4SD0IEOIDSz?= =?us-ascii?Q?br3hpHCcjPzxfhcp7yM5YnacPidgHXXEk3Va9dsXspUgjE9mygHLDalvoAOr?= =?us-ascii?Q?0Nsmw+4XE7hbAozeqxwPQ9xoaHysQZuSxEp0tWpLKced5t9FG+w+05GKgKTf?= =?us-ascii?Q?Tw51IzKKdoH1beIq615u42ZjMCU/jjLCPKy8TKprFBJtAR7s0rXm+X2aMkfI?= =?us-ascii?Q?ZXZZQATfar0JtcrQcl0TQJh/jxu5jTWGo54r5Y3NTQypSm1vd8ZzyxLQW1z7?= =?us-ascii?Q?hJIP8qVz3u9evaamNzFFFIw7H8zfZBlq2l5eRW5HDyxExNAq8iucDBWErTrh?= =?us-ascii?Q?sMtP6pOrdxAnZtPqtqUtgJEMfO3DtZku8UAfJyQ4LozpGnX4INfQ5xHJwoNs?= =?us-ascii?Q?5iZO0P72wmMBgARYiVCzS9g+LKWMstEdTZtqJYMh7wV6R8TEMUeGdUml8GKH?= =?us-ascii?Q?TuxHDdxpzJ1hxZyjIyyWz0mUcVV3koG3A5KA+d8VuTbQuFklicpdBPPESzgn?= =?us-ascii?Q?98ebEkMqotsZZY+HPp5wD5C+ffUBgJaXUZR8CWQIllKL3VW3xlQGYn7NCN20?= =?us-ascii?Q?24WW6yOMN6HcDdry1RNR2mbb/stCtHWoZ8gofI0e/s2nPufxV?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR0201MB1791;5:9zX1k4yP4+E5v7kPCVP5kTALxSS9wOTk1gqPRpVHh321zS7mclAJ0ZcqjsyvQh1SHhl5iw0q8pY2ZV+azgxvVGgy/u2JSS8zC+kYhAsweZYSUaAGPrX0f/9pc7ZFuOcnqQGIrRZ/5rLtvvX+gvgL4g==;24:g/3x9ZK4kBQvxDJEMpJvN5xslOponuYnPn9GYmnFQMjFk56ZH0L5K7eSaxEd+uhlnTICO6c9wVQnQ1nwt41Dc+EgjzPzYHNdkdPzwU3yhps= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: zend.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2016 08:13:33.0743 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR0201MB1791 Subject: Re: Reusing main VM stack for generators From: dmitry@zend.com (Dmitry Stogov) --------------050700050607030207090109 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit On 01/22/2016 10:29 PM, Bob Weinand wrote: >> Am 22.01.2016 um 15:43 schrieb Dmitry Stogov > >: >> >> >> Hi, >> >> Could you please, take a look into the PoC. >> It's incomplete, but may be you get ideas how to fix this. >> >> https://gist.github.com/dstogov/285024375d15cacf2a9b >> >> Few tests are failed, because YIELD may be used as expression in >> nested calls (between INIT_FCALL/DO_FCALL), and the caller function >> restores EG(vm_stack_top), loosing and overwriting that active frame. >> >> > function gen() { >> var_dump(yield 1); >> } >> >> for ($gen = gen(); $gen->valid(); $gen->send(0)) { >> var_dump($gen->current()); >> } >> ?> >> >> Thanks. Dmitry. > > Hey, that's pretty similar to what I did > https://github.com/php/php-src/commit/0f0471a9893230918084798d4e35db37d7b4519d > in > that old patch, which you rejected because we hadn't found any > solution for that issue with yield inside calls. yes, this is similar. > > 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. > > I believe this patch won't work without significant refactoring (like > vm_stack_refactoring branch) … so, either we bite the bullet and look > at that patch again, or we can forget this idea too. most probably, you are right. Thanks. Dmitry. > > Thanks, > Bob --------------050700050607030207090109--