| Index: src/ppc/code-stubs-ppc.cc
|
| diff --git a/src/ppc/code-stubs-ppc.cc b/src/ppc/code-stubs-ppc.cc
|
| index b136b7dd2bcd7c9cd6d3608fb0baf7186ad52394..303c85737f32ec210e0e0f59bcafc6f6f7f5c0de 100644
|
| --- a/src/ppc/code-stubs-ppc.cc
|
| +++ b/src/ppc/code-stubs-ppc.cc
|
| @@ -716,26 +716,30 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) {
|
|
|
| __ Push(lhs, rhs);
|
| // Figure out which native to call and setup the arguments.
|
| - Builtins::JavaScript native;
|
| - if (cc == eq) {
|
| - native = strict() ? Builtins::STRICT_EQUALS : Builtins::EQUALS;
|
| + if (cc == eq && strict()) {
|
| + __ TailCallRuntime(Runtime::kStrictEquals, 2, 1);
|
| } else {
|
| - native =
|
| - is_strong(strength()) ? Builtins::COMPARE_STRONG : Builtins::COMPARE;
|
| - int ncr; // NaN compare result
|
| - if (cc == lt || cc == le) {
|
| - ncr = GREATER;
|
| + Builtins::JavaScript native;
|
| + if (cc == eq) {
|
| + native = Builtins::EQUALS;
|
| } else {
|
| - DCHECK(cc == gt || cc == ge); // remaining cases
|
| - ncr = LESS;
|
| + native =
|
| + is_strong(strength()) ? Builtins::COMPARE_STRONG : Builtins::COMPARE;
|
| + int ncr; // NaN compare result
|
| + if (cc == lt || cc == le) {
|
| + ncr = GREATER;
|
| + } else {
|
| + DCHECK(cc == gt || cc == ge); // remaining cases
|
| + ncr = LESS;
|
| + }
|
| + __ LoadSmiLiteral(r3, Smi::FromInt(ncr));
|
| + __ push(r3);
|
| }
|
| - __ LoadSmiLiteral(r3, Smi::FromInt(ncr));
|
| - __ push(r3);
|
| - }
|
|
|
| - // Call the native; it returns -1 (less), 0 (equal), or 1 (greater)
|
| - // tagged as a small integer.
|
| - __ InvokeBuiltin(native, JUMP_FUNCTION);
|
| + // Call the native; it returns -1 (less), 0 (equal), or 1 (greater)
|
| + // tagged as a small integer.
|
| + __ InvokeBuiltin(native, JUMP_FUNCTION);
|
| + }
|
|
|
| __ bind(&miss);
|
| GenerateMiss(masm);
|
|
|