OLD | NEW |
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 Loading... |
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 Loading... |
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_ |
OLD | NEW |