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

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

Issue 1678203002: Remove more feature in product mode (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 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
« no previous file with comments | « runtime/vm/profiler.cc ('k') | runtime/vm/service_isolate.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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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/redundancy_elimination.h" 5 #include "vm/redundancy_elimination.h"
6 6
7 #include "vm/bit_vector.h" 7 #include "vm/bit_vector.h"
8 #include "vm/flow_graph.h" 8 #include "vm/flow_graph.h"
9 #include "vm/hash_map.h" 9 #include "vm/hash_map.h"
10 #include "vm/il_printer.h" 10 #include "vm/il_printer.h"
(...skipping 2076 matching lines...) Expand 10 before | Expand all | Expand 10 after
2087 // as replaced and store a pointer to the replacement. 2087 // as replaced and store a pointer to the replacement.
2088 Definition* replacement = (*pred_out_values)[place_id]->Replacement(); 2088 Definition* replacement = (*pred_out_values)[place_id]->Replacement();
2089 Value* input = new(Z) Value(replacement); 2089 Value* input = new(Z) Value(replacement);
2090 phi->SetInputAt(i, input); 2090 phi->SetInputAt(i, input);
2091 replacement->AddInputUse(input); 2091 replacement->AddInputUse(input);
2092 } 2092 }
2093 2093
2094 graph_->AllocateSSAIndexes(phi); 2094 graph_->AllocateSSAIndexes(phi);
2095 phis_.Add(phi); // Postpone phi insertion until after load forwarding. 2095 phis_.Add(phi); // Postpone phi insertion until after load forwarding.
2096 2096
2097 if (FLAG_trace_load_optimization) { 2097 if (FLAG_support_il_printer && FLAG_trace_load_optimization) {
2098 THR_Print("created pending phi %s for %s at B%" Pd "\n", 2098 THR_Print("created pending phi %s for %s at B%" Pd "\n",
2099 phi->ToCString(), 2099 phi->ToCString(),
2100 aliased_set_->places()[place_id]->ToCString(), 2100 aliased_set_->places()[place_id]->ToCString(),
2101 block->block_id()); 2101 block->block_id());
2102 } 2102 }
2103 } 2103 }
2104 2104
2105 // Iterate over basic blocks and replace exposed loads with incoming 2105 // Iterate over basic blocks and replace exposed loads with incoming
2106 // values. 2106 // values.
2107 void ForwardLoads() { 2107 void ForwardLoads() {
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
2315 // a dominates b or b dominates a. 2315 // a dominates b or b dominates a.
2316 if (!a->IsPhi()) { 2316 if (!a->IsPhi()) {
2317 if (Dominates(a, b)) { 2317 if (Dominates(a, b)) {
2318 Definition* t = a; 2318 Definition* t = a;
2319 a = b; 2319 a = b;
2320 b = t; 2320 b = t;
2321 } 2321 }
2322 ASSERT(Dominates(b, a)); 2322 ASSERT(Dominates(b, a));
2323 } 2323 }
2324 2324
2325 if (FLAG_trace_load_optimization) { 2325 if (FLAG_support_il_printer && FLAG_trace_load_optimization) {
2326 THR_Print("Replacing %s with congruent %s\n", 2326 THR_Print("Replacing %s with congruent %s\n",
2327 a->ToCString(), 2327 a->ToCString(),
2328 b->ToCString()); 2328 b->ToCString());
2329 } 2329 }
2330 2330
2331 a->ReplaceUsesWith(b); 2331 a->ReplaceUsesWith(b);
2332 if (a->IsPhi()) { 2332 if (a->IsPhi()) {
2333 // We might be replacing a phi introduced by the load forwarding 2333 // We might be replacing a phi introduced by the load forwarding
2334 // that is not inserted in the graph yet. 2334 // that is not inserted in the graph yet.
2335 ASSERT(b->IsPhi()); 2335 ASSERT(b->IsPhi());
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
2749 // Right now we are attempting to sink allocation only into 2749 // Right now we are attempting to sink allocation only into
2750 // deoptimization exit. So candidate should only be used in StoreInstanceField 2750 // deoptimization exit. So candidate should only be used in StoreInstanceField
2751 // instructions that write into fields of the allocated object. 2751 // instructions that write into fields of the allocated object.
2752 // We do not support materialization of the object that has type arguments. 2752 // We do not support materialization of the object that has type arguments.
2753 static bool IsAllocationSinkingCandidate(Definition* alloc, 2753 static bool IsAllocationSinkingCandidate(Definition* alloc,
2754 SafeUseCheck check_type) { 2754 SafeUseCheck check_type) {
2755 for (Value* use = alloc->input_use_list(); 2755 for (Value* use = alloc->input_use_list();
2756 use != NULL; 2756 use != NULL;
2757 use = use->next_use()) { 2757 use = use->next_use()) {
2758 if (!IsSafeUse(use, check_type)) { 2758 if (!IsSafeUse(use, check_type)) {
2759 if (FLAG_trace_optimization) { 2759 if (FLAG_support_il_printer && FLAG_trace_optimization) {
2760 THR_Print("use of %s at %s is unsafe for allocation sinking\n", 2760 THR_Print("use of %s at %s is unsafe for allocation sinking\n",
2761 alloc->ToCString(), 2761 alloc->ToCString(),
2762 use->instruction()->ToCString()); 2762 use->instruction()->ToCString());
2763 } 2763 }
2764 return false; 2764 return false;
2765 } 2765 }
2766 } 2766 }
2767 2767
2768 return true; 2768 return true;
2769 } 2769 }
(...skipping 692 matching lines...) Expand 10 before | Expand all | Expand 10 after
3462 join->phis_ = NULL; 3462 join->phis_ = NULL;
3463 } else { 3463 } else {
3464 join->phis_->TruncateTo(to_index); 3464 join->phis_->TruncateTo(to_index);
3465 } 3465 }
3466 } 3466 }
3467 } 3467 }
3468 } 3468 }
3469 3469
3470 3470
3471 } // namespace dart 3471 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/profiler.cc ('k') | runtime/vm/service_isolate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698