| OLD | NEW | 
|---|
| 1 // Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file | 
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a | 
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. | 
| 4 // Classes that describe assembly patterns as used by inline caches. | 4 // Classes that describe assembly patterns as used by inline caches. | 
| 5 | 5 | 
| 6 #ifndef VM_INSTRUCTIONS_DBC_H_ | 6 #ifndef VM_INSTRUCTIONS_DBC_H_ | 
| 7 #define VM_INSTRUCTIONS_DBC_H_ | 7 #define VM_INSTRUCTIONS_DBC_H_ | 
| 8 | 8 | 
| 9 #ifndef VM_INSTRUCTIONS_H_ | 9 #ifndef VM_INSTRUCTIONS_H_ | 
| 10 #error Do not include instructions_dbc.h directly; use instructions.h instead. | 10 #error Do not include instructions_dbc.h directly; use instructions.h instead. | 
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 91   const ObjectPool& object_pool_; | 91   const ObjectPool& object_pool_; | 
| 92 | 92 | 
| 93   uword end_; | 93   uword end_; | 
| 94   intptr_t native_function_pool_index_; | 94   intptr_t native_function_pool_index_; | 
| 95   intptr_t target_code_pool_index_; | 95   intptr_t target_code_pool_index_; | 
| 96 | 96 | 
| 97   DISALLOW_COPY_AND_ASSIGN(NativeCallPattern); | 97   DISALLOW_COPY_AND_ASSIGN(NativeCallPattern); | 
| 98 }; | 98 }; | 
| 99 | 99 | 
| 100 | 100 | 
| 101 // Instance call that can switch from an IC call to a megamorphic call | 101 // Instance call that can switch between a direct monomorphic call, an IC call, | 
|  | 102 // and a megamorphic call. | 
|  | 103 //   load guarded cid            load ICData             load MegamorphicCache | 
|  | 104 //   load monomorphic target <-> load ICLookup stub  ->  load MMLookup stub | 
|  | 105 //   call target.entry           call stub.entry         call stub.entry | 
| 102 class SwitchableCallPattern : public ValueObject { | 106 class SwitchableCallPattern : public ValueObject { | 
| 103  public: | 107  public: | 
| 104   SwitchableCallPattern(uword pc, const Code& code); | 108   SwitchableCallPattern(uword pc, const Code& code); | 
| 105 | 109 | 
| 106   RawObject* cache() const; | 110   RawObject* data() const; | 
| 107   void SetCache(const MegamorphicCache& cache) const; | 111   RawCode* target() const; | 
| 108   void SetLookupStub(const Code& stub) const; | 112   void SetData(const Object& data) const; | 
|  | 113   void SetTarget(const Code& target) const; | 
| 109 | 114 | 
| 110  private: | 115  private: | 
| 111   const ObjectPool& object_pool_; | 116   const ObjectPool& object_pool_; | 
| 112   intptr_t cache_pool_index_; | 117   intptr_t data_pool_index_; | 
| 113   intptr_t stub_pool_index_; | 118   intptr_t target_pool_index_; | 
| 114 | 119 | 
| 115   DISALLOW_COPY_AND_ASSIGN(SwitchableCallPattern); | 120   DISALLOW_COPY_AND_ASSIGN(SwitchableCallPattern); | 
| 116 }; | 121 }; | 
| 117 | 122 | 
| 118 | 123 | 
| 119 class ReturnPattern : public ValueObject { | 124 class ReturnPattern : public ValueObject { | 
| 120  public: | 125  public: | 
| 121   explicit ReturnPattern(uword pc); | 126   explicit ReturnPattern(uword pc); | 
| 122 | 127 | 
| 123   static const int kLengthInBytes = 0; | 128   static const int kLengthInBytes = 0; | 
| 124 | 129 | 
| 125   int pattern_length_in_bytes() const { | 130   int pattern_length_in_bytes() const { | 
| 126     UNIMPLEMENTED(); | 131     UNIMPLEMENTED(); | 
| 127     return kLengthInBytes; | 132     return kLengthInBytes; | 
| 128   } | 133   } | 
| 129 | 134 | 
| 130   bool IsValid() const; | 135   bool IsValid() const; | 
| 131 | 136 | 
| 132  private: | 137  private: | 
| 133   const uword pc_; | 138   const uword pc_; | 
| 134 }; | 139 }; | 
| 135 | 140 | 
| 136 }  // namespace dart | 141 }  // namespace dart | 
| 137 | 142 | 
| 138 #endif  // VM_INSTRUCTIONS_DBC_H_ | 143 #endif  // VM_INSTRUCTIONS_DBC_H_ | 
| OLD | NEW | 
|---|