| 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 VM_PRECOMPILER_H_ | 5 #ifndef VM_PRECOMPILER_H_ | 
| 6 #define VM_PRECOMPILER_H_ | 6 #define 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/object.h" | 10 #include "vm/object.h" | 
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 57     return key->PcOffset(); | 57     return key->PcOffset(); | 
| 58   } | 58   } | 
| 59 | 59 | 
| 60   static inline bool IsKeyEqual(Pair pair, Key key) { | 60   static inline bool IsKeyEqual(Pair pair, Key key) { | 
| 61     return pair->Equals(*key); | 61     return pair->Equals(*key); | 
| 62   } | 62   } | 
| 63 }; | 63 }; | 
| 64 | 64 | 
| 65 typedef DirectChainedHashMap<StackmapKeyValueTrait> StackmapSet; | 65 typedef DirectChainedHashMap<StackmapKeyValueTrait> StackmapSet; | 
| 66 | 66 | 
|  | 67 class FunctionKeyValueTrait { | 
|  | 68  public: | 
|  | 69   // Typedefs needed for the DirectChainedHashMap template. | 
|  | 70   typedef const Function* Key; | 
|  | 71   typedef const Function* Value; | 
|  | 72   typedef const Function* Pair; | 
|  | 73 | 
|  | 74   static Key KeyOf(Pair kv) { return kv; } | 
|  | 75 | 
|  | 76   static Value ValueOf(Pair kv) { return kv; } | 
|  | 77 | 
|  | 78   static inline intptr_t Hashcode(Key key) { | 
|  | 79     return key->token_pos(); | 
|  | 80   } | 
|  | 81 | 
|  | 82   static inline bool IsKeyEqual(Pair pair, Key key) { | 
|  | 83     return pair->raw() == key->raw(); | 
|  | 84   } | 
|  | 85 }; | 
|  | 86 | 
|  | 87 typedef DirectChainedHashMap<FunctionKeyValueTrait> FunctionSet; | 
|  | 88 | 
| 67 | 89 | 
| 68 class Precompiler : public ValueObject { | 90 class Precompiler : public ValueObject { | 
| 69  public: | 91  public: | 
| 70   static RawError* CompileAll( | 92   static RawError* CompileAll( | 
| 71       Dart_QualifiedFunctionName embedder_entry_points[], | 93       Dart_QualifiedFunctionName embedder_entry_points[], | 
| 72       bool reset_fields); | 94       bool reset_fields); | 
| 73 | 95 | 
| 74  private: | 96  private: | 
| 75   Precompiler(Thread* thread, bool reset_fields); | 97   Precompiler(Thread* thread, bool reset_fields); | 
| 76 | 98 | 
| 77   void DoCompileAll(Dart_QualifiedFunctionName embedder_entry_points[]); | 99   void DoCompileAll(Dart_QualifiedFunctionName embedder_entry_points[]); | 
| 78   void ClearAllCode(); | 100   void ClearAllCode(); | 
| 79   void AddRoots(Dart_QualifiedFunctionName embedder_entry_points[]); | 101   void AddRoots(Dart_QualifiedFunctionName embedder_entry_points[]); | 
| 80   void AddEntryPoints(Dart_QualifiedFunctionName entry_points[]); | 102   void AddEntryPoints(Dart_QualifiedFunctionName entry_points[]); | 
| 81   void Iterate(); | 103   void Iterate(); | 
| 82   void CleanUp(); |  | 
| 83 | 104 | 
| 84   void AddCalleesOf(const Function& function); | 105   void AddCalleesOf(const Function& function); | 
|  | 106   void AddConstObject(const Instance& instance); | 
| 85   void AddClosureCall(const ICData& call_site); | 107   void AddClosureCall(const ICData& call_site); | 
| 86   void AddField(const Field& field); | 108   void AddField(const Field& field); | 
| 87   void AddFunction(const Function& function); | 109   void AddFunction(const Function& function); | 
| 88   void AddClass(const Class& cls); | 110   void AddClass(const Class& cls); | 
| 89   void AddSelector(const String& selector); | 111   void AddSelector(const String& selector); | 
| 90   bool IsSent(const String& selector); | 112   bool IsSent(const String& selector); | 
| 91 | 113 | 
| 92   void ProcessFunction(const Function& function); | 114   void ProcessFunction(const Function& function); | 
| 93   void CheckForNewDynamicFunctions(); | 115   void CheckForNewDynamicFunctions(); | 
| 94 | 116 | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 117   const bool reset_fields_; | 139   const bool reset_fields_; | 
| 118 | 140 | 
| 119   bool changed_; | 141   bool changed_; | 
| 120   intptr_t function_count_; | 142   intptr_t function_count_; | 
| 121   intptr_t class_count_; | 143   intptr_t class_count_; | 
| 122   intptr_t selector_count_; | 144   intptr_t selector_count_; | 
| 123   intptr_t dropped_function_count_; | 145   intptr_t dropped_function_count_; | 
| 124 | 146 | 
| 125   const GrowableObjectArray& libraries_; | 147   const GrowableObjectArray& libraries_; | 
| 126   const GrowableObjectArray& pending_functions_; | 148   const GrowableObjectArray& pending_functions_; | 
| 127   const GrowableObjectArray& collected_closures_; |  | 
| 128   SymbolSet sent_selectors_; | 149   SymbolSet sent_selectors_; | 
|  | 150   FunctionSet enqueued_functions_; | 
| 129   Error& error_; | 151   Error& error_; | 
| 130 }; | 152 }; | 
| 131 | 153 | 
| 132 }  // namespace dart | 154 }  // namespace dart | 
| 133 | 155 | 
| 134 #endif  // VM_PRECOMPILER_H_ | 156 #endif  // VM_PRECOMPILER_H_ | 
| OLD | NEW | 
|---|