| Index: src/x64/full-codegen-x64.cc
|
| diff --git a/src/x64/full-codegen-x64.cc b/src/x64/full-codegen-x64.cc
|
| index 46447de6691e51e63d726709bacf46bb26403eb7..eef9dc2afae81008138a6cdb61bf1330dbe68d18 100644
|
| --- a/src/x64/full-codegen-x64.cc
|
| +++ b/src/x64/full-codegen-x64.cc
|
| @@ -1600,7 +1600,7 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) {
|
| ASSERT(!CompileTimeValue::IsCompileTimeValue(value));
|
| // Fall through.
|
| case ObjectLiteral::Property::COMPUTED:
|
| - if (key->handle()->IsSymbol()) {
|
| + if (key->handle()->IsInternalizedString()) {
|
| if (property->emit_store()) {
|
| VisitForAccumulatorValue(value);
|
| __ Move(rcx, key->handle());
|
| @@ -2601,7 +2601,7 @@ void FullCodeGenerator::EmitIsStringWrapperSafeForDefaultValueOf(
|
| __ CompareRoot(rcx, Heap::kHashTableMapRootIndex);
|
| __ j(equal, if_false);
|
|
|
| - // Look for valueOf symbol in the descriptor array, and indicate false if
|
| + // Look for valueOf string in the descriptor array, and indicate false if
|
| // found. Since we omit an enumeration index check, if it is added via a
|
| // transition that shares its descriptor array, this is a false positive.
|
| Label entry, loop, done;
|
| @@ -2623,11 +2623,11 @@ void FullCodeGenerator::EmitIsStringWrapperSafeForDefaultValueOf(
|
| // Calculate location of the first key name.
|
| __ addq(rbx, Immediate(DescriptorArray::kFirstOffset));
|
| // Loop through all the keys in the descriptor array. If one of these is the
|
| - // symbol valueOf the result is false.
|
| + // internalized string "valueOf" the result is false.
|
| __ jmp(&entry);
|
| __ bind(&loop);
|
| __ movq(rdx, FieldOperand(rbx, 0));
|
| - __ Cmp(rdx, FACTORY->value_of_symbol());
|
| + __ Cmp(rdx, FACTORY->value_of_string());
|
| __ j(equal, if_false);
|
| __ addq(rbx, Immediate(DescriptorArray::kDescriptorSize * kPointerSize));
|
| __ bind(&entry);
|
| @@ -2862,12 +2862,12 @@ void FullCodeGenerator::EmitClassOf(CallRuntime* expr) {
|
|
|
| // Functions have class 'Function'.
|
| __ bind(&function);
|
| - __ Move(rax, isolate()->factory()->function_class_symbol());
|
| + __ Move(rax, isolate()->factory()->function_class_string());
|
| __ jmp(&done);
|
|
|
| // Objects with a non-function constructor have class 'Object'.
|
| __ bind(&non_function_constructor);
|
| - __ Move(rax, isolate()->factory()->Object_symbol());
|
| + __ Move(rax, isolate()->factory()->Object_string());
|
| __ jmp(&done);
|
|
|
| // Non-JS objects have class null.
|
| @@ -3227,7 +3227,7 @@ void FullCodeGenerator::EmitStringCharAt(CallRuntime* expr) {
|
| __ bind(&index_out_of_range);
|
| // When the index is out of range, the spec requires us to return
|
| // the empty string.
|
| - __ LoadRoot(result, Heap::kEmptyStringRootIndex);
|
| + __ LoadRoot(result, Heap::kempty_stringRootIndex);
|
| __ jmp(&done);
|
|
|
| __ bind(&need_conversion);
|
| @@ -3553,7 +3553,7 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) {
|
| __ movq(array_length, FieldOperand(array, JSArray::kLengthOffset));
|
| __ SmiCompare(array_length, Smi::FromInt(0));
|
| __ j(not_zero, &non_trivial_array);
|
| - __ LoadRoot(rax, Heap::kEmptyStringRootIndex);
|
| + __ LoadRoot(rax, Heap::kempty_stringRootIndex);
|
| __ jmp(&return_result);
|
|
|
| // Save the array length on the stack.
|
| @@ -4215,12 +4215,12 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr,
|
| }
|
| PrepareForBailoutBeforeSplit(expr, true, if_true, if_false);
|
|
|
| - if (check->Equals(isolate()->heap()->number_symbol())) {
|
| + if (check->Equals(isolate()->heap()->number_string())) {
|
| __ JumpIfSmi(rax, if_true);
|
| __ movq(rax, FieldOperand(rax, HeapObject::kMapOffset));
|
| __ CompareRoot(rax, Heap::kHeapNumberMapRootIndex);
|
| Split(equal, if_true, if_false, fall_through);
|
| - } else if (check->Equals(isolate()->heap()->string_symbol())) {
|
| + } else if (check->Equals(isolate()->heap()->string_string())) {
|
| __ JumpIfSmi(rax, if_false);
|
| // Check for undetectable objects => false.
|
| __ CmpObjectType(rax, FIRST_NONSTRING_TYPE, rdx);
|
| @@ -4228,16 +4228,16 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr,
|
| __ testb(FieldOperand(rdx, Map::kBitFieldOffset),
|
| Immediate(1 << Map::kIsUndetectable));
|
| Split(zero, if_true, if_false, fall_through);
|
| - } else if (check->Equals(isolate()->heap()->boolean_symbol())) {
|
| + } else if (check->Equals(isolate()->heap()->boolean_string())) {
|
| __ CompareRoot(rax, Heap::kTrueValueRootIndex);
|
| __ j(equal, if_true);
|
| __ CompareRoot(rax, Heap::kFalseValueRootIndex);
|
| Split(equal, if_true, if_false, fall_through);
|
| } else if (FLAG_harmony_typeof &&
|
| - check->Equals(isolate()->heap()->null_symbol())) {
|
| + check->Equals(isolate()->heap()->null_string())) {
|
| __ CompareRoot(rax, Heap::kNullValueRootIndex);
|
| Split(equal, if_true, if_false, fall_through);
|
| - } else if (check->Equals(isolate()->heap()->undefined_symbol())) {
|
| + } else if (check->Equals(isolate()->heap()->undefined_string())) {
|
| __ CompareRoot(rax, Heap::kUndefinedValueRootIndex);
|
| __ j(equal, if_true);
|
| __ JumpIfSmi(rax, if_false);
|
| @@ -4246,14 +4246,14 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr,
|
| __ testb(FieldOperand(rdx, Map::kBitFieldOffset),
|
| Immediate(1 << Map::kIsUndetectable));
|
| Split(not_zero, if_true, if_false, fall_through);
|
| - } else if (check->Equals(isolate()->heap()->function_symbol())) {
|
| + } else if (check->Equals(isolate()->heap()->function_string())) {
|
| __ JumpIfSmi(rax, if_false);
|
| STATIC_ASSERT(NUM_OF_CALLABLE_SPEC_OBJECT_TYPES == 2);
|
| __ CmpObjectType(rax, JS_FUNCTION_TYPE, rdx);
|
| __ j(equal, if_true);
|
| __ CmpInstanceType(rdx, JS_FUNCTION_PROXY_TYPE);
|
| Split(equal, if_true, if_false, fall_through);
|
| - } else if (check->Equals(isolate()->heap()->object_symbol())) {
|
| + } else if (check->Equals(isolate()->heap()->object_string())) {
|
| __ JumpIfSmi(rax, if_false);
|
| if (!FLAG_harmony_typeof) {
|
| __ CompareRoot(rax, Heap::kNullValueRootIndex);
|
|
|