On 3/14/17, 10:42 PM, "Greg Dove" <greg.d...@gmail.com> wrote:

>On Wed, Mar 15, 2017 at 6:33 PM, Alex Harui <aha...@adobe.com> wrote:
>
>> Here's a better link to the old thread.  Looks like I did mess around
>>with
>> parseInt earlier.
>>
>> https://s.apache.org/rHq2
>>
>>
>> The goal is to match what AS does and get the performance benefit you
>> measured and maybe prevent browsers from doing something strange.
>>
>> Hopefully it won't require sniffing the first parameter ourselves.
>>
>> Thanks,
>> -Alex
>>
>>
>>
>Thanks for that link, the original was not working for me.
>In theory it should simply take the string and deduce the radix internally
>depending on whether the string has '0x' at the start or not. That's why
>specifying the radix should always be faster.
>But we cannot assume it is 10 for all strings in a compiler generated
>version with the (apparently) mandatory second param for GCL.
>
>So it is a bit of challenge if we want to keep the AS behaviour, and if
>the
>GCL lib does not like having the second arg missing.
>Basically for perfomance you need to specify the second param in the
>native
>version and that obviously will always be the better option.
>I think the compiler generated version will need to do some sniffing
>unfortunately, (if we are to keep behaviour) and will make that
>performance
>difference even more true, but will give it a bit more thought.
>.

I don't think there is any code at runtime that requires the second
argument.  We patch the files in the JS.swc so the second argument is
optional.  AFAIK, in the actual browser, the second parameter is optional.
 IMO, what you see in the original externs is Google's policy for their
developers, not a runtime API spec.  But you can see in the old thread
that MDN says you really "should" set a second parameter.

Somehow, that parseInt patch didn't work for Justin and you.  So that's
the first problem.  Your flex-typedefs/js build should generate a
parseInt.as with an optional second argument because the es3.js is patched
to have an optional second argument.

Then we can discuss whether the compiler should set 10 or 0 or trust the
modern browsers to not think Octal or be unpredictable.  Or make some
other tradeoff like saying we're going to set 10 and you can't assume
auto-conversion in FlexJS.  Either way, we should clean up where we are
using parseInt(, 10) in the FlexJS framework code.

If you have time, it might be worth doing some tests in Flash and browser
to see if you can set 10 in Flash and it will still sniff out hex, and
whether using 0 works the same in both AS and JS.  We have set a browser
baseline of IE9 so we don't have to worry about really old browsers.

Thanks,
-Alex

Reply via email to