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

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: Additional tests for conditional expressions. 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 66dd1e3c1c2797afa79db8f86f0b6bc449e809d7..020b0a81c1b99173f623de89ca76dedea963d6ce 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 StatementResultScope;
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/03 14:17:52 Should this be VisitForCondition or VisitForTest (
oth 2015/11/04 10:03:36 Removed from latest revision as no longer need to
+
// Helper visitors which perform common operations.
Register VisitArguments(ZoneList<Expression*>* arguments);
@@ -80,7 +84,7 @@ class BytecodeGenerator : public AstVisitor {
ObjectLiteralProperty* property,
Register value_out);
void VisitForInAssignment(Expression* expr, FeedbackVectorSlot slot);
-
+ void VisitExpressionStatementExpression(Expression* expr);
rmcilroy 2015/11/03 14:17:52 Unused?
oth 2015/11/04 10:03:37 Done.
// Visitors for obtaining expression result in the accumulator, in a
// register, or just getting the effect.
@@ -88,10 +92,6 @@ class BytecodeGenerator : public AstVisitor {
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);
@@ -119,6 +119,14 @@ class BytecodeGenerator : public AstVisitor {
}
ExpressionResultScope* execution_result() const { return execution_result_; }
+ inline void set_statement_execution_result(
+ StatementResultScope* statement_execution_result) {
+ statement_execution_result_ = statement_execution_result;
+ }
+ inline StatementResultScope* statement_execution_result() const {
+ return statement_execution_result_;
+ }
+
ZoneVector<Handle<Object>>* globals() { return &globals_; }
inline LanguageMode language_mode() const;
Strength language_mode_strength() const;
@@ -133,9 +141,7 @@ class BytecodeGenerator : public AstVisitor {
ControlScope* execution_control_;
ContextScope* execution_context_;
ExpressionResultScope* execution_result_;
-
- int binary_expression_depth_;
- ZoneSet<int> binary_expression_hazard_set_;
+ StatementResultScope* statement_execution_result_;
};
} // namespace interpreter

Powered by Google App Engine
This is Rietveld 408576698