Commit 76b66159 authored by mbrandy's avatar mbrandy Committed by Commit bot

Revert of PPC: [compiler] Drop the CompareNilIC. (patchset #1 id:1 of...

Revert of PPC: [compiler] Drop the CompareNilIC. (patchset #1 id:1 of https://codereview.chromium.org/1733663003/ )

Reason for revert:
Original commit reverted.

Original issue's description:
> PPC: [compiler] Drop the CompareNilIC.
>
> Port 666aec03
>
> Original commit message:
>     Since both null and undefined are also marked as undetectable now, we
>     can just test that bit instead of having the CompareNilIC try to collect
>     feedback to speed up the general case (without the undetectable bit
>     being used).
>
>     Drive-by-fix: Update the type system to match the new handling of
>     undetectable in the runtime.
>
> R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
> BUG=
>
> Committed: https://crrev.com/546ea6b8393a894f07597ade5ec1c7db02c1e425
> Cr-Commit-Position: refs/heads/master@{#34266}

TBR=bmeurer@chromium.org,joransiu@ca.ibm.com,jyan@ca.ibm.com,michael_dawson@ca.ibm.com
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#34340}
parent 92ed0853
...@@ -3994,11 +3994,10 @@ void FullCodeGenerator::EmitLiteralCompareNil(CompareOperation* expr, ...@@ -3994,11 +3994,10 @@ void FullCodeGenerator::EmitLiteralCompareNil(CompareOperation* expr,
__ cmp(r3, r4); __ cmp(r3, r4);
Split(eq, if_true, if_false, fall_through); Split(eq, if_true, if_false, fall_through);
} else { } else {
__ JumpIfSmi(r3, if_false); Handle<Code> ic = CompareNilICStub::GetUninitialized(isolate(), nil);
__ LoadP(r3, FieldMemOperand(r3, HeapObject::kMapOffset)); CallIC(ic, expr->CompareOperationFeedbackId());
__ lbz(r4, FieldMemOperand(r3, Map::kBitFieldOffset)); __ CompareRoot(r3, Heap::kTrueValueRootIndex);
__ andi(r0, r4, Operand(1 << Map::kIsUndetectable)); Split(eq, if_true, if_false, fall_through);
Split(ne, if_true, if_false, fall_through, cr0);
} }
context()->Plug(if_true, if_false); context()->Plug(if_true, if_false);
} }
......
...@@ -314,6 +314,13 @@ void CompareDescriptor::InitializePlatformSpecific( ...@@ -314,6 +314,13 @@ void CompareDescriptor::InitializePlatformSpecific(
} }
void CompareNilDescriptor::InitializePlatformSpecific(
CallInterfaceDescriptorData* data) {
Register registers[] = {r3};
data->InitializePlatformSpecific(arraysize(registers), registers);
}
void ToBooleanDescriptor::InitializePlatformSpecific( void ToBooleanDescriptor::InitializePlatformSpecific(
CallInterfaceDescriptorData* data) { CallInterfaceDescriptorData* data) {
Register registers[] = {r3}; Register registers[] = {r3};
......
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