| Index: src/code-stubs-hydrogen.cc
|
| diff --git a/src/code-stubs-hydrogen.cc b/src/code-stubs-hydrogen.cc
|
| index 07177a277a091b40671e1d9acfab32a55d32cc7f..461baaa4e6d71447b186938e8bba55a87ec3f7e7 100644
|
| --- a/src/code-stubs-hydrogen.cc
|
| +++ b/src/code-stubs-hydrogen.cc
|
| @@ -1419,6 +1419,31 @@
|
|
|
|
|
| template <>
|
| +HValue* CodeStubGraphBuilder<CompareNilICStub>::BuildCodeInitializedStub() {
|
| + Isolate* isolate = graph()->isolate();
|
| + CompareNilICStub* stub = casted_stub();
|
| + HIfContinuation continuation;
|
| + Handle<Map> sentinel_map(isolate->heap()->meta_map());
|
| + Type* type = stub->GetType(zone(), sentinel_map);
|
| + BuildCompareNil(GetParameter(0), type, &continuation, kEmbedMapsViaWeakCells);
|
| + IfBuilder if_nil(this, &continuation);
|
| + if_nil.Then();
|
| + if (continuation.IsFalseReachable()) {
|
| + if_nil.Else();
|
| + if_nil.Return(graph()->GetConstantFalse());
|
| + }
|
| + if_nil.End();
|
| + return continuation.IsTrueReachable() ? graph()->GetConstantTrue()
|
| + : graph()->GetConstantUndefined();
|
| +}
|
| +
|
| +
|
| +Handle<Code> CompareNilICStub::GenerateCode() {
|
| + return DoGenerateCode(this);
|
| +}
|
| +
|
| +
|
| +template <>
|
| HValue* CodeStubGraphBuilder<BinaryOpICStub>::BuildCodeInitializedStub() {
|
| BinaryOpICState state = casted_stub()->state();
|
|
|
|
|