Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:83495 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 67653 invoked from network); 22 Feb 2015 22:22:56 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 22 Feb 2015 22:22:56 -0000 Authentication-Results: pb1.pair.com smtp.mail=lester@lsces.co.uk; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=lester@lsces.co.uk; sender-id=unknown Received-SPF: error (pb1.pair.com: domain lsces.co.uk from 217.147.176.214 cause and error) X-PHP-List-Original-Sender: lester@lsces.co.uk X-Host-Fingerprint: 217.147.176.214 mail4-2.serversure.net Linux 2.6 Received: from [217.147.176.214] ([217.147.176.214:41885] helo=mail4.serversure.net) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 81/B8-18531-CB65AE45 for ; Sun, 22 Feb 2015 17:22:54 -0500 Received: (qmail 14547 invoked by uid 89); 22 Feb 2015 22:22:49 -0000 Received: by simscan 1.3.1 ppid: 14537, pid: 14542, t: 0.0681s scanners: attach: 1.3.1 clamav: 0.96/m:52/d:10677 Received: from unknown (HELO ?10.0.0.8?) (lester@rainbowdigitalmedia.org.uk@86.189.147.37) by mail4.serversure.net with ESMTPA; 22 Feb 2015 22:22:49 -0000 Message-ID: <54EA56B8.5010301@lsces.co.uk> Date: Sun, 22 Feb 2015 22:22:48 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-Version: 1.0 To: internals@lists.php.net References: <2e4694f9805ee81ea0b2c79eab06c2d6@mail.gmail.com> In-Reply-To: <2e4694f9805ee81ea0b2c79eab06c2d6@mail.gmail.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] JIT (was RE: [PHP-DEV] Coercive Scalar Type Hints RFC) From: lester@lsces.co.uk (Lester Caine) On 22/02/15 18:37, Zeev Suraski wrote: > Variant* calc(Variant& val1, Variant& val2) { > if(val1.isInt() ) { > // type checking > if (!val1.coerceToInt()) { > throw new RuntimeError() > } > If (!val2.coerceToInt()) { > throw new RuntimeError(); > } > > // function body begins here > int result = Variant(val1.intValue() + val2.intValue()); > return result; > } A more practical example would be to replace coerceToInt() with inRange() which includes an int check/'coerce' as part of the range check, and produce a number of errors based on the result. -- Lester Caine - G8HFL ----------------------------- Contact - http://lsces.co.uk/wiki/?page=contact L.S.Caine Electronic Services - http://lsces.co.uk EnquirySolve - http://enquirysolve.com/ Model Engineers Digital Workshop - http://medw.co.uk Rainbow Digital Media - http://rainbowdigitalmedia.co.uk