Index: src/ic.h |
diff --git a/src/ic.h b/src/ic.h |
index 213a48182635badf5c833729e0d8d143e999b6c8..fce585f6d72743780d7d0ceca8d446d84474b557 100644 |
--- a/src/ic.h |
+++ b/src/ic.h |
@@ -150,6 +150,19 @@ class IC { |
// Get the call-site target; used for determining the state. |
Handle<Code> target() const { return target_; } |
+ TypeHandleList* types() { return &types_; } |
+ CodeHandleList* handlers() { return &handlers_; } |
+ Map* first_map() { |
+ return types_.length() == 0 ? NULL : *TypeToMap(*types_.at(0), isolate_); |
+ } |
+ Code* first_handler() { |
+ return handlers_.length() == 0 ? NULL : *handlers_.at(0); |
+ } |
+ void GetMapsFromTypes(MapHandleList* maps) { |
+ for (int i = 0; i < types_.length(); ++i) { |
+ maps->Add(TypeToMap(*types_.at(i), isolate_)); |
+ } |
+ } |
Address fp() const { return fp_; } |
Address pc() const { return *pc_address_; } |
Isolate* isolate() const { return isolate_; } |
@@ -209,7 +222,7 @@ class IC { |
virtual void UpdateMegamorphicCache(HeapType* type, Name* name, Code* code); |
void CopyICToMegamorphicCache(Handle<String> name); |
- bool IsTransitionOfMonomorphicTarget(Handle<HeapType> type); |
+ bool IsTransitionOfMonomorphicTarget(Map* source_map, Map* target_map); |
void PatchCache(Handle<HeapType> type, |
Handle<String> name, |
Handle<Code> code); |
@@ -260,6 +273,9 @@ class IC { |
ExtraICState extra_ic_state_; |
+ TypeHandleList types_; |
+ CodeHandleList handlers_; |
+ |
DISALLOW_IMPLICIT_CONSTRUCTORS(IC); |
}; |