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 597 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
608 // Expect receiver ('this' value), home_object and key on the stack. | 608 // Expect receiver ('this' value), home_object and key on the stack. |
609 void EmitKeyedSuperPropertyLoad(Property* expr); | 609 void EmitKeyedSuperPropertyLoad(Property* expr); |
610 | 610 |
611 // Load a value from a keyed property. | 611 // Load a value from a keyed property. |
612 // The receiver and the key is left on the stack by the IC. | 612 // The receiver and the key is left on the stack by the IC. |
613 void EmitKeyedPropertyLoad(Property* expr); | 613 void EmitKeyedPropertyLoad(Property* expr); |
614 | 614 |
615 // Adds the properties to the class (function) object and to its prototype. | 615 // Adds the properties to the class (function) object and to its prototype. |
616 // Expects the class (function) in the accumulator. The class (function) is | 616 // Expects the class (function) in the accumulator. The class (function) is |
617 // in the accumulator after installing all the properties. | 617 // in the accumulator after installing all the properties. |
618 void EmitClassDefineProperties(ClassLiteral* lit); | 618 void EmitClassDefineProperties(ClassLiteral* lit, int* used_store_slots); |
619 | 619 |
620 // Pushes the property key as a Name on the stack. | 620 // Pushes the property key as a Name on the stack. |
621 void EmitPropertyKey(ObjectLiteralProperty* property, BailoutId bailout_id); | 621 void EmitPropertyKey(ObjectLiteralProperty* property, BailoutId bailout_id); |
622 | 622 |
623 // Apply the compound assignment operator. Expects the left operand on top | 623 // Apply the compound assignment operator. Expects the left operand on top |
624 // of the stack and the right one in the accumulator. | 624 // of the stack and the right one in the accumulator. |
625 void EmitBinaryOp(BinaryOperation* expr, Token::Value op); | 625 void EmitBinaryOp(BinaryOperation* expr, Token::Value op); |
626 | 626 |
627 // Helper functions for generating inlined smi code for certain | 627 // Helper functions for generating inlined smi code for certain |
628 // binary operations. | 628 // binary operations. |
629 void EmitInlineSmiBinaryOp(BinaryOperation* expr, | 629 void EmitInlineSmiBinaryOp(BinaryOperation* expr, |
630 Token::Value op, | 630 Token::Value op, |
631 Expression* left, | 631 Expression* left, |
632 Expression* right); | 632 Expression* right); |
633 | 633 |
634 // Assign to the given expression as if via '='. The right-hand-side value | 634 // Assign to the given expression as if via '='. The right-hand-side value |
635 // is expected in the accumulator. slot is only used if FLAG_vector_stores | 635 // is expected in the accumulator. slot is only used if FLAG_vector_stores |
636 // is true. | 636 // is true. |
637 void EmitAssignment(Expression* expr, FeedbackVectorICSlot slot = | 637 void EmitAssignment(Expression* expr, FeedbackVectorICSlot slot); |
638 FeedbackVectorICSlot::Invalid()); | |
639 | 638 |
640 // Complete a variable assignment. The right-hand-side value is expected | 639 // Complete a variable assignment. The right-hand-side value is expected |
641 // in the accumulator. | 640 // in the accumulator. |
642 void EmitVariableAssignment( | 641 void EmitVariableAssignment(Variable* var, Token::Value op, |
643 Variable* var, Token::Value op, | 642 FeedbackVectorICSlot slot); |
644 FeedbackVectorICSlot slot = FeedbackVectorICSlot::Invalid()); | |
645 | 643 |
646 // Helper functions to EmitVariableAssignment | 644 // Helper functions to EmitVariableAssignment |
647 void EmitStoreToStackLocalOrContextSlot(Variable* var, | 645 void EmitStoreToStackLocalOrContextSlot(Variable* var, |
648 MemOperand location); | 646 MemOperand location); |
649 | 647 |
650 // Complete a named property assignment. The receiver is expected on top | 648 // Complete a named property assignment. The receiver is expected on top |
651 // of the stack and the right-hand-side value in the accumulator. | 649 // of the stack and the right-hand-side value in the accumulator. |
652 void EmitNamedPropertyAssignment(Assignment* expr); | 650 void EmitNamedPropertyAssignment(Assignment* expr); |
653 | 651 |
654 // Complete a super named property assignment. The right-hand-side value | 652 // Complete a super named property assignment. The right-hand-side value |
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1098 | 1096 |
1099 Address start_; | 1097 Address start_; |
1100 Address instruction_start_; | 1098 Address instruction_start_; |
1101 uint32_t length_; | 1099 uint32_t length_; |
1102 }; | 1100 }; |
1103 | 1101 |
1104 | 1102 |
1105 } } // namespace v8::internal | 1103 } } // namespace v8::internal |
1106 | 1104 |
1107 #endif // V8_FULL_CODEGEN_H_ | 1105 #endif // V8_FULL_CODEGEN_H_ |
OLD | NEW |