Please update comment in include/v8.h to sya that GetIdentityHash() will
never return 0.
/Søren

On Wed, Apr 29, 2009 at 03:50, <asarg...@chromium.org> wrote:

>
> Reviewers: iposva,
>
> Description:
> Make Object::GetIdentityHash() never return 0.
>
> This is convenient when using identity hashes in data structures that
> want to reserve 0 as a sentinel value, such as WebKit's WTF::HashMap.
>
>
> Please review this at http://codereview.chromium.org/100147
>
> SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/
>
> Affected files:
>   M     src/api.cc
>
>
> Index: src/api.cc
> ===================================================================
> --- src/api.cc  (revision 1810)
> +++ src/api.cc  (working copy)
> @@ -2072,7 +2072,12 @@
>    if (hash->IsSmi()) {
>      hash_value = i::Smi::cast(*hash)->value();
>    } else {
> -    hash_value = random() & i::Smi::kMaxValue;  // Limit range to fit a
> smi.
> +    int attempts = 0;
> +    do {
> +      hash_value = random() & i::Smi::kMaxValue;  // Limit range to fit a
> smi.
> +      attempts++;
> +    } while (hash_value == 0 && attempts < 30);
> +    hash_value = hash_value != 0 ? hash_value : 1; // never return 0
>      i::SetProperty(hidden_props,
>                     hash_symbol,
>                     i::Handle<i::Object>(i::Smi::FromInt(hash_value)),
>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to