From 4fdec07bd81a604762218a8e9d0649fb5cef7b6c Mon Sep 17 00:00:00 2001 From: Fedor Indutny Date: Thu, 19 Jan 2012 21:44:59 +0600 Subject: [PATCH] Land number collision fix for v8 3.6 by Erik Corry Update with fixes from: http://codereview.chromium.org/9190001/ --- deps/v8/src/ia32/code-stubs-ia32.cc | 1 + deps/v8/src/objects.h | 8 ++------ 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/deps/v8/src/ia32/code-stubs-ia32.cc b/deps/v8/src/ia32/code-stubs-ia32.cc index dd0b8e8b65b..2bf486d3a6f 100644 --- a/deps/v8/src/ia32/code-stubs-ia32.cc +++ b/deps/v8/src/ia32/code-stubs-ia32.cc @@ -5614,6 +5614,7 @@ void StringHelper::GenerateHashInit(MacroAssembler* masm, __ mov(scratch, Operand::StaticArray(scratch, times_pointer_size, roots_address)); + __ SmiUntag(scratch); __ add(scratch, Operand(character)); __ mov(hash, scratch); __ shl(scratch, 10); diff --git a/deps/v8/src/objects.h b/deps/v8/src/objects.h index 6a82a908120..be35401d037 100644 --- a/deps/v8/src/objects.h +++ b/deps/v8/src/objects.h @@ -2534,9 +2534,7 @@ class HashTable: public FixedArray { // Wrapper methods inline uint32_t Hash(Key key) { if (Shape::UsesSeed) { - // I'm using map()->heap() to skip is_safe_to_read_maps assertion. - // That was done, because NumberDictionary is used inside GC. - return Shape::SeededHash(key, map()->heap()->HashSeed()); + return Shape::SeededHash(key, GetHeap()->HashSeed()); } else { return Shape::Hash(key); } @@ -2544,9 +2542,7 @@ class HashTable: public FixedArray { inline uint32_t HashForObject(Key key, Object* object) { if (Shape::UsesSeed) { - // I'm using map()->heap() to skip is_safe_to_read_maps assertion. - // That was done, because NumberDictionary is used inside GC. - return Shape::SeededHashForObject(key, map()->heap()->HashSeed(), object); + return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object); } else { return Shape::HashForObject(key, object); }