| Index: src/crankshaft/arm64/lithium-codegen-arm64.cc
|
| diff --git a/src/crankshaft/arm64/lithium-codegen-arm64.cc b/src/crankshaft/arm64/lithium-codegen-arm64.cc
|
| index abb0e71ea419deb6623ab5300a91dd471582fdc4..6e9d604be8a074026a7f5e538330de3cd0b43be2 100644
|
| --- a/src/crankshaft/arm64/lithium-codegen-arm64.cc
|
| +++ b/src/crankshaft/arm64/lithium-codegen-arm64.cc
|
| @@ -5193,10 +5193,18 @@ void LCodeGen::DoStringCompareAndBranch(LStringCompareAndBranch* instr) {
|
| DCHECK(ToRegister(instr->left()).is(x1));
|
| DCHECK(ToRegister(instr->right()).is(x0));
|
|
|
| - Handle<Code> code = CodeFactory::StringCompare(isolate()).code();
|
| - CallCode(code, RelocInfo::CODE_TARGET, instr);
|
| + if (Token::IsOrderedRelationalCompareOp(instr->op())) {
|
| + Handle<Code> code = CodeFactory::StringCompare(isolate()).code();
|
| + CallCode(code, RelocInfo::CODE_TARGET, instr);
|
| +
|
| + EmitCompareAndBranch(instr, TokenToCondition(instr->op(), false), x0, 0);
|
| + } else {
|
| + Handle<Code> code = CodeFactory::StringEqual(isolate()).code();
|
| + CallCode(code, RelocInfo::CODE_TARGET, instr);
|
| + __ CompareRoot(x0, Heap::kTrueValueRootIndex);
|
|
|
| - EmitCompareAndBranch(instr, TokenToCondition(instr->op(), false), x0, 0);
|
| + EmitBranch(instr, TokenToCondition(instr->op(), false));
|
| + }
|
| }
|
|
|
|
|
|
|