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

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

Issue 15470013: Remove the IC data array from the isolate. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 7 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_inliner.cc ('k') | runtime/vm/intermediate_language.h » ('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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 #include "vm/flow_graph_optimizer.h" 5 #include "vm/flow_graph_optimizer.h"
6 6
7 #include "vm/bit_vector.h" 7 #include "vm/bit_vector.h"
8 #include "vm/cha.h" 8 #include "vm/cha.h"
9 #include "vm/flow_graph_builder.h" 9 #include "vm/flow_graph_builder.h"
10 #include "vm/flow_graph_compiler.h" 10 #include "vm/flow_graph_compiler.h"
(...skipping 5966 matching lines...) Expand 10 before | Expand all | Expand 10 after
5977 ComparisonInstr* comparison = branch->comparison(); 5977 ComparisonInstr* comparison = branch->comparison();
5978 ComparisonInstr* new_comparison = NULL; 5978 ComparisonInstr* new_comparison = NULL;
5979 if (comparison->IsStrictCompare()) { 5979 if (comparison->IsStrictCompare()) {
5980 new_comparison = new StrictCompareInstr(comparison->kind(), left, right); 5980 new_comparison = new StrictCompareInstr(comparison->kind(), left, right);
5981 } else if (comparison->IsEqualityCompare()) { 5981 } else if (comparison->IsEqualityCompare()) {
5982 EqualityCompareInstr* equality_compare = comparison->AsEqualityCompare(); 5982 EqualityCompareInstr* equality_compare = comparison->AsEqualityCompare();
5983 EqualityCompareInstr* new_equality_compare = 5983 EqualityCompareInstr* new_equality_compare =
5984 new EqualityCompareInstr(equality_compare->token_pos(), 5984 new EqualityCompareInstr(equality_compare->token_pos(),
5985 comparison->kind(), 5985 comparison->kind(),
5986 left, 5986 left,
5987 right); 5987 right,
5988 Array::Handle());
5988 new_equality_compare->set_ic_data(equality_compare->ic_data()); 5989 new_equality_compare->set_ic_data(equality_compare->ic_data());
5989 new_comparison = new_equality_compare; 5990 new_comparison = new_equality_compare;
5990 } else { 5991 } else {
5991 ASSERT(comparison->IsRelationalOp()); 5992 ASSERT(comparison->IsRelationalOp());
5992 RelationalOpInstr* relational_op = comparison->AsRelationalOp(); 5993 RelationalOpInstr* relational_op = comparison->AsRelationalOp();
5993 RelationalOpInstr* new_relational_op = 5994 RelationalOpInstr* new_relational_op =
5994 new RelationalOpInstr(relational_op->token_pos(), 5995 new RelationalOpInstr(relational_op->token_pos(),
5995 comparison->kind(), 5996 comparison->kind(),
5996 left, 5997 left,
5997 right); 5998 right,
5999 Array::Handle());
5998 new_relational_op->set_ic_data(relational_op->ic_data()); 6000 new_relational_op->set_ic_data(relational_op->ic_data());
5999 new_comparison = new_relational_op; 6001 new_comparison = new_relational_op;
6000 } 6002 }
6001 return new BranchInstr(new_comparison, branch->is_checked()); 6003 return new BranchInstr(new_comparison, branch->is_checked());
6002 } 6004 }
6003 6005
6004 6006
6005 void BranchSimplifier::Simplify(FlowGraph* flow_graph) { 6007 void BranchSimplifier::Simplify(FlowGraph* flow_graph) {
6006 // Optimize some branches that test the value of a phi. When it is safe 6008 // Optimize some branches that test the value of a phi. When it is safe
6007 // to do so, push the branch to each of the predecessor blocks. This is 6009 // to do so, push the branch to each of the predecessor blocks. This is
(...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after
6494 6496
6495 // Insert materializations at environment uses. 6497 // Insert materializations at environment uses.
6496 const Class& cls = Class::Handle(alloc->constructor().Owner()); 6498 const Class& cls = Class::Handle(alloc->constructor().Owner());
6497 for (intptr_t i = 0; i < exits.length(); i++) { 6499 for (intptr_t i = 0; i < exits.length(); i++) {
6498 CreateMaterializationAt(exits[i], alloc, cls, *fields); 6500 CreateMaterializationAt(exits[i], alloc, cls, *fields);
6499 } 6501 }
6500 } 6502 }
6501 6503
6502 6504
6503 } // namespace dart 6505 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/flow_graph_inliner.cc ('k') | runtime/vm/intermediate_language.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698