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_HYDROGEN_H_ | 5 #ifndef V8_HYDROGEN_H_ |
6 #define V8_HYDROGEN_H_ | 6 #define V8_HYDROGEN_H_ |
7 | 7 |
8 #include "src/accessors.h" | 8 #include "src/accessors.h" |
9 #include "src/allocation.h" | 9 #include "src/allocation.h" |
10 #include "src/ast.h" | 10 #include "src/ast.h" |
(...skipping 2465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2476 static bool CanInlineArrayResizeOperation(Handle<Map> receiver_map); | 2476 static bool CanInlineArrayResizeOperation(Handle<Map> receiver_map); |
2477 | 2477 |
2478 // If --trace-inlining, print a line of the inlining trace. Inlining | 2478 // If --trace-inlining, print a line of the inlining trace. Inlining |
2479 // succeeded if the reason string is NULL and failed if there is a | 2479 // succeeded if the reason string is NULL and failed if there is a |
2480 // non-NULL reason string. | 2480 // non-NULL reason string. |
2481 void TraceInline(Handle<JSFunction> target, | 2481 void TraceInline(Handle<JSFunction> target, |
2482 Handle<JSFunction> caller, | 2482 Handle<JSFunction> caller, |
2483 const char* failure_reason); | 2483 const char* failure_reason); |
2484 | 2484 |
2485 void HandleGlobalVariableAssignment(Variable* var, HValue* value, | 2485 void HandleGlobalVariableAssignment(Variable* var, HValue* value, |
2486 FeedbackVectorICSlot ic_slot, | 2486 FeedbackVectorSlot slot, |
2487 BailoutId ast_id); | 2487 BailoutId ast_id); |
2488 | 2488 |
2489 void HandlePropertyAssignment(Assignment* expr); | 2489 void HandlePropertyAssignment(Assignment* expr); |
2490 void HandleCompoundAssignment(Assignment* expr); | 2490 void HandleCompoundAssignment(Assignment* expr); |
2491 void HandlePolymorphicNamedFieldAccess( | 2491 void HandlePolymorphicNamedFieldAccess( |
2492 PropertyAccessType access_type, Expression* expr, | 2492 PropertyAccessType access_type, Expression* expr, FeedbackVectorSlot slot, |
2493 FeedbackVectorICSlot slot, BailoutId ast_id, BailoutId return_id, | 2493 BailoutId ast_id, BailoutId return_id, HValue* object, HValue* value, |
2494 HValue* object, HValue* value, SmallMapList* types, Handle<String> name); | 2494 SmallMapList* types, Handle<String> name); |
2495 | 2495 |
2496 HValue* BuildAllocateExternalElements( | 2496 HValue* BuildAllocateExternalElements( |
2497 ExternalArrayType array_type, | 2497 ExternalArrayType array_type, |
2498 bool is_zero_byte_offset, | 2498 bool is_zero_byte_offset, |
2499 HValue* buffer, HValue* byte_offset, HValue* length); | 2499 HValue* buffer, HValue* byte_offset, HValue* length); |
2500 HValue* BuildAllocateFixedTypedArray(ExternalArrayType array_type, | 2500 HValue* BuildAllocateFixedTypedArray(ExternalArrayType array_type, |
2501 size_t element_size, | 2501 size_t element_size, |
2502 ElementsKind fixed_elements_kind, | 2502 ElementsKind fixed_elements_kind, |
2503 HValue* byte_length, HValue* length, | 2503 HValue* byte_length, HValue* length, |
2504 bool initialize); | 2504 bool initialize); |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2733 PropertyDetails details_; | 2733 PropertyDetails details_; |
2734 }; | 2734 }; |
2735 | 2735 |
2736 HValue* BuildMonomorphicAccess(PropertyAccessInfo* info, HValue* object, | 2736 HValue* BuildMonomorphicAccess(PropertyAccessInfo* info, HValue* object, |
2737 HValue* checked_object, HValue* value, | 2737 HValue* checked_object, HValue* value, |
2738 BailoutId ast_id, BailoutId return_id, | 2738 BailoutId ast_id, BailoutId return_id, |
2739 bool can_inline_accessor = true); | 2739 bool can_inline_accessor = true); |
2740 | 2740 |
2741 HValue* BuildNamedAccess(PropertyAccessType access, BailoutId ast_id, | 2741 HValue* BuildNamedAccess(PropertyAccessType access, BailoutId ast_id, |
2742 BailoutId reutrn_id, Expression* expr, | 2742 BailoutId reutrn_id, Expression* expr, |
2743 FeedbackVectorICSlot slot, HValue* object, | 2743 FeedbackVectorSlot slot, HValue* object, |
2744 Handle<String> name, HValue* value, | 2744 Handle<String> name, HValue* value, |
2745 bool is_uninitialized = false); | 2745 bool is_uninitialized = false); |
2746 | 2746 |
2747 void HandlePolymorphicCallNamed(Call* expr, | 2747 void HandlePolymorphicCallNamed(Call* expr, |
2748 HValue* receiver, | 2748 HValue* receiver, |
2749 SmallMapList* types, | 2749 SmallMapList* types, |
2750 Handle<String> name); | 2750 Handle<String> name); |
2751 void HandleLiteralCompareTypeof(CompareOperation* expr, | 2751 void HandleLiteralCompareTypeof(CompareOperation* expr, |
2752 Expression* sub_expr, | 2752 Expression* sub_expr, |
2753 Handle<String> check); | 2753 Handle<String> check); |
(...skipping 16 matching lines...) Expand all Loading... |
2770 HValue* index); | 2770 HValue* index); |
2771 | 2771 |
2772 HValue* BuildBinaryOperation( | 2772 HValue* BuildBinaryOperation( |
2773 BinaryOperation* expr, | 2773 BinaryOperation* expr, |
2774 HValue* left, | 2774 HValue* left, |
2775 HValue* right, | 2775 HValue* right, |
2776 PushBeforeSimulateBehavior push_sim_result); | 2776 PushBeforeSimulateBehavior push_sim_result); |
2777 HInstruction* BuildIncrement(bool returns_original_input, | 2777 HInstruction* BuildIncrement(bool returns_original_input, |
2778 CountOperation* expr); | 2778 CountOperation* expr); |
2779 HInstruction* BuildKeyedGeneric(PropertyAccessType access_type, | 2779 HInstruction* BuildKeyedGeneric(PropertyAccessType access_type, |
2780 Expression* expr, FeedbackVectorICSlot slot, | 2780 Expression* expr, FeedbackVectorSlot slot, |
2781 HValue* object, HValue* key, HValue* value); | 2781 HValue* object, HValue* key, HValue* value); |
2782 | 2782 |
2783 HInstruction* TryBuildConsolidatedElementLoad(HValue* object, | 2783 HInstruction* TryBuildConsolidatedElementLoad(HValue* object, |
2784 HValue* key, | 2784 HValue* key, |
2785 HValue* val, | 2785 HValue* val, |
2786 SmallMapList* maps); | 2786 SmallMapList* maps); |
2787 | 2787 |
2788 LoadKeyedHoleMode BuildKeyedHoleMode(Handle<Map> map); | 2788 LoadKeyedHoleMode BuildKeyedHoleMode(Handle<Map> map); |
2789 | 2789 |
2790 HInstruction* BuildMonomorphicElementAccess(HValue* object, | 2790 HInstruction* BuildMonomorphicElementAccess(HValue* object, |
2791 HValue* key, | 2791 HValue* key, |
2792 HValue* val, | 2792 HValue* val, |
2793 HValue* dependency, | 2793 HValue* dependency, |
2794 Handle<Map> map, | 2794 Handle<Map> map, |
2795 PropertyAccessType access_type, | 2795 PropertyAccessType access_type, |
2796 KeyedAccessStoreMode store_mode); | 2796 KeyedAccessStoreMode store_mode); |
2797 | 2797 |
2798 HValue* HandlePolymorphicElementAccess( | 2798 HValue* HandlePolymorphicElementAccess( |
2799 Expression* expr, FeedbackVectorICSlot slot, HValue* object, HValue* key, | 2799 Expression* expr, FeedbackVectorSlot slot, HValue* object, HValue* key, |
2800 HValue* val, SmallMapList* maps, PropertyAccessType access_type, | 2800 HValue* val, SmallMapList* maps, PropertyAccessType access_type, |
2801 KeyedAccessStoreMode store_mode, bool* has_side_effects); | 2801 KeyedAccessStoreMode store_mode, bool* has_side_effects); |
2802 | 2802 |
2803 HValue* HandleKeyedElementAccess(HValue* obj, HValue* key, HValue* val, | 2803 HValue* HandleKeyedElementAccess(HValue* obj, HValue* key, HValue* val, |
2804 Expression* expr, FeedbackVectorICSlot slot, | 2804 Expression* expr, FeedbackVectorSlot slot, |
2805 BailoutId ast_id, BailoutId return_id, | 2805 BailoutId ast_id, BailoutId return_id, |
2806 PropertyAccessType access_type, | 2806 PropertyAccessType access_type, |
2807 bool* has_side_effects); | 2807 bool* has_side_effects); |
2808 | 2808 |
2809 HInstruction* BuildNamedGeneric(PropertyAccessType access, Expression* expr, | 2809 HInstruction* BuildNamedGeneric(PropertyAccessType access, Expression* expr, |
2810 FeedbackVectorICSlot slot, HValue* object, | 2810 FeedbackVectorSlot slot, HValue* object, |
2811 Handle<Name> name, HValue* value, | 2811 Handle<Name> name, HValue* value, |
2812 bool is_uninitialized = false); | 2812 bool is_uninitialized = false); |
2813 | 2813 |
2814 HCheckMaps* AddCheckMap(HValue* object, Handle<Map> map); | 2814 HCheckMaps* AddCheckMap(HValue* object, Handle<Map> map); |
2815 | 2815 |
2816 void BuildLoad(Property* property, | 2816 void BuildLoad(Property* property, |
2817 BailoutId ast_id); | 2817 BailoutId ast_id); |
2818 void PushLoad(Property* property, | 2818 void PushLoad(Property* property, |
2819 HValue* object, | 2819 HValue* object, |
2820 HValue* key); | 2820 HValue* key); |
2821 | 2821 |
2822 void BuildStoreForEffect(Expression* expression, Property* prop, | 2822 void BuildStoreForEffect(Expression* expression, Property* prop, |
2823 FeedbackVectorICSlot slot, BailoutId ast_id, | 2823 FeedbackVectorSlot slot, BailoutId ast_id, |
2824 BailoutId return_id, HValue* object, HValue* key, | 2824 BailoutId return_id, HValue* object, HValue* key, |
2825 HValue* value); | 2825 HValue* value); |
2826 | 2826 |
2827 void BuildStore(Expression* expression, Property* prop, | 2827 void BuildStore(Expression* expression, Property* prop, |
2828 FeedbackVectorICSlot slot, BailoutId ast_id, | 2828 FeedbackVectorSlot slot, BailoutId ast_id, |
2829 BailoutId return_id, bool is_uninitialized = false); | 2829 BailoutId return_id, bool is_uninitialized = false); |
2830 | 2830 |
2831 HInstruction* BuildLoadNamedField(PropertyAccessInfo* info, | 2831 HInstruction* BuildLoadNamedField(PropertyAccessInfo* info, |
2832 HValue* checked_object); | 2832 HValue* checked_object); |
2833 HInstruction* BuildStoreNamedField(PropertyAccessInfo* info, | 2833 HInstruction* BuildStoreNamedField(PropertyAccessInfo* info, |
2834 HValue* checked_object, | 2834 HValue* checked_object, |
2835 HValue* value); | 2835 HValue* value); |
2836 | 2836 |
2837 HValue* BuildContextChainWalk(Variable* var); | 2837 HValue* BuildContextChainWalk(Variable* var); |
2838 | 2838 |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3070 | 3070 |
3071 private: | 3071 private: |
3072 HGraphBuilder* builder_; | 3072 HGraphBuilder* builder_; |
3073 }; | 3073 }; |
3074 | 3074 |
3075 | 3075 |
3076 } // namespace internal | 3076 } // namespace internal |
3077 } // namespace v8 | 3077 } // namespace v8 |
3078 | 3078 |
3079 #endif // V8_HYDROGEN_H_ | 3079 #endif // V8_HYDROGEN_H_ |
OLD | NEW |