OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 RUNTIME_VM_PRECOMPILER_H_ | 5 #ifndef RUNTIME_VM_PRECOMPILER_H_ |
6 #define RUNTIME_VM_PRECOMPILER_H_ | 6 #define RUNTIME_VM_PRECOMPILER_H_ |
7 | 7 |
8 #include "vm/allocation.h" | 8 #include "vm/allocation.h" |
9 #include "vm/hash_map.h" | 9 #include "vm/hash_map.h" |
10 #include "vm/hash_table.h" | 10 #include "vm/hash_table.h" |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 static inline intptr_t Hashcode(Key key) { return key->PcOffset(); } | 80 static inline intptr_t Hashcode(Key key) { return key->PcOffset(); } |
81 | 81 |
82 static inline bool IsKeyEqual(Pair pair, Key key) { | 82 static inline bool IsKeyEqual(Pair pair, Key key) { |
83 return pair->Equals(*key); | 83 return pair->Equals(*key); |
84 } | 84 } |
85 }; | 85 }; |
86 | 86 |
87 typedef DirectChainedHashMap<StackMapKeyValueTrait> StackMapSet; | 87 typedef DirectChainedHashMap<StackMapKeyValueTrait> StackMapSet; |
88 | 88 |
89 | 89 |
| 90 class CodeSourceMapKeyValueTrait { |
| 91 public: |
| 92 // Typedefs needed for the DirectChainedHashMap template. |
| 93 typedef const CodeSourceMap* Key; |
| 94 typedef const CodeSourceMap* Value; |
| 95 typedef const CodeSourceMap* Pair; |
| 96 |
| 97 static Key KeyOf(Pair kv) { return kv; } |
| 98 |
| 99 static Value ValueOf(Pair kv) { return kv; } |
| 100 |
| 101 static inline intptr_t Hashcode(Key key) { return key->Length(); } |
| 102 |
| 103 static inline bool IsKeyEqual(Pair pair, Key key) { |
| 104 return pair->Equals(*key); |
| 105 } |
| 106 }; |
| 107 |
| 108 typedef DirectChainedHashMap<CodeSourceMapKeyValueTrait> CodeSourceMapSet; |
| 109 |
| 110 |
90 class ArrayKeyValueTrait { | 111 class ArrayKeyValueTrait { |
91 public: | 112 public: |
92 // Typedefs needed for the DirectChainedHashMap template. | 113 // Typedefs needed for the DirectChainedHashMap template. |
93 typedef const Array* Key; | 114 typedef const Array* Key; |
94 typedef const Array* Value; | 115 typedef const Array* Value; |
95 typedef const Array* Pair; | 116 typedef const Array* Pair; |
96 | 117 |
97 static Key KeyOf(Pair kv) { return kv; } | 118 static Key KeyOf(Pair kv) { return kv; } |
98 | 119 |
99 static Value ValueOf(Pair kv) { return kv; } | 120 static Value ValueOf(Pair kv) { return kv; } |
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
454 void DropTypes(); | 475 void DropTypes(); |
455 void DropTypeArguments(); | 476 void DropTypeArguments(); |
456 void DropScriptData(); | 477 void DropScriptData(); |
457 void DropClasses(); | 478 void DropClasses(); |
458 void DropLibraries(); | 479 void DropLibraries(); |
459 | 480 |
460 void BindStaticCalls(); | 481 void BindStaticCalls(); |
461 void SwitchICCalls(); | 482 void SwitchICCalls(); |
462 void ShareMegamorphicBuckets(); | 483 void ShareMegamorphicBuckets(); |
463 void DedupStackMaps(); | 484 void DedupStackMaps(); |
| 485 void DedupCodeSourceMaps(); |
464 void DedupLists(); | 486 void DedupLists(); |
465 void DedupInstructions(); | 487 void DedupInstructions(); |
466 void ResetPrecompilerState(); | 488 void ResetPrecompilerState(); |
467 | 489 |
468 void CollectDynamicFunctionNames(); | 490 void CollectDynamicFunctionNames(); |
469 | 491 |
470 void PrecompileStaticInitializers(); | 492 void PrecompileStaticInitializers(); |
471 void PrecompileConstructors(); | 493 void PrecompileConstructors(); |
472 | 494 |
473 void FinalizeAllClasses(); | 495 void FinalizeAllClasses(); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
543 } | 565 } |
544 static RawObject* NewKey(const Function& function) { return function.raw(); } | 566 static RawObject* NewKey(const Function& function) { return function.raw(); } |
545 }; | 567 }; |
546 | 568 |
547 typedef UnorderedHashSet<FunctionsTraits> UniqueFunctionsSet; | 569 typedef UnorderedHashSet<FunctionsTraits> UniqueFunctionsSet; |
548 | 570 |
549 | 571 |
550 } // namespace dart | 572 } // namespace dart |
551 | 573 |
552 #endif // RUNTIME_VM_PRECOMPILER_H_ | 574 #endif // RUNTIME_VM_PRECOMPILER_H_ |
OLD | NEW |