Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(124)

Side by Side Diff: runtime/vm/opt_code_generator_ia32.h

Issue 8439059: Restructure instance setter and finish the last 1/3 of increment instance field optimization. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef VM_OPT_CODE_GENERATOR_IA32_H_ 5 #ifndef VM_OPT_CODE_GENERATOR_IA32_H_
6 #define VM_OPT_CODE_GENERATOR_IA32_H_ 6 #define VM_OPT_CODE_GENERATOR_IA32_H_
7 7
8 #ifndef VM_OPT_CODE_GENERATOR_H_ 8 #ifndef VM_OPT_CODE_GENERATOR_H_
9 #error Do not include opt_code_generator_ia32.h; use opt_code_generator.h. 9 #error Do not include opt_code_generator_ia32.h; use opt_code_generator.h.
10 #endif 10 #endif
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 Register reg1, 61 Register reg1,
62 Register reg2); 62 Register reg2);
63 DeoptimizationBlob* AddDeoptimizationBlob(AstNode* node, 63 DeoptimizationBlob* AddDeoptimizationBlob(AstNode* node,
64 Register reg1, 64 Register reg1,
65 Register reg2, 65 Register reg2,
66 Register reg3); 66 Register reg3);
67 67
68 void IntrinsifyGetter(); 68 void IntrinsifyGetter();
69 void IntrinsifySetter(); 69 void IntrinsifySetter();
70 70
71 bool ICDataToSameInlineableInstanceGetter(const ICData& ic_data);
72 void InlineInstanceGettersWithSameTarget(AstNode* node, 71 void InlineInstanceGettersWithSameTarget(AstNode* node,
72 intptr_t id,
73 AstNode* receiver, 73 AstNode* receiver,
74 const String& field_name, 74 const String& field_name,
75 Register recv_reg); 75 Register recv_reg);
76 void InlineInstanceSettersWithSameTarget(AstNode* node,
77 intptr_t id,
78 AstNode* receiver,
79 const String& field_name,
80 Register recv_reg,
81 Register value_reg);
76 82
77 // Helper method to load a value quickly into register instead of pushing 83 // Helper method to load a value quickly into register instead of pushing
78 // and popping it. 84 // and popping it.
79 void VisitLoadOne(AstNode* node, Register reg); 85 void VisitLoadOne(AstNode* node, Register reg);
80 void VisitLoadTwo(AstNode* left, 86 void VisitLoadTwo(AstNode* left,
81 AstNode* right, 87 AstNode* right,
82 Register left_reg, 88 Register left_reg,
83 Register right_reg); 89 Register right_reg);
84 90
85 bool IsInlineableInstanceGetter(const Function& function);
86 void InlineInstanceGetter(AstNode* node, 91 void InlineInstanceGetter(AstNode* node,
87 intptr_t id, 92 intptr_t id,
88 AstNode* receiver, 93 AstNode* receiver,
89 const String& field_name, 94 const String& field_name,
90 Register recv_reg); 95 Register recv_reg);
96 void InlineInstanceSetter(AstNode* node,
97 intptr_t id,
98 AstNode* receiver,
99 const String& field_name,
100 Register recv_reg,
101 Register value_reg);
91 102
92 void CallDeoptimize(intptr_t node_id, intptr_t token_index); 103 void CallDeoptimize(intptr_t node_id, intptr_t token_index);
93 104
94 void GenerateSmiBinaryOp(BinaryOpNode* node); 105 void GenerateSmiBinaryOp(BinaryOpNode* node);
95 void GenerateSmiShiftBinaryOp(BinaryOpNode* node); 106 void GenerateSmiShiftBinaryOp(BinaryOpNode* node);
96 107
97 void GenerateDoubleBinaryOp(BinaryOpNode* node); 108 void GenerateDoubleBinaryOp(BinaryOpNode* node);
98 void GenerateMintBinaryOp(BinaryOpNode* node, bool allow_smi); 109 void GenerateMintBinaryOp(BinaryOpNode* node, bool allow_smi);
99 void CheckIfDoubleOrSmi(Register reg, 110 void CheckIfDoubleOrSmi(Register reg,
100 Register temp, 111 Register temp,
(...skipping 15 matching lines...) Expand all
116 bool GenerateDoubleComparison(ComparisonNode* node); 127 bool GenerateDoubleComparison(ComparisonNode* node);
117 bool GenerateEqualityComparison(ComparisonNode* node); 128 bool GenerateEqualityComparison(ComparisonNode* node);
118 void GenerateLogicalBinaryOp(BinaryOpNode* node); 129 void GenerateLogicalBinaryOp(BinaryOpNode* node);
119 void GenerateConditionalJumps(const CodeGenInfo& nInfo, Condition condition); 130 void GenerateConditionalJumps(const CodeGenInfo& nInfo, Condition condition);
120 bool TryInlineInstanceCall(InstanceCallNode* node); 131 bool TryInlineInstanceCall(InstanceCallNode* node);
121 bool TryInlineStaticCall(StaticCallNode* node); 132 bool TryInlineStaticCall(StaticCallNode* node);
122 133
123 bool IsResultInEaxRequested(AstNode* node) const; 134 bool IsResultInEaxRequested(AstNode* node) const;
124 bool NodeMayBeSmi(AstNode* node) const; 135 bool NodeMayBeSmi(AstNode* node) const;
125 136
126 void PrintCollectedClasses(AstNode* node); 137 void PrintCollectedClassesAtId(AstNode* node, intptr_t id);
127 void TraceOpt(AstNode* node, const char* message); 138 void TraceOpt(AstNode* node, const char* message);
128 void TraceNotOpt(AstNode* node, const char* message); 139 void TraceNotOpt(AstNode* node, const char* message);
129 140
130 GrowableArray<DeoptimizationBlob*> deoptimization_blobs_; 141 GrowableArray<DeoptimizationBlob*> deoptimization_blobs_;
131 const Class& smi_class_; 142 const Class& smi_class_;
132 const Class& double_class_; 143 const Class& double_class_;
133 144
134 DISALLOW_IMPLICIT_CONSTRUCTORS(OptimizingCodeGenerator); 145 DISALLOW_IMPLICIT_CONSTRUCTORS(OptimizingCodeGenerator);
135 }; 146 };
136 147
137 } // namespace dart 148 } // namespace dart
138 149
139 150
140 #endif // VM_OPT_CODE_GENERATOR_IA32_H_ 151 #endif // VM_OPT_CODE_GENERATOR_IA32_H_
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/opt_code_generator_ia32.cc » ('j') | runtime/vm/opt_code_generator_ia32.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698