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

Side by Side Diff: src/compiler/bytecode-graph-builder.h

Issue 1644103002: [interpreter] Move BytecodeGraphBuilder::Environment. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@local_interpreter-cleanup-graph-builder-iterator
Patch Set: Rebased. Created 4 years, 10 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 | « no previous file | src/compiler/bytecode-graph-builder.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_COMPILER_BYTECODE_GRAPH_BUILDER_H_ 5 #ifndef V8_COMPILER_BYTECODE_GRAPH_BUILDER_H_
6 #define V8_COMPILER_BYTECODE_GRAPH_BUILDER_H_ 6 #define V8_COMPILER_BYTECODE_GRAPH_BUILDER_H_
7 7
8 #include "src/compiler.h" 8 #include "src/compiler.h"
9 #include "src/compiler/bytecode-branch-analysis.h" 9 #include "src/compiler/bytecode-branch-analysis.h"
10 #include "src/compiler/js-graph.h" 10 #include "src/compiler/js-graph.h"
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 272
273 // Optimization to cache loaded feedback vector. 273 // Optimization to cache loaded feedback vector.
274 SetOncePointer<Node> feedback_vector_; 274 SetOncePointer<Node> feedback_vector_;
275 275
276 // Control nodes that exit the function body. 276 // Control nodes that exit the function body.
277 ZoneVector<Node*> exit_controls_; 277 ZoneVector<Node*> exit_controls_;
278 278
279 DISALLOW_COPY_AND_ASSIGN(BytecodeGraphBuilder); 279 DISALLOW_COPY_AND_ASSIGN(BytecodeGraphBuilder);
280 }; 280 };
281 281
282
283 class BytecodeGraphBuilder::Environment : public ZoneObject {
284 public:
285 Environment(BytecodeGraphBuilder* builder, int register_count,
286 int parameter_count, Node* control_dependency, Node* context);
287
288 int parameter_count() const { return parameter_count_; }
289 int register_count() const { return register_count_; }
290
291 Node* LookupAccumulator() const;
292 Node* LookupRegister(interpreter::Register the_register) const;
293
294 void ExchangeRegisters(interpreter::Register reg0,
295 interpreter::Register reg1);
296
297 void BindAccumulator(Node* node, FrameStateBeforeAndAfter* states = nullptr);
298 void BindRegister(interpreter::Register the_register, Node* node,
299 FrameStateBeforeAndAfter* states = nullptr);
300 void BindRegistersToProjections(interpreter::Register first_reg, Node* node,
301 FrameStateBeforeAndAfter* states = nullptr);
302 void RecordAfterState(Node* node, FrameStateBeforeAndAfter* states);
303
304 bool IsMarkedAsUnreachable() const;
305 void MarkAsUnreachable();
306
307 // Effect dependency tracked by this environment.
308 Node* GetEffectDependency() { return effect_dependency_; }
309 void UpdateEffectDependency(Node* dependency) {
310 effect_dependency_ = dependency;
311 }
312
313 // Preserve a checkpoint of the environment for the IR graph. Any
314 // further mutation of the environment will not affect checkpoints.
315 Node* Checkpoint(BailoutId bytecode_offset, OutputFrameStateCombine combine);
316
317 // Returns true if the state values are up to date with the current
318 // environment.
319 bool StateValuesAreUpToDate(int output_poke_offset, int output_poke_count);
320
321 // Control dependency tracked by this environment.
322 Node* GetControlDependency() const { return control_dependency_; }
323 void UpdateControlDependency(Node* dependency) {
324 control_dependency_ = dependency;
325 }
326
327 Node* Context() const { return context_; }
328 void SetContext(Node* new_context) { context_ = new_context; }
329
330 Environment* CopyForConditional() const;
331 Environment* CopyForLoop();
332 void Merge(Environment* other);
333
334 private:
335 explicit Environment(const Environment* copy);
336 void PrepareForLoop();
337 bool StateValuesAreUpToDate(Node** state_values, int offset, int count,
338 int output_poke_start, int output_poke_end);
339 bool StateValuesRequireUpdate(Node** state_values, int offset, int count);
340 void UpdateStateValues(Node** state_values, int offset, int count);
341
342 int RegisterToValuesIndex(interpreter::Register the_register) const;
343
344 Zone* zone() const { return builder_->local_zone(); }
345 Graph* graph() const { return builder_->graph(); }
346 CommonOperatorBuilder* common() const { return builder_->common(); }
347 BytecodeGraphBuilder* builder() const { return builder_; }
348 const NodeVector* values() const { return &values_; }
349 NodeVector* values() { return &values_; }
350 int register_base() const { return register_base_; }
351 int accumulator_base() const { return accumulator_base_; }
352
353 BytecodeGraphBuilder* builder_;
354 int register_count_;
355 int parameter_count_;
356 Node* context_;
357 Node* control_dependency_;
358 Node* effect_dependency_;
359 NodeVector values_;
360 Node* parameters_state_values_;
361 Node* registers_state_values_;
362 Node* accumulator_state_values_;
363 int register_base_;
364 int accumulator_base_;
365 };
366
367 } // namespace compiler 282 } // namespace compiler
368 } // namespace internal 283 } // namespace internal
369 } // namespace v8 284 } // namespace v8
370 285
371 #endif // V8_COMPILER_BYTECODE_GRAPH_BUILDER_H_ 286 #endif // V8_COMPILER_BYTECODE_GRAPH_BUILDER_H_
OLDNEW
« no previous file with comments | « no previous file | src/compiler/bytecode-graph-builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698