MIPS: Use compare nil ic only for non-strict equality.
Port r15045 (cce366f) Original commit message: Strict-equality only has one check and cannot deopt. Should therefore not be part of the stub. BUG= Review URL: https://codereview.chromium.org/16690008 Patch from Balazs Kilvady <kilvadyb@homejinni.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15050 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
eb7e2771a9
commit
88021e64b1
@ -4799,19 +4799,15 @@ void FullCodeGenerator::EmitLiteralCompareNil(CompareOperation* expr,
|
||||
|
||||
VisitForAccumulatorValue(sub_expr);
|
||||
PrepareForBailoutBeforeSplit(expr, true, if_true, if_false);
|
||||
EqualityKind kind = expr->op() == Token::EQ_STRICT
|
||||
? kStrictEquality : kNonStrictEquality;
|
||||
__ mov(a0, result_register());
|
||||
if (kind == kStrictEquality) {
|
||||
if (expr->op() == Token::EQ_STRICT) {
|
||||
Heap::RootListIndex nil_value = nil == kNullValue ?
|
||||
Heap::kNullValueRootIndex :
|
||||
Heap::kUndefinedValueRootIndex;
|
||||
__ LoadRoot(a1, nil_value);
|
||||
Split(eq, a0, Operand(a1), if_true, if_false, fall_through);
|
||||
} else {
|
||||
Handle<Code> ic = CompareNilICStub::GetUninitialized(isolate(),
|
||||
kNonStrictEquality,
|
||||
nil);
|
||||
Handle<Code> ic = CompareNilICStub::GetUninitialized(isolate(), nil);
|
||||
CallIC(ic, RelocInfo::CODE_TARGET, expr->CompareOperationFeedbackId());
|
||||
Split(ne, v0, Operand(zero_reg), if_true, if_false, fall_through);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user