Index: src/x64/code-stubs-x64.cc |
diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc |
index 095113c40da56f397fbecbdc8f8b6d261ee38295..c1d26cb462c6f51990294b021bbfedde310dd08b 100644 |
--- a/src/x64/code-stubs-x64.cc |
+++ b/src/x64/code-stubs-x64.cc |
@@ -2382,7 +2382,7 @@ void ArrayLengthStub::Generate(MacroAssembler* masm) { |
// -- rdx : receiver |
// -- rsp[0] : return address |
// ----------------------------------- |
- __ Cmp(rax, masm->isolate()->factory()->length_symbol()); |
+ __ Cmp(rax, masm->isolate()->factory()->length_string()); |
receiver = rdx; |
} else { |
ASSERT(kind() == Code::LOAD_IC); |
@@ -2409,7 +2409,7 @@ void FunctionPrototypeStub::Generate(MacroAssembler* masm) { |
// -- rdx : receiver |
// -- rsp[0] : return address |
// ----------------------------------- |
- __ Cmp(rax, masm->isolate()->factory()->prototype_symbol()); |
+ __ Cmp(rax, masm->isolate()->factory()->prototype_string()); |
receiver = rdx; |
} else { |
ASSERT(kind() == Code::LOAD_IC); |
@@ -2436,7 +2436,7 @@ void StringLengthStub::Generate(MacroAssembler* masm) { |
// -- rdx : receiver |
// -- rsp[0] : return address |
// ----------------------------------- |
- __ Cmp(rax, masm->isolate()->factory()->length_symbol()); |
+ __ Cmp(rax, masm->isolate()->factory()->length_string()); |
receiver = rdx; |
} else { |
ASSERT(kind() == Code::LOAD_IC); |
@@ -2474,7 +2474,7 @@ void StoreArrayLengthStub::Generate(MacroAssembler* masm) { |
Register value = rax; |
Register scratch = rbx; |
if (kind() == Code::KEYED_STORE_IC) { |
- __ Cmp(rcx, masm->isolate()->factory()->length_symbol()); |
+ __ Cmp(rcx, masm->isolate()->factory()->length_string()); |
} |
// Check that the receiver isn't a smi. |
@@ -3077,7 +3077,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) { |
// String is a cons string, check whether it is flat. |
__ bind(&cons_string); |
__ CompareRoot(FieldOperand(rdi, ConsString::kSecondOffset), |
- Heap::kEmptyStringRootIndex); |
+ Heap::kempty_stringRootIndex); |
__ j(not_equal, &runtime); |
__ movq(rdi, FieldOperand(rdi, ConsString::kFirstOffset)); |
// rdi: first part of cons string or parent of sliced string. |
@@ -3576,24 +3576,24 @@ static void CheckInputType(MacroAssembler* masm, |
__ CompareMap(input, masm->isolate()->factory()->heap_number_map(), NULL); |
__ j(not_equal, fail); |
} |
- // We could be strict about symbol/string here, but as long as |
+ // We could be strict about internalized/non-internalized here, but as long as |
// hydrogen doesn't care, the stub doesn't have to care either. |
__ bind(&ok); |
} |
-static void BranchIfNonSymbol(MacroAssembler* masm, |
- Label* label, |
- Register object, |
- Register scratch) { |
+static void BranchIfNotInternalizedString(MacroAssembler* masm, |
+ Label* label, |
+ Register object, |
+ Register scratch) { |
__ JumpIfSmi(object, label); |
__ movq(scratch, FieldOperand(object, HeapObject::kMapOffset)); |
__ movzxbq(scratch, |
FieldOperand(scratch, Map::kInstanceTypeOffset)); |
- // Ensure that no non-strings have the symbol bit set. |
- STATIC_ASSERT(LAST_TYPE < kNotStringTag + kIsSymbolMask); |
- STATIC_ASSERT(kSymbolTag != 0); |
- __ testb(scratch, Immediate(kIsSymbolMask)); |
+ // Ensure that no non-strings have the internalized bit set. |
+ STATIC_ASSERT(LAST_TYPE < kNotStringTag + kIsInternalizedMask); |
+ STATIC_ASSERT(kInternalizedTag != 0); |
+ __ testb(scratch, Immediate(kIsInternalizedMask)); |
__ j(zero, label); |
} |
@@ -3761,15 +3761,17 @@ void ICCompareStub::GenerateGeneric(MacroAssembler* masm) { |
// The number comparison code did not provide a valid result. |
__ bind(&non_number_comparison); |
- // Fast negative check for symbol-to-symbol equality. |
+ // Fast negative check for internalized-to-internalized equality. |
Label check_for_strings; |
if (cc == equal) { |
- BranchIfNonSymbol(masm, &check_for_strings, rax, kScratchRegister); |
- BranchIfNonSymbol(masm, &check_for_strings, rdx, kScratchRegister); |
- |
- // We've already checked for object identity, so if both operands |
- // are symbols they aren't equal. Register eax (not rax) already holds a |
- // non-zero value, which indicates not equal, so just return. |
+ BranchIfNotInternalizedString( |
+ masm, &check_for_strings, rax, kScratchRegister); |
+ BranchIfNotInternalizedString( |
+ masm, &check_for_strings, rdx, kScratchRegister); |
+ |
+ // We've already checked for object identity, so if both operands are |
+ // internalized strings they aren't equal. Register eax (not rax) already |
+ // holds a non-zero value, which indicates not equal, so just return. |
__ ret(0); |
} |
@@ -4853,8 +4855,8 @@ void StringAddStub::Generate(MacroAssembler* masm) { |
// Look at the length of the result of adding the two strings. |
STATIC_ASSERT(String::kMaxLength <= Smi::kMaxValue / 2); |
__ SmiAdd(rbx, rbx, rcx); |
- // Use the symbol table when adding two one character strings, as it |
- // helps later optimizations to return a symbol here. |
+ // Use the string table when adding two one character strings, as it |
+ // helps later optimizations to return an internalized string here. |
__ SmiCompare(rbx, Smi::FromInt(2)); |
__ j(not_equal, &longer_than_two); |
@@ -4866,10 +4868,10 @@ void StringAddStub::Generate(MacroAssembler* masm) { |
__ movzxbq(rbx, FieldOperand(rax, SeqOneByteString::kHeaderSize)); |
__ movzxbq(rcx, FieldOperand(rdx, SeqOneByteString::kHeaderSize)); |
- // Try to lookup two character string in symbol table. If it is not found |
+ // Try to lookup two character string in string table. If it is not found |
// just allocate a new one. |
Label make_two_character_string, make_flat_ascii_string; |
- StringHelper::GenerateTwoCharacterSymbolTableProbe( |
+ StringHelper::GenerateTwoCharacterStringTableProbe( |
masm, rbx, rcx, r14, r11, rdi, r15, &make_two_character_string); |
__ IncrementCounter(counters->string_add_native(), 1); |
__ ret(2 * kPointerSize); |
@@ -5168,7 +5170,7 @@ void StringHelper::GenerateCopyCharactersREP(MacroAssembler* masm, |
__ bind(&done); |
} |
-void StringHelper::GenerateTwoCharacterSymbolTableProbe(MacroAssembler* masm, |
+void StringHelper::GenerateTwoCharacterStringTableProbe(MacroAssembler* masm, |
Register c1, |
Register c2, |
Register scratch1, |
@@ -5180,7 +5182,7 @@ void StringHelper::GenerateTwoCharacterSymbolTableProbe(MacroAssembler* masm, |
Register scratch = scratch3; |
// Make sure that both characters are not digits as such strings has a |
- // different hash algorithm. Don't try to look for these in the symbol table. |
+ // different hash algorithm. Don't try to look for these in the string table. |
Label not_array_index; |
__ leal(scratch, Operand(c1, -'0')); |
__ cmpl(scratch, Immediate(static_cast<int>('9' - '0'))); |
@@ -5204,14 +5206,14 @@ void StringHelper::GenerateTwoCharacterSymbolTableProbe(MacroAssembler* masm, |
// chars: two character string, char 1 in byte 0 and char 2 in byte 1. |
// hash: hash of two character string. |
- // Load the symbol table. |
- Register symbol_table = c2; |
- __ LoadRoot(symbol_table, Heap::kSymbolTableRootIndex); |
+ // Load the string table. |
+ Register string_table = c2; |
+ __ LoadRoot(string_table, Heap::kStringTableRootIndex); |
- // Calculate capacity mask from the symbol table capacity. |
+ // Calculate capacity mask from the string table capacity. |
Register mask = scratch2; |
__ SmiToInteger32(mask, |
- FieldOperand(symbol_table, SymbolTable::kCapacityOffset)); |
+ FieldOperand(string_table, StringTable::kCapacityOffset)); |
__ decl(mask); |
Register map = scratch4; |
@@ -5219,31 +5221,31 @@ void StringHelper::GenerateTwoCharacterSymbolTableProbe(MacroAssembler* masm, |
// Registers |
// chars: two character string, char 1 in byte 0 and char 2 in byte 1. |
// hash: hash of two character string (32-bit int) |
- // symbol_table: symbol table |
+ // string_table: string table |
// mask: capacity mask (32-bit int) |
// map: - |
// scratch: - |
- // Perform a number of probes in the symbol table. |
+ // Perform a number of probes in the string table. |
static const int kProbes = 4; |
- Label found_in_symbol_table; |
+ Label found_in_string_table; |
Label next_probe[kProbes]; |
Register candidate = scratch; // Scratch register contains candidate. |
for (int i = 0; i < kProbes; i++) { |
- // Calculate entry in symbol table. |
+ // Calculate entry in string table. |
__ movl(scratch, hash); |
if (i > 0) { |
- __ addl(scratch, Immediate(SymbolTable::GetProbeOffset(i))); |
+ __ addl(scratch, Immediate(StringTable::GetProbeOffset(i))); |
} |
__ andl(scratch, mask); |
- // Load the entry from the symbol table. |
- STATIC_ASSERT(SymbolTable::kEntrySize == 1); |
+ // Load the entry from the string table. |
+ STATIC_ASSERT(StringTable::kEntrySize == 1); |
__ movq(candidate, |
- FieldOperand(symbol_table, |
+ FieldOperand(string_table, |
scratch, |
times_pointer_size, |
- SymbolTable::kElementsStartOffset)); |
+ StringTable::kElementsStartOffset)); |
// If entry is undefined no string with this hash can be found. |
Label is_string; |
@@ -5256,7 +5258,7 @@ void StringHelper::GenerateTwoCharacterSymbolTableProbe(MacroAssembler* masm, |
if (FLAG_debug_code) { |
__ LoadRoot(kScratchRegister, Heap::kTheHoleValueRootIndex); |
__ cmpq(kScratchRegister, candidate); |
- __ Assert(equal, "oddball in symbol table is not undefined or the hole"); |
+ __ Assert(equal, "oddball in string table is not undefined or the hole"); |
} |
__ jmp(&next_probe[i]); |
@@ -5280,7 +5282,7 @@ void StringHelper::GenerateTwoCharacterSymbolTableProbe(MacroAssembler* masm, |
__ movl(temp, FieldOperand(candidate, SeqOneByteString::kHeaderSize)); |
__ andl(temp, Immediate(0x0000ffff)); |
__ cmpl(chars, temp); |
- __ j(equal, &found_in_symbol_table); |
+ __ j(equal, &found_in_string_table); |
__ bind(&next_probe[i]); |
} |
@@ -5289,7 +5291,7 @@ void StringHelper::GenerateTwoCharacterSymbolTableProbe(MacroAssembler* masm, |
// Scratch register contains result when we fall through to here. |
Register result = candidate; |
- __ bind(&found_in_symbol_table); |
+ __ bind(&found_in_string_table); |
if (!result.is(rax)) { |
__ movq(rax, result); |
} |
@@ -5415,7 +5417,7 @@ void SubStringStub::Generate(MacroAssembler* masm) { |
// Cons string. Check whether it is flat, then fetch first part. |
// Flat cons strings have an empty second part. |
__ CompareRoot(FieldOperand(rax, ConsString::kSecondOffset), |
- Heap::kEmptyStringRootIndex); |
+ Heap::kempty_stringRootIndex); |
__ j(not_equal, &runtime); |
__ movq(rdi, FieldOperand(rax, ConsString::kFirstOffset)); |
// Update instance type. |
@@ -5851,8 +5853,8 @@ void ICCompareStub::GenerateHeapNumbers(MacroAssembler* masm) { |
} |
-void ICCompareStub::GenerateSymbols(MacroAssembler* masm) { |
- ASSERT(state_ == CompareIC::SYMBOL); |
+void ICCompareStub::GenerateInternalizedStrings(MacroAssembler* masm) { |
+ ASSERT(state_ == CompareIC::INTERNALIZED_STRING); |
ASSERT(GetCondition() == equal); |
// Registers containing left and right operands respectively. |
@@ -5866,17 +5868,17 @@ void ICCompareStub::GenerateSymbols(MacroAssembler* masm) { |
Condition cond = masm->CheckEitherSmi(left, right, tmp1); |
__ j(cond, &miss, Label::kNear); |
- // Check that both operands are symbols. |
+ // Check that both operands are internalized strings. |
__ movq(tmp1, FieldOperand(left, HeapObject::kMapOffset)); |
__ movq(tmp2, FieldOperand(right, HeapObject::kMapOffset)); |
__ movzxbq(tmp1, FieldOperand(tmp1, Map::kInstanceTypeOffset)); |
__ movzxbq(tmp2, FieldOperand(tmp2, Map::kInstanceTypeOffset)); |
- STATIC_ASSERT(kSymbolTag != 0); |
+ STATIC_ASSERT(kInternalizedTag != 0); |
__ and_(tmp1, tmp2); |
- __ testb(tmp1, Immediate(kIsSymbolMask)); |
+ __ testb(tmp1, Immediate(kIsInternalizedMask)); |
__ j(zero, &miss, Label::kNear); |
- // Symbols are compared by identity. |
+ // Internalized strings are compared by identity. |
Label done; |
__ cmpq(left, right); |
// Make sure rax is non-zero. At this point input operands are |
@@ -5935,13 +5937,13 @@ void ICCompareStub::GenerateStrings(MacroAssembler* masm) { |
// Handle not identical strings. |
__ bind(¬_same); |
- // Check that both strings are symbols. If they are, we're done |
+ // Check that both strings are internalized strings. If they are, we're done |
// because we already know they are not identical. |
if (equality) { |
Label do_compare; |
- STATIC_ASSERT(kSymbolTag != 0); |
+ STATIC_ASSERT(kInternalizedTag != 0); |
__ and_(tmp1, tmp2); |
- __ testb(tmp1, Immediate(kIsSymbolMask)); |
+ __ testb(tmp1, Immediate(kIsInternalizedMask)); |
__ j(zero, &do_compare, Label::kNear); |
// Make sure rax is non-zero. At this point input operands are |
// guaranteed to be non-zero. |
@@ -6089,10 +6091,10 @@ void StringDictionaryLookupStub::GenerateNegativeLookup(MacroAssembler* masm, |
__ CompareRoot(entity_name, Heap::kTheHoleValueRootIndex); |
__ j(equal, &the_hole, Label::kNear); |
- // Check if the entry name is not a symbol. |
+ // Check if the entry name is not an internalized string. |
__ movq(entity_name, FieldOperand(entity_name, HeapObject::kMapOffset)); |
__ testb(FieldOperand(entity_name, Map::kInstanceTypeOffset), |
- Immediate(kIsSymbolMask)); |
+ Immediate(kIsInternalizedMask)); |
__ j(zero, miss); |
__ bind(&the_hole); |
@@ -6221,14 +6223,14 @@ void StringDictionaryLookupStub::Generate(MacroAssembler* masm) { |
__ j(equal, &in_dictionary); |
if (i != kTotalProbes - 1 && mode_ == NEGATIVE_LOOKUP) { |
- // If we hit a non symbol key during negative lookup |
+ // If we hit a non internalized string key during negative lookup |
// we have to bailout as this key might be equal to the |
// key we are looking for. |
- // Check if the entry name is not a symbol. |
+ // Check if the entry name is not an internalized string. |
__ movq(scratch, FieldOperand(scratch, HeapObject::kMapOffset)); |
__ testb(FieldOperand(scratch, Map::kInstanceTypeOffset), |
- Immediate(kIsSymbolMask)); |
+ Immediate(kIsInternalizedMask)); |
__ j(zero, &maybe_in_dictionary); |
} |
} |