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

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

Issue 12871010: Replace scalarlist optimizations and split external array loads into two IL instructions. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 9 months 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
« no previous file with comments | « runtime/vm/flow_graph_allocator.cc ('k') | runtime/vm/flow_graph_optimizer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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_FLOW_GRAPH_OPTIMIZER_H_ 5 #ifndef VM_FLOW_GRAPH_OPTIMIZER_H_
6 #define VM_FLOW_GRAPH_OPTIMIZER_H_ 6 #define VM_FLOW_GRAPH_OPTIMIZER_H_
7 7
8 #include "vm/intermediate_language.h" 8 #include "vm/intermediate_language.h"
9 #include "vm/flow_graph.h" 9 #include "vm/flow_graph.h"
10 10
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 // Attempt to build ICData for call using propagated class-ids. 61 // Attempt to build ICData for call using propagated class-ids.
62 bool TryCreateICData(InstanceCallInstr* call); 62 bool TryCreateICData(InstanceCallInstr* call);
63 63
64 void SpecializePolymorphicInstanceCall(PolymorphicInstanceCallInstr* call); 64 void SpecializePolymorphicInstanceCall(PolymorphicInstanceCallInstr* call);
65 65
66 intptr_t PrepareIndexedOp(InstanceCallInstr* call, 66 intptr_t PrepareIndexedOp(InstanceCallInstr* call,
67 intptr_t class_id, 67 intptr_t class_id,
68 Definition** array, 68 Definition** array,
69 Definition** index); 69 Definition** index);
70 bool TryReplaceWithStoreIndexed(InstanceCallInstr* call); 70 bool TryReplaceWithStoreIndexed(InstanceCallInstr* call);
71 bool TryInlineByteArraySetIndexed(InstanceCallInstr* call);
72 void BuildStoreIndexed(InstanceCallInstr* call, 71 void BuildStoreIndexed(InstanceCallInstr* call,
73 const ICData& value_check, 72 const ICData& value_check,
74 intptr_t class_id); 73 intptr_t class_id);
75 bool TryReplaceWithLoadIndexed(InstanceCallInstr* call); 74 bool TryReplaceWithLoadIndexed(InstanceCallInstr* call);
76 75
77 bool TryReplaceWithBinaryOp(InstanceCallInstr* call, Token::Kind op_kind); 76 bool TryReplaceWithBinaryOp(InstanceCallInstr* call, Token::Kind op_kind);
78 bool TryReplaceWithUnaryOp(InstanceCallInstr* call, Token::Kind op_kind); 77 bool TryReplaceWithUnaryOp(InstanceCallInstr* call, Token::Kind op_kind);
79 78
80 bool TryInlineInstanceGetter(InstanceCallInstr* call); 79 bool TryInlineInstanceGetter(InstanceCallInstr* call);
81 bool TryInlineInstanceSetter(InstanceCallInstr* call, 80 bool TryInlineInstanceSetter(InstanceCallInstr* call,
82 const ICData& unary_ic_data); 81 const ICData& unary_ic_data);
83 82
84 bool TryInlineInstanceMethod(InstanceCallInstr* call); 83 bool TryInlineInstanceMethod(InstanceCallInstr* call);
85 void ReplaceWithInstanceOf(InstanceCallInstr* instr); 84 void ReplaceWithInstanceOf(InstanceCallInstr* instr);
86 85
87 LoadIndexedInstr* BuildStringCodeUnitAt(InstanceCallInstr* call, 86 LoadIndexedInstr* BuildStringCodeUnitAt(InstanceCallInstr* call,
88 intptr_t cid); 87 intptr_t cid);
89 88
90 bool BuildByteArrayViewLoad(InstanceCallInstr* call, 89 bool BuildByteArrayViewLoad(InstanceCallInstr* call,
91 intptr_t receiver_cid, 90 intptr_t receiver_cid,
92 intptr_t view_cid); 91 intptr_t view_cid);
93 bool BuildByteArrayViewStore(InstanceCallInstr* call, 92 bool BuildByteArrayViewStore(InstanceCallInstr* call,
94 intptr_t receiver_cid, 93 intptr_t receiver_cid,
95 intptr_t view_cid); 94 intptr_t view_cid);
96 void PrepareByteArrayViewOp(InstanceCallInstr* call, 95 void PrepareByteArrayViewOp(InstanceCallInstr* call,
97 intptr_t receiver_cid, 96 intptr_t receiver_cid,
98 intptr_t view_cid); 97 intptr_t view_cid,
98 Definition** array);
99 99
100 // Insert a check of 'to_check' determined by 'unary_checks'. If the 100 // Insert a check of 'to_check' determined by 'unary_checks'. If the
101 // check fails it will deoptimize to 'deopt_id' using the deoptimization 101 // check fails it will deoptimize to 'deopt_id' using the deoptimization
102 // environment 'deopt_environment'. The check is inserted immediately 102 // environment 'deopt_environment'. The check is inserted immediately
103 // before 'insert_before'. 103 // before 'insert_before'.
104 void AddCheckClass(Definition* to_check, 104 void AddCheckClass(Definition* to_check,
105 const ICData& unary_checks, 105 const ICData& unary_checks,
106 intptr_t deopt_id, 106 intptr_t deopt_id,
107 Environment* deopt_environment, 107 Environment* deopt_environment,
108 Instruction* insert_before); 108 Instruction* insert_before);
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 // inputs. 291 // inputs.
292 static BranchInstr* CloneBranch(BranchInstr* branch, 292 static BranchInstr* CloneBranch(BranchInstr* branch,
293 Value* left, 293 Value* left,
294 Value* right); 294 Value* right);
295 }; 295 };
296 296
297 297
298 } // namespace dart 298 } // namespace dart
299 299
300 #endif // VM_FLOW_GRAPH_OPTIMIZER_H_ 300 #endif // VM_FLOW_GRAPH_OPTIMIZER_H_
OLDNEW
« no previous file with comments | « runtime/vm/flow_graph_allocator.cc ('k') | runtime/vm/flow_graph_optimizer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698