Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #24765

Re: "i = i|0"

From James Kuyper <jameskuyper@verizon.net>
Newsgroups comp.lang.javascript, comp.lang.c
Subject Re: "i = i|0"
Date 2014-06-12 08:19 -0400
Organization A noiseless patient Spider
Message-ID <lnc5s2$df8$1@dont-email.me> (permalink)
References (1 earlier) <44f393c9-8b85-4da8-8618-6b11dd3954b2@googlegroups.com> <or-0-20140611230027@ram.dialup.fu-berlin.de> <slrn3vfslphhbe.gfj.ike@iceland.freeshell.org> <5398CC30.9020706@verizon.net> <2078529.Slc7CH7YZo@PointedEars.de>

Cross-posted to 2 groups.

Show all headers | View raw


On 06/11/2014 06:56 PM, Thomas 'PointedEars' Lahn wrote:
> [F'up2 comp.lang.javascript]
> 
> James Kuyper wrote:
> 
>> On 06/11/2014 05:09 PM, Ike Naar wrote:
>>> On 2014-06-11, Stefan Ram <ram@zedat.fu-berlin.de> wrote:
>>>>   When they then call the function with non-integer arguments
>>>>   its their fault. (Or they can write a |0 wrapper instead
>>>>   of requiring each and every function to do |0 and thereby
>>>>   possibly slowing down execution and enlarging code size.)
>>>
>>> With a decent optimizing compiler, do you think that |0 would
>>> slow down execution or enlarge code size?
>>
>> I'm no JS experts,
> 
> That much is obvious.
> 
>> but so far I haven't seen any responses from those who are,
> 
> Usenet is not a real-time communications medium.  Besides, what one sees may 
> very well be different from what someone else sees, due to different feeds 
> (different speeds and Paths), scorefiles, killfiles, and so on.

Yes, know all of that. But I was getting impatient for someone to reply.

>> so I'll throw in my guesses.
> 
> The reference material is freely available; there is no need to guess.

My comments were not pure guesses. I searched for reference materials,
found one (I didn't take notes, so I'm not sure which one) that was
identified as an official standard (though possibly not the relevant
one). It defined the behavior of bit-wise or in terms of calls to
ToInt32() for each operand.

>  If 
> you are not sure, just refrain from posting.  Nobody is being helped by wild 
> guesses from people who have a smattering; you do not have to save the world 
> alone.
>  
>> It seems reasonable to me that it would - in javascript, |0 doesn't just
> 
> There is no javascript. [0]

That comment requires explanation. What you meant by it may be perfectly
obvious to those who monitor comp.lang.javascript, but for this
particular C expert, the very existence of comp.lang.javascript seems to
contradict the most obvious meaning for that comment.

The [0] seems to be intended as a cross-reference, but I couldn't locate it.

>> cause the integer value to be unchanged (something a smart compiler
>> could drop) - it also (and first) causes conversion to a 32-bit integer
>> type, if necessary.
> 
> No, it causes conversion to a 64-bit floating-point value that represents a 
> 32-bit integer value.

If I'd bothered to look up what ToInt32() did, I would have noticed, but
the name seemed perfectly clear, so I didn't bother. It would never have
occurred to me that ToInt32() might have such behavior. From a C
perspective, that's a mind-bogglingly inefficient way of doing things,
though I suppose it makes sense from a javascript perspective (Sorry - I
couldn't figure out how to write that sentence without referring to the
thing you've said is non-existent).

That doesn't change my main point: the conversion is still required - it
can't be optimized away. Or am I wrong about that, too?
-- 
James Kuyper

Back to comp.lang.javascript | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Re: "i = i|0" Ike Naar <ike@iceland.freeshell.org> - 2014-06-11 21:09 +0000
  Re: "i = i|0" James Kuyper <jameskuyper@verizon.net> - 2014-06-11 17:37 -0400
    Re: "i = i|0" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-06-12 00:56 +0200
      Re: "i = i|0" raltbos@xs4all.nl (Richard Bos) - 2014-06-12 11:41 +0000
        Re: "i = i|0" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-06-12 14:28 +0200
      Re: "i = i|0" James Kuyper <jameskuyper@verizon.net> - 2014-06-12 08:19 -0400
        Re: "i = i|0" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-06-12 14:45 +0200
          Re: "i = i|0" James Kuyper <jameskuyper@verizon.net> - 2014-06-12 09:25 -0400
            Re: "i = i|0" raltbos@xs4all.nl (Richard Bos) - 2014-06-12 14:50 +0000
              Re: "i = i|0" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-06-12 16:55 +0200
                Re: "i = i|0" Keith Thompson <kst-u@mib.org> - 2014-06-12 11:28 -0700
                Re: "i = i|0" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-06-12 20:46 +0200
                Re: "i = i|0" Christoph Michael Becker <cmbecker69@arcor.de> - 2014-06-12 20:58 +0200
                Re: "i = i|0" Kaz Kylheku <kaz@kylheku.com> - 2014-06-12 19:20 +0000
                Re: "i = i|0" Christoph Michael Becker <cmbecker69@arcor.de> - 2014-06-12 22:13 +0200
                Re: "i = i|0" Kaz Kylheku <kaz@kylheku.com> - 2014-06-12 21:15 +0000
                Re: "i = i|0" Christoph Michael Becker <cmbecker69@arcor.de> - 2014-06-12 23:59 +0200
                Re: "i = i|0" Christoph Michael Becker <cmbecker69@arcor.de> - 2014-06-13 01:10 +0200
                Re: "i = i|0" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-06-13 01:52 +0200
                ECMAScript standards (was: "i = i|0") Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-06-15 12:53 +0200
                Re: "i = i|0" Stephen Sprunk <stephen@sprunk.org> - 2014-06-12 17:11 -0500
                Re: "i = i|0" Denis McMahon <denismfmcmahon@gmail.com> - 2014-06-12 22:40 +0000
                Re: "i = i|0" glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-06-12 22:44 +0000
                Re: "i = i|0" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-06-13 01:16 +0200
                Re: "i = i|0" raltbos@xs4all.nl (Richard Bos) - 2014-06-16 12:55 +0000
                Re: "i = i|0" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-06-16 22:44 +0200
                Re: "i = i|0" Thomas Richter <thor@math.tu-berlin.de> - 2014-06-13 19:16 +0200
                Re: "i = i|0" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-06-13 19:21 +0200
                Re: "i = i|0" Tim Streater <timstreater@greenbee.net> - 2014-06-13 18:24 +0100
                Re: "i = i|0" Kaz Kylheku <kaz@kylheku.com> - 2014-06-13 21:25 +0000
            Re: "i = i|0" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-06-12 17:13 +0200
              Re: "i = i|0" raltbos@xs4all.nl (Richard Bos) - 2014-06-12 15:20 +0000
                Re: "i = i|0" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-06-12 17:32 +0200
                Re: "i = i|0" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-06-17 12:30 +0200
              Re: "i = i|0" James Kuyper <jameskuyper@verizon.net> - 2014-06-12 12:17 -0400
                Re: "i = i|0" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-06-12 20:01 +0200
                Re: "i = i|0" James Kuyper <jameskuyper@verizon.net> - 2014-06-12 16:13 -0400
                Re: "i = i|0" glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-06-12 20:44 +0000
                Re: "i = i|0" Kaz Kylheku <kaz@kylheku.com> - 2014-06-12 20:59 +0000
                Re: "i = i|0" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-06-13 01:22 +0200
                Re: "i = i|0" Martin Shobe <martin.shobe@yahoo.com> - 2014-06-12 19:48 -0500
                Re: "i = i|0" "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2014-06-12 18:32 -0700
                Re: "i = i|0" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-06-13 12:12 +0200
                Re: "i = i|0" John Harris <niam@jghnorth.org.uk.invalid> - 2014-06-13 10:16 +0100
                Re: "i = i|0" Tim Streater <timstreater@greenbee.net> - 2014-06-13 11:44 +0100
          Re: "i = i|0" "BartC" <bc@freeuk.com> - 2014-06-12 15:06 +0100
            Re: "i = i|0" Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-06-12 16:54 +0200

csiph-web