Commit 8eeec89b authored by chunyang.dai's avatar chunyang.dai Committed by Commit bot

X87: [compiler] Remove broken support for undetectable strings.

port b62dbf1e (r30132).

original commit messge:

    Support for undetectable strings was officially dropped in
    https://codereview.chromium.org/916753002, but the compilers
    weren't fixed properly.

BUG=

Review URL: https://codereview.chromium.org/1287173002

Cr-Commit-Position: refs/heads/master@{#30156}
parent 96e331e2
...@@ -4943,11 +4943,7 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr, ...@@ -4943,11 +4943,7 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr,
} else if (String::Equals(check, factory->string_string())) { } else if (String::Equals(check, factory->string_string())) {
__ JumpIfSmi(eax, if_false); __ JumpIfSmi(eax, if_false);
__ CmpObjectType(eax, FIRST_NONSTRING_TYPE, edx); __ CmpObjectType(eax, FIRST_NONSTRING_TYPE, edx);
__ j(above_equal, if_false); Split(below, if_true, if_false, fall_through);
// Check for undetectable objects => false.
__ test_b(FieldOperand(edx, Map::kBitFieldOffset),
1 << Map::kIsUndetectable);
Split(zero, if_true, if_false, fall_through);
} else if (String::Equals(check, factory->symbol_string())) { } else if (String::Equals(check, factory->symbol_string())) {
__ JumpIfSmi(eax, if_false); __ JumpIfSmi(eax, if_false);
__ CmpObjectType(eax, SYMBOL_TYPE, edx); __ CmpObjectType(eax, SYMBOL_TYPE, edx);
......
...@@ -6108,10 +6108,7 @@ Condition LCodeGen::EmitTypeofIs(LTypeofIsAndBranch* instr, Register input) { ...@@ -6108,10 +6108,7 @@ Condition LCodeGen::EmitTypeofIs(LTypeofIsAndBranch* instr, Register input) {
} else if (String::Equals(type_name, factory()->string_string())) { } else if (String::Equals(type_name, factory()->string_string())) {
__ JumpIfSmi(input, false_label, false_distance); __ JumpIfSmi(input, false_label, false_distance);
__ CmpObjectType(input, FIRST_NONSTRING_TYPE, input); __ CmpObjectType(input, FIRST_NONSTRING_TYPE, input);
__ j(above_equal, false_label, false_distance); final_branch_condition = below;
__ test_b(FieldOperand(input, Map::kBitFieldOffset),
1 << Map::kIsUndetectable);
final_branch_condition = zero;
} else if (String::Equals(type_name, factory()->symbol_string())) { } else if (String::Equals(type_name, factory()->symbol_string())) {
__ JumpIfSmi(input, false_label, false_distance); __ JumpIfSmi(input, false_label, false_distance);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment