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

Side by Side Diff: runtime/vm/flow_graph_builder.h

Issue 1390153004: Move deopt_id and related helpers/definitions from Isolate to Thread (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 2 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
OLDNEW
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_FLOW_GRAPH_BUILDER_H_ 5 #ifndef VM_FLOW_GRAPH_BUILDER_H_
6 #define VM_FLOW_GRAPH_BUILDER_H_ 6 #define VM_FLOW_GRAPH_BUILDER_H_
7 7
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "platform/globals.h" 9 #include "platform/globals.h"
10 #include "vm/allocation.h" 10 #include "vm/allocation.h"
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 FlowGraph* caller_graph_; 117 FlowGraph* caller_graph_;
118 Definition* call_; 118 Definition* call_;
119 GrowableArray<Data> exits_; 119 GrowableArray<Data> exits_;
120 }; 120 };
121 121
122 122
123 // Build a flow graph from a parsed function's AST. 123 // Build a flow graph from a parsed function's AST.
124 class FlowGraphBuilder : public ValueObject { 124 class FlowGraphBuilder : public ValueObject {
125 public: 125 public:
126 // The inlining context is NULL if not inlining. The osr_id is the deopt 126 // The inlining context is NULL if not inlining. The osr_id is the deopt
127 // id of the OSR entry or Isolate::kNoDeoptId if not compiling for OSR. 127 // id of the OSR entry or Thread::kNoDeoptId if not compiling for OSR.
128 FlowGraphBuilder(const ParsedFunction& parsed_function, 128 FlowGraphBuilder(const ParsedFunction& parsed_function,
129 const ZoneGrowableArray<const ICData*>& ic_data_array, 129 const ZoneGrowableArray<const ICData*>& ic_data_array,
130 InlineExitCollector* exit_collector, 130 InlineExitCollector* exit_collector,
131 intptr_t osr_id); 131 intptr_t osr_id);
132 132
133 FlowGraph* BuildGraph(); 133 FlowGraph* BuildGraph();
134 134
135 const ParsedFunction& parsed_function() const { return parsed_function_; } 135 const ParsedFunction& parsed_function() const { return parsed_function_; }
136 const Function& function() const { return parsed_function_.function(); } 136 const Function& function() const { return parsed_function_.function(); }
137 const ZoneGrowableArray<const ICData*>& ic_data_array() const { 137 const ZoneGrowableArray<const ICData*>& ic_data_array() const {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 203
204 NestedStatement* nesting_stack() const { return nesting_stack_; } 204 NestedStatement* nesting_stack() const { return nesting_stack_; }
205 205
206 // When compiling for OSR, remove blocks that are not reachable from the 206 // When compiling for OSR, remove blocks that are not reachable from the
207 // OSR entry point. 207 // OSR entry point.
208 void PruneUnreachable(); 208 void PruneUnreachable();
209 209
210 // Returns address where the constant 'value' is stored or 0 if not found. 210 // Returns address where the constant 'value' is stored or 0 if not found.
211 static uword FindDoubleConstant(double value); 211 static uword FindDoubleConstant(double value);
212 212
213 Thread* thread() const { return parsed_function().thread(); }
213 Isolate* isolate() const { return parsed_function().isolate(); } 214 Isolate* isolate() const { return parsed_function().isolate(); }
214 Zone* zone() const { return parsed_function().zone(); } 215 Zone* zone() const { return parsed_function().zone(); }
215 216
216 private: 217 private:
217 friend class NestedStatement; // Explicit access to nesting_stack_. 218 friend class NestedStatement; // Explicit access to nesting_stack_.
218 friend class Intrinsifier; 219 friend class Intrinsifier;
219 220
220 intptr_t parameter_count() const { 221 intptr_t parameter_count() const {
221 return num_copied_params_ + num_non_copied_params_; 222 return num_copied_params_ + num_non_copied_params_;
222 } 223 }
(...skipping 17 matching lines...) Expand all
240 241
241 // The expression stack height. 242 // The expression stack height.
242 intptr_t temp_count_; 243 intptr_t temp_count_;
243 244
244 // Outgoing argument stack height. 245 // Outgoing argument stack height.
245 intptr_t args_pushed_; 246 intptr_t args_pushed_;
246 247
247 // A stack of enclosing nested statements. 248 // A stack of enclosing nested statements.
248 NestedStatement* nesting_stack_; 249 NestedStatement* nesting_stack_;
249 250
250 // The deopt id of the OSR entry or Isolate::kNoDeoptId if not compiling 251 // The deopt id of the OSR entry or Thread::kNoDeoptId if not compiling
251 // for OSR. 252 // for OSR.
252 const intptr_t osr_id_; 253 const intptr_t osr_id_;
253 254
254 intptr_t jump_count_; 255 intptr_t jump_count_;
255 ZoneGrowableArray<JoinEntryInstr*>* await_joins_; 256 ZoneGrowableArray<JoinEntryInstr*>* await_joins_;
256 257
257 DISALLOW_IMPLICIT_CONSTRUCTORS(FlowGraphBuilder); 258 DISALLOW_IMPLICIT_CONSTRUCTORS(FlowGraphBuilder);
258 }; 259 };
259 260
260 261
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 // Helpers for allocating and deallocating temporary locals on top of the 460 // Helpers for allocating and deallocating temporary locals on top of the
460 // expression stack. 461 // expression stack.
461 LocalVariable* EnterTempLocalScope(Value* value); 462 LocalVariable* EnterTempLocalScope(Value* value);
462 Definition* ExitTempLocalScope(LocalVariable* var); 463 Definition* ExitTempLocalScope(LocalVariable* var);
463 464
464 void BuildLetTempExpressions(LetNode* node); 465 void BuildLetTempExpressions(LetNode* node);
465 466
466 void BuildInstanceGetterConditional(InstanceGetterNode* node); 467 void BuildInstanceGetterConditional(InstanceGetterNode* node);
467 void BuildInstanceCallConditional(InstanceCallNode* node); 468 void BuildInstanceCallConditional(InstanceCallNode* node);
468 469
470 Thread* thread() const { return owner()->thread(); }
469 Isolate* isolate() const { return owner()->isolate(); } 471 Isolate* isolate() const { return owner()->isolate(); }
470 Zone* zone() const { return owner()->zone(); } 472 Zone* zone() const { return owner()->zone(); }
471 473
472 private: 474 private:
473 friend class TempLocalScope; // For ReturnDefinition. 475 friend class TempLocalScope; // For ReturnDefinition.
474 476
475 // Helper to drop the result value. 477 // Helper to drop the result value.
476 virtual void ReturnValue(Value* value) { 478 virtual void ReturnValue(Value* value) {
477 Do(new DropTempsInstr(0, value)); 479 Do(new DropTempsInstr(0, value));
478 } 480 }
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
600 // Output parameters. 602 // Output parameters.
601 GrowableArray<TargetEntryInstr**> true_successor_addresses_; 603 GrowableArray<TargetEntryInstr**> true_successor_addresses_;
602 GrowableArray<TargetEntryInstr**> false_successor_addresses_; 604 GrowableArray<TargetEntryInstr**> false_successor_addresses_;
603 605
604 intptr_t condition_token_pos_; 606 intptr_t condition_token_pos_;
605 }; 607 };
606 608
607 } // namespace dart 609 } // namespace dart
608 610
609 #endif // VM_FLOW_GRAPH_BUILDER_H_ 611 #endif // VM_FLOW_GRAPH_BUILDER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698