Index: src/ic.h |
diff --git a/src/ic.h b/src/ic.h |
index ece5be9f05002df7b19da88e0f9aad29c41a4174..04436b54c60346e833bc0961195b641df03d6e64 100644 |
--- a/src/ic.h |
+++ b/src/ic.h |
@@ -342,6 +342,13 @@ class LoadIC: public IC { |
class KeyedIC: public IC { |
public: |
+ enum StubKind { |
+ LOAD, |
+ STORE_NO_TRANSITION, |
+ STORE_TRANSITION_SMI_TO_OBJECT, |
+ STORE_TRANSITION_SMI_TO_DOUBLE, |
+ STORE_TRANSITION_DOUBLE_TO_OBJECT |
+ }; |
explicit KeyedIC(Isolate* isolate) : IC(NO_EXTRA_FRAME, isolate) {} |
virtual ~KeyedIC() {} |
@@ -357,7 +364,7 @@ class KeyedIC: public IC { |
virtual Code::Kind kind() const = 0; |
MaybeObject* ComputeStub(JSObject* receiver, |
- bool is_store, |
+ StubKind stub_kind, |
StrictModeFlag strict_mode, |
Code* default_stub); |
@@ -374,9 +381,23 @@ class KeyedIC: public IC { |
StrictModeFlag strict_mode); |
MaybeObject* ComputeMonomorphicStub(JSObject* receiver, |
- bool is_store, |
+ StubKind stub_kind, |
StrictModeFlag strict_mode, |
Code* default_stub); |
+ |
+ MaybeObject* ComputePolymorphicStubWithTransition(JSObject* receiver, |
+ MapList* receiver_maps, |
+ Map* new_map, |
+ StrictModeFlag strict_mode); |
+ |
+ MaybeObject* ComputePolymorphicStub(MapList* receiver_maps, |
+ StrictModeFlag strict_mode); |
+ |
+ MaybeObject* ComputeTransitionedMap(JSObject* receiver, StubKind stub_kind); |
+ |
+ static bool IsTransitionStubKind(StubKind stub_kind) { |
+ return stub_kind > STORE_NO_TRANSITION; |
+ } |
}; |