| OLD | NEW | 
|---|
| 1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2013, 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_MIPS_H_ | 6 #ifndef VM_INSTRUCTIONS_MIPS_H_ | 
| 7 #define VM_INSTRUCTIONS_MIPS_H_ | 7 #define VM_INSTRUCTIONS_MIPS_H_ | 
| 8 | 8 | 
| 9 #ifndef VM_INSTRUCTIONS_H_ | 9 #ifndef VM_INSTRUCTIONS_H_ | 
| 10 #error Do not include instructions_mips.h directly; use instructions.h instead. | 10 #error Do not include instructions_mips.h directly; use instructions.h instead. | 
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 90   const ObjectPool& object_pool_; | 90   const ObjectPool& object_pool_; | 
| 91 | 91 | 
| 92   uword end_; | 92   uword end_; | 
| 93   intptr_t native_function_pool_index_; | 93   intptr_t native_function_pool_index_; | 
| 94   intptr_t target_code_pool_index_; | 94   intptr_t target_code_pool_index_; | 
| 95 | 95 | 
| 96   DISALLOW_COPY_AND_ASSIGN(NativeCallPattern); | 96   DISALLOW_COPY_AND_ASSIGN(NativeCallPattern); | 
| 97 }; | 97 }; | 
| 98 | 98 | 
| 99 | 99 | 
| 100 // Instance call that can switch from an IC call to a megamorphic call | 100 // Instance call that can switch between a direct monomorphic call, an IC call, | 
| 101 //   load ICData             load MegamorphicCache | 101 // and a megamorphic call. | 
| 102 //   call ICLookup stub  ->  call MegamorphicLookup stub | 102 //   load guarded cid            load ICData             load MegamorphicCache | 
| 103 //   call target             call target | 103 //   load monomorphic target <-> load ICLookup stub  ->  load MMLookup stub | 
|  | 104 //   call target.entry           call stub.entry         call stub.entry | 
| 104 class SwitchableCallPattern : public ValueObject { | 105 class SwitchableCallPattern : public ValueObject { | 
| 105  public: | 106  public: | 
| 106   SwitchableCallPattern(uword pc, const Code& code); | 107   SwitchableCallPattern(uword pc, const Code& code); | 
| 107 | 108 | 
| 108   RawObject* cache() const; | 109   RawObject* data() const; | 
| 109   void SetCache(const MegamorphicCache& cache) const; | 110   RawCode* target() const; | 
| 110   void SetLookupStub(const Code& stub) const; | 111   void SetData(const Object& data) const; | 
|  | 112   void SetTarget(const Code& target) const; | 
| 111 | 113 | 
| 112  private: | 114  private: | 
| 113   const ObjectPool& object_pool_; | 115   const ObjectPool& object_pool_; | 
| 114   intptr_t cache_pool_index_; | 116   intptr_t data_pool_index_; | 
| 115   intptr_t stub_pool_index_; | 117   intptr_t target_pool_index_; | 
| 116 | 118 | 
| 117   DISALLOW_COPY_AND_ASSIGN(SwitchableCallPattern); | 119   DISALLOW_COPY_AND_ASSIGN(SwitchableCallPattern); | 
| 118 }; | 120 }; | 
| 119 | 121 | 
| 120 | 122 | 
| 121 class ReturnPattern : public ValueObject { | 123 class ReturnPattern : public ValueObject { | 
| 122  public: | 124  public: | 
| 123   explicit ReturnPattern(uword pc); | 125   explicit ReturnPattern(uword pc); | 
| 124 | 126 | 
| 125   // jr(RA) = 1 | 127   // jr(RA) = 1 | 
| 126   static const int kLengthInBytes = 1 * Instr::kInstrSize; | 128   static const int kLengthInBytes = 1 * Instr::kInstrSize; | 
| 127 | 129 | 
| 128   int pattern_length_in_bytes() const { | 130   int pattern_length_in_bytes() const { | 
| 129     return kLengthInBytes; | 131     return kLengthInBytes; | 
| 130   } | 132   } | 
| 131 | 133 | 
| 132   bool IsValid() const; | 134   bool IsValid() const; | 
| 133 | 135 | 
| 134  private: | 136  private: | 
| 135   const uword pc_; | 137   const uword pc_; | 
| 136 }; | 138 }; | 
| 137 | 139 | 
| 138 }  // namespace dart | 140 }  // namespace dart | 
| 139 | 141 | 
| 140 #endif  // VM_INSTRUCTIONS_MIPS_H_ | 142 #endif  // VM_INSTRUCTIONS_MIPS_H_ | 
| OLD | NEW | 
|---|