Index: src/ia32/codegen-ia32.cc |
=================================================================== |
--- src/ia32/codegen-ia32.cc (revision 4029) |
+++ src/ia32/codegen-ia32.cc (working copy) |
@@ -10714,6 +10714,7 @@ |
Label make_two_character_string, make_flat_ascii_string; |
GenerateTwoCharacterSymbolTableProbe(masm, ebx, ecx, eax, edx, edi, |
&make_two_character_string); |
+ __ IncrementCounter(&Counters::string_add_native, 1); |
__ ret(2 * kPointerSize); |
__ bind(&make_two_character_string); |
@@ -10994,10 +10995,7 @@ |
// Calculate capacity mask from the symbol table capacity. |
Register mask = scratch2; |
- static const int kCapacityOffset = |
- FixedArray::kHeaderSize + |
- SymbolTable::kCapacityIndex * kPointerSize; |
- __ mov(mask, FieldOperand(symbol_table, kCapacityOffset)); |
+ __ mov(mask, FieldOperand(symbol_table, SymbolTable::kCapacityOffset)); |
__ SmiUntag(mask); |
__ sub(Operand(mask), Immediate(1)); |
@@ -11022,16 +11020,12 @@ |
// Load the entry from the symble table. |
Register candidate = scratch; // Scratch register contains candidate. |
- ASSERT_EQ(1, SymbolTableShape::kEntrySize); |
- static const int kFirstElementOffset = |
- FixedArray::kHeaderSize + |
- SymbolTable::kPrefixStartIndex * kPointerSize + |
- SymbolTableShape::kPrefixSize * kPointerSize; |
+ ASSERT_EQ(1, SymbolTable::kEntrySize); |
__ mov(candidate, |
FieldOperand(symbol_table, |
scratch, |
times_pointer_size, |
- kFirstElementOffset)); |
+ SymbolTable::kElementsStartOffset)); |
// If entry is undefined no string with this hash can be found. |
__ cmp(candidate, Factory::undefined_value()); |
@@ -11185,7 +11179,7 @@ |
Label make_two_character_string; |
GenerateTwoCharacterSymbolTableProbe(masm, ebx, ecx, eax, edx, edi, |
&make_two_character_string); |
- __ ret(2 * kPointerSize); |
+ __ ret(3 * kPointerSize); |
__ bind(&make_two_character_string); |
// Setup registers for allocating the two character string. |