Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(191)

Side by Side Diff: src/data-flow.h

Issue 889003: Propagate reaching definitions to the instuctions of a block. (Closed)
Patch Set: Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/ast.cc ('k') | src/data-flow.cc » ('j') | src/data-flow.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 122
123 bool Equals(const BitVector& other) { 123 bool Equals(const BitVector& other) {
124 for (int i = 0; i < data_length_; i++) { 124 for (int i = 0; i < data_length_; i++) {
125 if (data_[i] != other.data_[i]) return false; 125 if (data_[i] != other.data_[i]) return false;
126 } 126 }
127 return true; 127 return true;
128 } 128 }
129 129
130 int length() const { return length_; } 130 int length() const { return length_; }
131 131
132 #ifdef DEBUG
133 void Print();
134 #endif
135
132 private: 136 private:
133 int length_; 137 int length_;
134 int data_length_; 138 int data_length_;
135 uint32_t* data_; 139 uint32_t* data_;
136 }; 140 };
137 141
138 142
139 // Simple fixed-capacity list-based worklist (managed as a queue) of 143 // Simple fixed-capacity list-based worklist (managed as a queue) of
140 // pointers to T. 144 // pointers to T.
141 template<typename T> 145 template<typename T>
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 int number() { return number_; } 232 int number() { return number_; }
229 void set_number(int number) { number_ = number; } 233 void set_number(int number) { number_ = number; }
230 234
231 // Functions used by data-flow analyses. 235 // Functions used by data-flow analyses.
232 virtual void InitializeReachingDefinitions(int definition_count, 236 virtual void InitializeReachingDefinitions(int definition_count,
233 List<BitVector*>* variables, 237 List<BitVector*>* variables,
234 WorkList<Node>* worklist, 238 WorkList<Node>* worklist,
235 bool mark); 239 bool mark);
236 virtual void ComputeRDOut(BitVector* result) = 0; 240 virtual void ComputeRDOut(BitVector* result) = 0;
237 virtual void UpdateRDIn(WorkList<Node>* worklist, bool mark) = 0; 241 virtual void UpdateRDIn(WorkList<Node>* worklist, bool mark) = 0;
242 virtual void PropagateReachingDefinitions(List<BitVector*>* variables);
238 243
239 #ifdef DEBUG 244 #ifdef DEBUG
240 void AssignNodeNumber(); 245 void AssignNodeNumber();
241 void PrintReachingDefinitions(); 246 void PrintReachingDefinitions();
242 virtual void PrintText() = 0; 247 virtual void PrintText() = 0;
243 #endif 248 #endif
244 249
245 protected: 250 protected:
246 ReachingDefinitionsData rd_; 251 ReachingDefinitionsData rd_;
247 252
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 void Traverse(bool mark, 322 void Traverse(bool mark,
318 ZoneList<Node*>* preorder, 323 ZoneList<Node*>* preorder,
319 ZoneList<Node*>* postorder); 324 ZoneList<Node*>* postorder);
320 325
321 void InitializeReachingDefinitions(int definition_count, 326 void InitializeReachingDefinitions(int definition_count,
322 List<BitVector*>* variables, 327 List<BitVector*>* variables,
323 WorkList<Node>* worklist, 328 WorkList<Node>* worklist,
324 bool mark); 329 bool mark);
325 void ComputeRDOut(BitVector* result); 330 void ComputeRDOut(BitVector* result);
326 void UpdateRDIn(WorkList<Node>* worklist, bool mark); 331 void UpdateRDIn(WorkList<Node>* worklist, bool mark);
332 void PropagateReachingDefinitions(List<BitVector*>* variables);
327 333
328 #ifdef DEBUG 334 #ifdef DEBUG
329 void PrintText(); 335 void PrintText();
330 #endif 336 #endif
331 337
332 private: 338 private:
333 Node* predecessor_; 339 Node* predecessor_;
334 Node* successor_; 340 Node* successor_;
335 ZoneList<AstNode*> instructions_; 341 ZoneList<AstNode*> instructions_;
336 342
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 List<BitVector*> variables_; 664 List<BitVector*> variables_;
659 665
660 DISALLOW_COPY_AND_ASSIGN(ReachingDefinitions); 666 DISALLOW_COPY_AND_ASSIGN(ReachingDefinitions);
661 }; 667 };
662 668
663 669
664 } } // namespace v8::internal 670 } } // namespace v8::internal
665 671
666 672
667 #endif // V8_DATAFLOW_H_ 673 #endif // V8_DATAFLOW_H_
OLDNEW
« no previous file with comments | « src/ast.cc ('k') | src/data-flow.cc » ('j') | src/data-flow.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698