OLD | NEW |
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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_KERNEL_BINARY_FLOWGRAPH_H_ | 5 #ifndef RUNTIME_VM_KERNEL_BINARY_FLOWGRAPH_H_ |
6 #define RUNTIME_VM_KERNEL_BINARY_FLOWGRAPH_H_ | 6 #define RUNTIME_VM_KERNEL_BINARY_FLOWGRAPH_H_ |
7 | 7 |
8 #if !defined(DART_PRECOMPILED_RUNTIME) | 8 #if !defined(DART_PRECOMPILED_RUNTIME) |
9 | 9 |
10 #include <map> | 10 #include <map> |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 void ReadUntilExcluding(Field field); | 112 void ReadUntilExcluding(Field field); |
113 | 113 |
114 void SetNext(Field field) { next_read_ = field; } | 114 void SetNext(Field field) { next_read_ = field; } |
115 void SetJustRead(Field field) { next_read_ = field + 1; } | 115 void SetJustRead(Field field) { next_read_ = field + 1; } |
116 | 116 |
117 bool IsConst() { return (flags_ & kConst) != 0; } | 117 bool IsConst() { return (flags_ & kConst) != 0; } |
118 bool IsFinal() { return (flags_ & kFinal) != 0; } | 118 bool IsFinal() { return (flags_ & kFinal) != 0; } |
119 | 119 |
120 TokenPosition position_; | 120 TokenPosition position_; |
121 TokenPosition equals_position_; | 121 TokenPosition equals_position_; |
122 word flags_; | 122 uint8_t flags_; |
123 StringIndex name_index_; | 123 StringIndex name_index_; |
124 | 124 |
125 private: | 125 private: |
126 StreamingFlowGraphBuilder* builder_; | 126 StreamingFlowGraphBuilder* builder_; |
127 intptr_t next_read_; | 127 intptr_t next_read_; |
128 }; | 128 }; |
129 | 129 |
130 // Helper class that reads a kernel Field from binary. | 130 // Helper class that reads a kernel Field from binary. |
131 // | 131 // |
132 // Use ReadUntilExcluding to read up to but not including a field. | 132 // Use ReadUntilExcluding to read up to but not including a field. |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 if (has_function_literal_initializer_) { | 183 if (has_function_literal_initializer_) { |
184 *start = function_literal_start_; | 184 *start = function_literal_start_; |
185 *end = function_literal_end_; | 185 *end = function_literal_end_; |
186 } | 186 } |
187 return has_function_literal_initializer_; | 187 return has_function_literal_initializer_; |
188 } | 188 } |
189 | 189 |
190 NameIndex canonical_name_; | 190 NameIndex canonical_name_; |
191 TokenPosition position_; | 191 TokenPosition position_; |
192 TokenPosition end_position_; | 192 TokenPosition end_position_; |
193 word flags_; | 193 uint8_t flags_; |
194 intptr_t source_uri_index_; | 194 intptr_t source_uri_index_; |
195 intptr_t annotation_count_; | 195 intptr_t annotation_count_; |
196 | 196 |
197 private: | 197 private: |
198 StreamingFlowGraphBuilder* builder_; | 198 StreamingFlowGraphBuilder* builder_; |
199 intptr_t next_read_; | 199 intptr_t next_read_; |
200 | 200 |
201 bool has_function_literal_initializer_; | 201 bool has_function_literal_initializer_; |
202 TokenPosition function_literal_start_; | 202 TokenPosition function_literal_start_; |
203 TokenPosition function_literal_end_; | 203 TokenPosition function_literal_end_; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 | 258 |
259 bool IsStatic() { return (flags_ & kStatic) != 0; } | 259 bool IsStatic() { return (flags_ & kStatic) != 0; } |
260 bool IsAbstract() { return (flags_ & kAbstract) != 0; } | 260 bool IsAbstract() { return (flags_ & kAbstract) != 0; } |
261 bool IsExternal() { return (flags_ & kExternal) != 0; } | 261 bool IsExternal() { return (flags_ & kExternal) != 0; } |
262 bool IsConst() { return (flags_ & kConst) != 0; } | 262 bool IsConst() { return (flags_ & kConst) != 0; } |
263 | 263 |
264 NameIndex canonical_name_; | 264 NameIndex canonical_name_; |
265 TokenPosition position_; | 265 TokenPosition position_; |
266 TokenPosition end_position_; | 266 TokenPosition end_position_; |
267 Kind kind_; | 267 Kind kind_; |
268 word flags_; | 268 uint8_t flags_; |
269 intptr_t source_uri_index_; | 269 intptr_t source_uri_index_; |
270 intptr_t annotation_count_; | 270 intptr_t annotation_count_; |
271 | 271 |
272 private: | 272 private: |
273 StreamingFlowGraphBuilder* builder_; | 273 StreamingFlowGraphBuilder* builder_; |
274 intptr_t next_read_; | 274 intptr_t next_read_; |
275 }; | 275 }; |
276 | 276 |
277 // Helper class that reads a kernel Constructor from binary. | 277 // Helper class that reads a kernel Constructor from binary. |
278 // | 278 // |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
315 | 315 |
316 void SetNext(Field field) { next_read_ = field; } | 316 void SetNext(Field field) { next_read_ = field; } |
317 void SetJustRead(Field field) { next_read_ = field + 1; } | 317 void SetJustRead(Field field) { next_read_ = field + 1; } |
318 | 318 |
319 bool IsExternal() { return (flags_ & kExternal) != 0; } | 319 bool IsExternal() { return (flags_ & kExternal) != 0; } |
320 bool IsConst() { return (flags_ & kConst) != 0; } | 320 bool IsConst() { return (flags_ & kConst) != 0; } |
321 | 321 |
322 NameIndex canonical_name_; | 322 NameIndex canonical_name_; |
323 TokenPosition position_; | 323 TokenPosition position_; |
324 TokenPosition end_position_; | 324 TokenPosition end_position_; |
325 word flags_; | 325 uint8_t flags_; |
326 intptr_t annotation_count_; | 326 intptr_t annotation_count_; |
327 | 327 |
328 private: | 328 private: |
329 StreamingFlowGraphBuilder* builder_; | 329 StreamingFlowGraphBuilder* builder_; |
330 intptr_t next_read_; | 330 intptr_t next_read_; |
331 }; | 331 }; |
332 | 332 |
333 // Helper class that reads a kernel Class from binary. | 333 // Helper class that reads a kernel Class from binary. |
334 // | 334 // |
335 // Use ReadUntilExcluding to read up to but not including a field. | 335 // Use ReadUntilExcluding to read up to but not including a field. |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
403 kAnnotations, | 403 kAnnotations, |
404 kDependencies, | 404 kDependencies, |
405 kParts, | 405 kParts, |
406 kTypedefs, | 406 kTypedefs, |
407 kClasses, | 407 kClasses, |
408 kToplevelField, | 408 kToplevelField, |
409 kToplevelProcedures, | 409 kToplevelProcedures, |
410 kEnd, | 410 kEnd, |
411 }; | 411 }; |
412 | 412 |
| 413 enum Flag { |
| 414 kExternal = 1, |
| 415 }; |
| 416 |
413 explicit LibraryHelper(StreamingFlowGraphBuilder* builder) { | 417 explicit LibraryHelper(StreamingFlowGraphBuilder* builder) { |
414 builder_ = builder; | 418 builder_ = builder; |
415 next_read_ = kFlags; | 419 next_read_ = kFlags; |
416 } | 420 } |
417 | 421 |
418 void ReadUntilIncluding(Field field) { | 422 void ReadUntilIncluding(Field field) { |
419 ReadUntilExcluding(static_cast<Field>(static_cast<int>(field) + 1)); | 423 ReadUntilExcluding(static_cast<Field>(static_cast<int>(field) + 1)); |
420 } | 424 } |
421 | 425 |
422 void ReadUntilExcluding(Field field); | 426 void ReadUntilExcluding(Field field); |
423 | 427 |
424 void SetNext(Field field) { next_read_ = field; } | 428 void SetNext(Field field) { next_read_ = field; } |
425 void SetJustRead(Field field) { next_read_ = field + 1; } | 429 void SetJustRead(Field field) { next_read_ = field + 1; } |
426 | 430 |
| 431 bool IsExternal() const { return (flags_ & kExternal) != 0; } |
| 432 |
| 433 uint8_t flags_; |
427 NameIndex canonical_name_; | 434 NameIndex canonical_name_; |
428 StringIndex name_index_; | 435 StringIndex name_index_; |
429 intptr_t source_uri_index_; | 436 intptr_t source_uri_index_; |
430 | 437 |
431 private: | 438 private: |
432 StreamingFlowGraphBuilder* builder_; | 439 StreamingFlowGraphBuilder* builder_; |
433 intptr_t next_read_; | 440 intptr_t next_read_; |
434 }; | 441 }; |
435 | 442 |
436 class StreamingDartTypeTranslator { | 443 class StreamingDartTypeTranslator { |
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
830 void SkipVariableDeclaration(); | 837 void SkipVariableDeclaration(); |
831 void SkipLibraryCombinator(); | 838 void SkipLibraryCombinator(); |
832 void SkipLibraryDependency(); | 839 void SkipLibraryDependency(); |
833 void SkipLibraryPart(); | 840 void SkipLibraryPart(); |
834 void SkipLibraryTypedef(); | 841 void SkipLibraryTypedef(); |
835 TokenPosition ReadPosition(bool record = true); | 842 TokenPosition ReadPosition(bool record = true); |
836 void record_token_position(TokenPosition position); | 843 void record_token_position(TokenPosition position); |
837 void record_yield_position(TokenPosition position); | 844 void record_yield_position(TokenPosition position); |
838 Tag ReadTag(uint8_t* payload = NULL); | 845 Tag ReadTag(uint8_t* payload = NULL); |
839 Tag PeekTag(uint8_t* payload = NULL); | 846 Tag PeekTag(uint8_t* payload = NULL); |
840 word ReadFlags(); | 847 uint8_t ReadFlags() { return reader_->ReadFlags(); } |
841 | 848 |
842 void loop_depth_inc(); | 849 void loop_depth_inc(); |
843 void loop_depth_dec(); | 850 void loop_depth_dec(); |
844 intptr_t for_in_depth(); | 851 intptr_t for_in_depth(); |
845 void for_in_depth_inc(); | 852 void for_in_depth_inc(); |
846 void for_in_depth_dec(); | 853 void for_in_depth_dec(); |
847 void catch_depth_inc(); | 854 void catch_depth_inc(); |
848 void catch_depth_dec(); | 855 void catch_depth_dec(); |
849 void try_depth_inc(); | 856 void try_depth_inc(); |
850 void try_depth_dec(); | 857 void try_depth_dec(); |
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1122 const uint8_t* saved_raw_buffer_; | 1129 const uint8_t* saved_raw_buffer_; |
1123 const TypedData* saved_typed_data_; | 1130 const TypedData* saved_typed_data_; |
1124 intptr_t saved_offset_; | 1131 intptr_t saved_offset_; |
1125 }; | 1132 }; |
1126 | 1133 |
1127 } // namespace kernel | 1134 } // namespace kernel |
1128 } // namespace dart | 1135 } // namespace dart |
1129 | 1136 |
1130 #endif // !defined(DART_PRECOMPILED_RUNTIME) | 1137 #endif // !defined(DART_PRECOMPILED_RUNTIME) |
1131 #endif // RUNTIME_VM_KERNEL_BINARY_FLOWGRAPH_H_ | 1138 #endif // RUNTIME_VM_KERNEL_BINARY_FLOWGRAPH_H_ |
OLD | NEW |