| OLD | NEW | 
|    1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file |    1 // Copyright (c) 2012, 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  |    4  | 
|    5 #ifndef VM_ASSEMBLER_H_ |    5 #ifndef VM_ASSEMBLER_H_ | 
|    6 #define VM_ASSEMBLER_H_ |    6 #define VM_ASSEMBLER_H_ | 
|    7  |    7  | 
|    8 #include "platform/assert.h" |    8 #include "platform/assert.h" | 
|    9 #include "vm/allocation.h" |    9 #include "vm/allocation.h" | 
|   10 #include "vm/globals.h" |   10 #include "vm/globals.h" | 
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  280  |  280  | 
|  281  |  281  | 
|  282 enum Patchability { |  282 enum Patchability { | 
|  283   kPatchable, |  283   kPatchable, | 
|  284   kNotPatchable, |  284   kNotPatchable, | 
|  285 }; |  285 }; | 
|  286  |  286  | 
|  287  |  287  | 
|  288 class ObjectPoolWrapper : public ValueObject { |  288 class ObjectPoolWrapper : public ValueObject { | 
|  289  public: |  289  public: | 
|  290   intptr_t AddObject(const Object& obj); |  290   intptr_t AddObject(const Object& obj, | 
 |  291                      Patchability patchable = kNotPatchable); | 
|  291   intptr_t AddImmediate(uword imm); |  292   intptr_t AddImmediate(uword imm); | 
|  292   intptr_t AddExternalLabel(const ExternalLabel* label, |  293   intptr_t AddExternalLabel(const ExternalLabel* label, | 
|  293                             Patchability patchable); |  294                             Patchability patchable); | 
|  294  |  295  | 
|  295   intptr_t FindObject(const Object& obj); |  296   intptr_t FindObject(const Object& obj, | 
 |  297                       Patchability patchable = kNotPatchable); | 
|  296   intptr_t FindImmediate(uword imm); |  298   intptr_t FindImmediate(uword imm); | 
|  297   intptr_t FindExternalLabel(const ExternalLabel* label, |  299   intptr_t FindExternalLabel(const ExternalLabel* label, | 
|  298                              Patchability patchable); |  300                              Patchability patchable); | 
|  299   intptr_t FindNativeEntry(const ExternalLabel* label, |  301   intptr_t FindNativeEntry(const ExternalLabel* label, | 
|  300                            Patchability patchable); |  302                            Patchability patchable); | 
|  301  |  303  | 
|  302   RawObjectPool* MakeObjectPool(); |  304   RawObjectPool* MakeObjectPool(); | 
|  303  |  305  | 
|  304  private: |  306  private: | 
|  305   intptr_t AddObject(ObjectPool::Entry entry, Patchability patchable); |  307   intptr_t AddObject(ObjectPool::Entry entry, Patchability patchable); | 
|  306   intptr_t FindObject(ObjectPool::Entry entry, Patchability patchable); |  308   intptr_t FindObject(ObjectPool::Entry entry, Patchability patchable); | 
|  307  |  309  | 
|  308   // Objects and jump targets. |  310   // Objects and jump targets. | 
|  309   GrowableArray<ObjectPool::Entry> object_pool_; |  311   GrowableArray<ObjectPool::Entry> object_pool_; | 
|  310  |  312  | 
|  311   // Hashmap for fast lookup in object pool. |  313   // Hashmap for fast lookup in object pool. | 
|  312   DirectChainedHashMap<ObjIndexPair> object_pool_index_table_; |  314   DirectChainedHashMap<ObjIndexPair> object_pool_index_table_; | 
|  313 }; |  315 }; | 
|  314  |  316  | 
 |  317  | 
 |  318 enum RestorePP { | 
 |  319   kRestoreCallerPP, | 
 |  320   kKeepCalleePP | 
 |  321 }; | 
 |  322  | 
|  315 }  // namespace dart |  323 }  // namespace dart | 
|  316  |  324  | 
|  317  |  325  | 
|  318 #if defined(TARGET_ARCH_IA32) |  326 #if defined(TARGET_ARCH_IA32) | 
|  319 #include "vm/assembler_ia32.h" |  327 #include "vm/assembler_ia32.h" | 
|  320 #elif defined(TARGET_ARCH_X64) |  328 #elif defined(TARGET_ARCH_X64) | 
|  321 #include "vm/assembler_x64.h" |  329 #include "vm/assembler_x64.h" | 
|  322 #elif defined(TARGET_ARCH_ARM) |  330 #elif defined(TARGET_ARCH_ARM) | 
|  323 #include "vm/assembler_arm.h" |  331 #include "vm/assembler_arm.h" | 
|  324 #elif defined(TARGET_ARCH_ARM64) |  332 #elif defined(TARGET_ARCH_ARM64) | 
|  325 #include "vm/assembler_arm64.h" |  333 #include "vm/assembler_arm64.h" | 
|  326 #elif defined(TARGET_ARCH_MIPS) |  334 #elif defined(TARGET_ARCH_MIPS) | 
|  327 #include "vm/assembler_mips.h" |  335 #include "vm/assembler_mips.h" | 
|  328 #else |  336 #else | 
|  329 #error Unknown architecture. |  337 #error Unknown architecture. | 
|  330 #endif |  338 #endif | 
|  331  |  339  | 
|  332 #endif  // VM_ASSEMBLER_H_ |  340 #endif  // VM_ASSEMBLER_H_ | 
| OLD | NEW |