On Wed, Apr 15, 2020 at 5:48 PM Alex Kodat <alexko...@gmail.com> wrote:

> Ah yes, of course. So a teensy bit better to set
> v8_enable_31bit_smis_on_64bit_arch = false if
> v8_enable_pointer_compression == false. This would suggest that the default
> for v8_enable_31bit_smis_on_64bit_arch (true) is ever so slightly
> suboptimal (since it's irrelevant if v8_enable_pointer_compression ==
> true). But as you say, "you might not even notice it". In fact, I'd be very
> surprised if anyone does as by far the bulk of integers in applications
> will not be in the 1G+ range. As an aside, I'm awed by V8's integer
> performance which some simple tests suggest is only 2-4 times slower than
> optimized gcc or clang C++ code for heads down integer arithmetic!
>

Depends on what you're doing. If you're doing e.g. crypto you're likely
going to end up with numbers that require the full 32bit; but not more if
you use bit-operations since they are defined to be 32bit in JS. You can
get around it by explicitly masking off the upper bits to stay within
31-bit range, but you need to be aware of this. Otherwise we'll end up
doing a lot of computation using doubles, possibly requiring heap
allocation. You already need to be aware that you should use bit-operations
to stay within 32 bits too though :-)


>
>
> Thanks!
>
> On Wednesday, April 15, 2020 at 10:14:03 AM UTC-5, Jakob Kummerow wrote:
>>
>> Is there any reason to use V8_31BIT_SMIS_ON_64BIT_ARCH or not when not
>>> using compressed pointers?
>>
>>
>> Smis are faster than any alternative, so 32-bit Smis potentially allow
>> more code to benefit from the Smi advantage than 31-bit Smis. We separated
>> the build flags mostly to be able to track the impact of moving to 31-bit
>> Smis separately from the impact of un/compressing pointers on the fly. If
>> you don't compress pointers, you're better served by 32-bit Smis. The
>> difference should (in most cases) be small though, you might not even
>> notice it.
>>
>
>> And just to reiterate: pointer compression requires 31-bit Smis, you
>> can't have V8_COMPRESS_POINTERS without V8_31BIT_SMIS_ON_64BIT_ARCH.
>>
>>
>> On Tue, Apr 14, 2020 at 5:56 PM Alex Kodat <alex...@gmail.com> wrote:
>>
>>> It appears that the default for v8_enable_31bit_smis_on_64bit_arch has
>>> changed from false to true somewhere between 7.7 (our last build for our
>>> code) and 8.1 (what we're trying to upgrade to). It appears that if
>>> V8_COMPRESS_POINTERS is defined, the setting of V8_31BIT_SMIS_ON_64BIT_ARCH
>>> doesn't matter because kApiTaggedSize is set to kApiInt32Size in
>>> v8-internal.h when V8_COMPRESS_POINTERS is defined.
>>>
>>> But, we decided we didn't want compressed pointers so we built V8
>>> with v8_enable_pointer_compression set to false. But, because we didn't
>>> realize the default for v8_enable_31bit_smis_on_64bit_arch had changed to
>>> true, when we compiled our code with V8_COMPRESS_POINTERS not defined, bad
>>> things happened because V8_31BIT_SMIS_ON_64BIT_ARCH was defined for the V8
>>> build but not for our compile and when V8_COMPRESS_POINTERS is not defined
>>> this difference causes problems.
>>>
>>> So this is mostly just a heads up to anyone building with
>>> v8_enable_pointer_compression set to false. You either better also set
>>> v8_enable_31bit_smis_on_64bit_arch to false in your V8 build or make sure
>>> you define V8_31BIT_SMIS_ON_64BIT_ARCH in your own compiles.
>>>
>>> But then also, one question. Is there any reason to use
>>> V8_31BIT_SMIS_ON_64BIT_ARCH or not when not using compressed pointers? It
>>> seems that the difference is largely aesthetic -- what do you like your
>>> SMIs to look like when looking at storage? So we just went with the new
>>> default of V8_31BIT_SMIS_ON_64BIT_ARCH assuming the default must be the
>>> better approach. ;-) Opinions?
>>>
>>> Thanks
>>>
>>> --
>>>
>> --
> --
> v8-users mailing list
> v8-users@googlegroups.com
> http://groups.google.com/group/v8-users
> ---
> You received this message because you are subscribed to the Google Groups
> "v8-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to v8-users+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/v8-users/3ed94732-25a0-4978-9374-54de37011809%40googlegroups.com
> <https://groups.google.com/d/msgid/v8-users/3ed94732-25a0-4978-9374-54de37011809%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
-- 
v8-users mailing list
v8-users@googlegroups.com
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/v8-users/CANS-YRr0TBEXDbA05iSz7xwY2W2HL3sKmMr%2B6V%3Diwt58tfUO-A%40mail.gmail.com.

Reply via email to