| 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;
|
| + }
|
| };
|
|
|
|
|
|
|