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