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

Unified Diff: src/interpreter/bytecode-generator.h

Issue 1412683011: [Interpreter] Enable assignments in expressions. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase. Created 5 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: src/interpreter/bytecode-generator.h
diff --git a/src/interpreter/bytecode-generator.h b/src/interpreter/bytecode-generator.h
index 7284cfe9e18a41ae7454af1333872dcc7f59a922..cdaac481a72e7e0b79cd8f553c561647a033a487 100644
--- a/src/interpreter/bytecode-generator.h
+++ b/src/interpreter/bytecode-generator.h
@@ -36,6 +36,7 @@ class BytecodeGenerator : public AstVisitor {
class EffectResultScope;
class AccumulatorResultScope;
class RegisterResultScope;
+ class AssignmentHazardScope;
void MakeBytecodeBody();
Register NextContextRegister() const;
@@ -54,6 +55,9 @@ class BytecodeGenerator : public AstVisitor {
void VisitNot(UnaryOperation* expr);
void VisitDelete(UnaryOperation* expr);
+ // Used by flow control routines to evaluate loop condition.
+ void VisitCondition(Expression* expr);
rmcilroy 2015/11/05 16:34:51 Remove - no longer used.
+
// Helper visitors which perform common operations.
Register VisitArguments(ZoneList<Expression*>* arguments);
@@ -84,17 +88,12 @@ class BytecodeGenerator : public AstVisitor {
Register value_out);
void VisitForInAssignment(Expression* expr, FeedbackVectorSlot slot);
-
// Visitors for obtaining expression result in the accumulator, in a
// register, or just getting the effect.
void VisitForAccumulatorValue(Expression* expression);
MUST_USE_RESULT Register VisitForRegisterValue(Expression* expression);
void VisitForEffect(Expression* node);
- // Methods marking the start and end of binary expressions.
- void PrepareForBinaryExpression();
- void CompleteBinaryExpression();
-
// Methods for tracking and remapping register.
void RecordStoreToRegister(Register reg);
Register LoadFromAliasedRegister(Register reg);
@@ -122,6 +121,14 @@ class BytecodeGenerator : public AstVisitor {
}
ExpressionResultScope* execution_result() const { return execution_result_; }
+ inline void set_assignment_hazard_scope(
+ AssignmentHazardScope* assignment_hazard_scope) {
+ assignment_hazard_scope_ = assignment_hazard_scope;
+ }
+ inline AssignmentHazardScope* assignment_hazard_scope() const {
+ return assignment_hazard_scope_;
+ }
+
ZoneVector<Handle<Object>>* globals() { return &globals_; }
inline LanguageMode language_mode() const;
Strength language_mode_strength() const;
@@ -136,9 +143,7 @@ class BytecodeGenerator : public AstVisitor {
ControlScope* execution_control_;
ContextScope* execution_context_;
ExpressionResultScope* execution_result_;
-
- int binary_expression_depth_;
- ZoneSet<int> binary_expression_hazard_set_;
+ AssignmentHazardScope* assignment_hazard_scope_;
};
} // namespace interpreter

Powered by Google App Engine
This is Rietveld 408576698