| 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 |