Index: runtime/vm/instructions_arm64.h |
diff --git a/runtime/vm/instructions_arm64.h b/runtime/vm/instructions_arm64.h |
index 0d2c96d70ceba0d775b65f631bd78f6504fa8c63..6195d52b5942ed825a22fc1064e91dd669e4e63c 100644 |
--- a/runtime/vm/instructions_arm64.h |
+++ b/runtime/vm/instructions_arm64.h |
@@ -106,6 +106,27 @@ class NativeCallPattern : public ValueObject { |
}; |
+// Instance call that can switch from an IC call to a megamorphic call |
+// load ICData load MegamorphicCache |
+// call ICLookup stub -> call MegamorphicLookup stub |
+// call target call target |
+class SwitchableCallPattern : public ValueObject { |
+ public: |
+ SwitchableCallPattern(uword pc, const Code& code); |
+ |
+ RawObject* cache() const; |
+ void SetCache(const MegamorphicCache& cache) const; |
+ void SetLookupStub(const Code& stub) const; |
+ |
+ private: |
+ const ObjectPool& object_pool_; |
+ intptr_t cache_pool_index_; |
+ intptr_t stub_pool_index_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(SwitchableCallPattern); |
+}; |
+ |
+ |
class ReturnPattern : public ValueObject { |
public: |
explicit ReturnPattern(uword pc); |