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