Index: src/ic.h |
diff --git a/src/ic.h b/src/ic.h |
index 6c676e60436b1365a030df50cc3260e1a2d1d3e0..4bf259a2f481f04908cdcf3774947e6611fc0474 100644 |
--- a/src/ic.h |
+++ b/src/ic.h |
@@ -59,6 +59,7 @@ namespace internal { |
ICU(UnaryOp_Patch) \ |
ICU(BinaryOp_Patch) \ |
ICU(CompareIC_Miss) \ |
+ ICU(CompareNilIC_Miss) \ |
ICU(Unreachable) \ |
ICU(ToBoolean_Patch) |
// |
@@ -776,6 +777,26 @@ class CompareIC: public IC { |
}; |
+class CompareNilIC: public IC { |
+ public: |
+ explicit CompareNilIC(Isolate* isolate) : IC(EXTRA_CALL_FRAME, isolate) {} |
+ |
+ MUST_USE_RESULT MaybeObject* CompareNil(Handle<Object> object); |
+ |
+ static Handle<Code> GetUninitialized(); |
+ |
+ static Code* GetRawUninitialized(EqualityKind kind, NilValue nil); |
+ |
+ static void Clear(Address address, Code* target); |
+ |
+ void patch(Code* code); |
+ |
+ static MUST_USE_RESULT MaybeObject* DoCompareNilSlow(EqualityKind kind, |
+ NilValue nil, |
+ Handle<Object> object); |
+}; |
+ |
+ |
class ToBooleanIC: public IC { |
public: |
explicit ToBooleanIC(Isolate* isolate) : IC(NO_EXTRA_FRAME, isolate) { } |
@@ -790,6 +811,8 @@ void PatchInlinedSmiCode(Address address, InlinedSmiCheck check); |
DECLARE_RUNTIME_FUNCTION(MaybeObject*, KeyedLoadIC_MissFromStubFailure); |
DECLARE_RUNTIME_FUNCTION(MaybeObject*, KeyedStoreIC_MissFromStubFailure); |
+DECLARE_RUNTIME_FUNCTION(MaybeObject*, CompareNilIC_Miss); |
+ |
} } // namespace v8::internal |