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

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

Issue 2557173004: [Interpreter] Allocate registers used as call arguments on-demand. (Closed)
Patch Set: Fix release build unused variable Created 4 years 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
« no previous file with comments | « no previous file | src/interpreter/bytecode-generator.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/interpreter/bytecode-generator.h
diff --git a/src/interpreter/bytecode-generator.h b/src/interpreter/bytecode-generator.h
index 41c529218fd5831c4222ba4b21db6ced580f86bf..fa86489f2dcb925d893734e54cdda61bb37f6ebb 100644
--- a/src/interpreter/bytecode-generator.h
+++ b/src/interpreter/bytecode-generator.h
@@ -72,10 +72,9 @@ class BytecodeGenerator final : public AstVisitor<BytecodeGenerator> {
// Used by flow control routines to evaluate loop condition.
void VisitCondition(Expression* expr);
- // Visit the arguments expressions in |args| and store them in |args_regs|
- // starting at register |first_argument_register| in the list.
- void VisitArguments(ZoneList<Expression*>* args, RegisterList arg_regs,
- size_t first_argument_register = 0);
+ // Visit the arguments expressions in |args| and store them in |args_regs|,
+ // growing |args_regs| for each argument visited.
+ void VisitArguments(ZoneList<Expression*>* args, RegisterList* arg_regs);
// Visit a keyed super property load. The optional
// |opt_receiver_out| register will have the receiver stored to it
@@ -92,7 +91,8 @@ class BytecodeGenerator final : public AstVisitor<BytecodeGenerator> {
Register opt_receiver_out);
void VisitPropertyLoad(Register obj, Property* expr);
- void VisitPropertyLoadForAccumulator(Register obj, Property* expr);
+ void VisitPropertyLoadForRegister(Register obj, Property* expr,
+ Register destination);
void BuildVariableLoad(Variable* variable, FeedbackVectorSlot slot,
HoleCheckMode hole_check_mode,
@@ -153,12 +153,15 @@ class BytecodeGenerator final : public AstVisitor<BytecodeGenerator> {
// Visit a statement and switch scopes, the context is in the accumulator.
void VisitInScope(Statement* stmt, Scope* scope);
+ void BuildPushUndefinedIntoRegisterList(RegisterList* reg_list);
+
// Visitors for obtaining expression result in the accumulator, in a
// register, or just getting the effect.
void VisitForAccumulatorValue(Expression* expr);
void VisitForAccumulatorValueOrTheHole(Expression* expr);
MUST_USE_RESULT Register VisitForRegisterValue(Expression* expr);
void VisitForRegisterValue(Expression* expr, Register destination);
+ void VisitAndPushIntoRegisterList(Expression* expr, RegisterList* reg_list);
void VisitForEffect(Expression* expr);
void VisitForTest(Expression* expr, BytecodeLabels* then_labels,
BytecodeLabels* else_labels, TestFallthrough fallthrough);
« no previous file with comments | « no previous file | src/interpreter/bytecode-generator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698