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

Side by Side Diff: src/full-codegen.h

Issue 919703003: WIP: Implement ES6 Spread-calls (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Flag calls as spread calls in parser, error on spread intrinsics/construct calls Created 5 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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_FULL_CODEGEN_H_ 5 #ifndef V8_FULL_CODEGEN_H_
6 #define V8_FULL_CODEGEN_H_ 6 #define V8_FULL_CODEGEN_H_
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/allocation.h" 10 #include "src/allocation.h"
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 // An operand used to read/write a stack-allocated (PARAMETER or LOCAL) 364 // An operand used to read/write a stack-allocated (PARAMETER or LOCAL)
365 // variable. Writing does not need the write barrier. 365 // variable. Writing does not need the write barrier.
366 MemOperand StackOperand(Variable* var); 366 MemOperand StackOperand(Variable* var);
367 367
368 // An operand used to read/write a known (PARAMETER, LOCAL, or CONTEXT) 368 // An operand used to read/write a known (PARAMETER, LOCAL, or CONTEXT)
369 // variable. May emit code to traverse the context chain, loading the 369 // variable. May emit code to traverse the context chain, loading the
370 // found context into the scratch register. Writing to this operand will 370 // found context into the scratch register. Writing to this operand will
371 // need the write barrier if location is CONTEXT. 371 // need the write barrier if location is CONTEXT.
372 MemOperand VarOperand(Variable* var, Register scratch); 372 MemOperand VarOperand(Variable* var, Register scratch);
373 373
374 // Special visitor for a spread argument, will update a scratch register with
375 // total parameter count, and push each spread value from left to right onto
376 // the stack.
377 void DoSpreadArgument(SpreadOperation* expr, Register arg_count);
378
379
374 void VisitForEffect(Expression* expr) { 380 void VisitForEffect(Expression* expr) {
375 EffectContext context(this); 381 EffectContext context(this);
376 Visit(expr); 382 Visit(expr);
377 PrepareForBailout(expr, NO_REGISTERS); 383 PrepareForBailout(expr, NO_REGISTERS);
378 } 384 }
379 385
380 void VisitForAccumulatorValue(Expression* expr) { 386 void VisitForAccumulatorValue(Expression* expr) {
381 AccumulatorValueContext context(this); 387 AccumulatorValueContext context(this);
382 Visit(expr); 388 Visit(expr);
383 PrepareForBailout(expr, TOS_REG); 389 PrepareForBailout(expr, TOS_REG);
(...skipping 663 matching lines...) Expand 10 before | Expand all | Expand 10 after
1047 1053
1048 Address start_; 1054 Address start_;
1049 Address instruction_start_; 1055 Address instruction_start_;
1050 uint32_t length_; 1056 uint32_t length_;
1051 }; 1057 };
1052 1058
1053 1059
1054 } } // namespace v8::internal 1060 } } // namespace v8::internal
1055 1061
1056 #endif // V8_FULL_CODEGEN_H_ 1062 #endif // V8_FULL_CODEGEN_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698