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

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

Issue 2293103002: VM: Remove unecessary dead code from flow-graph builder. (Closed)
Patch Set: Created 4 years, 3 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/intermediate_language.h ('k') | no next file » | 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/intermediate_language.h" 5 #include "vm/intermediate_language.h"
6 6
7 #include "vm/bit_vector.h" 7 #include "vm/bit_vector.h"
8 #include "vm/bootstrap.h" 8 #include "vm/bootstrap.h"
9 #include "vm/compiler.h" 9 #include "vm/compiler.h"
10 #include "vm/constant_propagator.h" 10 #include "vm/constant_propagator.h"
(...skipping 2009 matching lines...) Expand 10 before | Expand all | Expand 10 after
2020 // For fixed length arrays if the array is the result of a known constructor 2020 // For fixed length arrays if the array is the result of a known constructor
2021 // call we can replace the length load with the length argument passed to 2021 // call we can replace the length load with the length argument passed to
2022 // the constructor. 2022 // the constructor.
2023 StaticCallInstr* call = 2023 StaticCallInstr* call =
2024 instance()->definition()->OriginalDefinition()->AsStaticCall(); 2024 instance()->definition()->OriginalDefinition()->AsStaticCall();
2025 if (call != NULL) { 2025 if (call != NULL) {
2026 if (call->is_known_list_constructor() && 2026 if (call->is_known_list_constructor() &&
2027 IsFixedLengthArrayCid(call->Type()->ToCid())) { 2027 IsFixedLengthArrayCid(call->Type()->ToCid())) {
2028 return call->ArgumentAt(1); 2028 return call->ArgumentAt(1);
2029 } 2029 }
2030 if (call->is_native_list_factory()) {
2031 return call->ArgumentAt(0);
2032 }
2033 } 2030 }
2034 2031
2035 CreateArrayInstr* create_array = 2032 CreateArrayInstr* create_array =
2036 instance()->definition()->OriginalDefinition()->AsCreateArray(); 2033 instance()->definition()->OriginalDefinition()->AsCreateArray();
2037 if ((create_array != NULL) && 2034 if ((create_array != NULL) &&
2038 (recognized_kind() == MethodRecognizer::kObjectArrayLength)) { 2035 (recognized_kind() == MethodRecognizer::kObjectArrayLength)) {
2039 return create_array->num_elements()->definition(); 2036 return create_array->num_elements()->definition();
2040 } 2037 }
2041 2038
2042 // For arrays with guarded lengths, replace the length load 2039 // For arrays with guarded lengths, replace the length load
(...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after
2659 StaticCallInstr* call = value()->definition()->AsStaticCall(); 2656 StaticCallInstr* call = value()->definition()->AsStaticCall();
2660 if (call == NULL) { 2657 if (call == NULL) {
2661 return this; 2658 return this;
2662 } 2659 }
2663 2660
2664 ConstantInstr* length = NULL; 2661 ConstantInstr* length = NULL;
2665 if (call->is_known_list_constructor() && 2662 if (call->is_known_list_constructor() &&
2666 LoadFieldInstr::IsFixedLengthArrayCid(call->Type()->ToCid())) { 2663 LoadFieldInstr::IsFixedLengthArrayCid(call->Type()->ToCid())) {
2667 length = call->ArgumentAt(1)->AsConstant(); 2664 length = call->ArgumentAt(1)->AsConstant();
2668 } 2665 }
2669 if (call->is_native_list_factory()) {
2670 length = call->ArgumentAt(0)->AsConstant();
2671 }
2672 if ((length != NULL) && 2666 if ((length != NULL) &&
2673 length->value().IsSmi() && 2667 length->value().IsSmi() &&
2674 Smi::Cast(length->value()).Value() == expected_length) { 2668 Smi::Cast(length->value()).Value() == expected_length) {
2675 return NULL; // Expected length matched. 2669 return NULL; // Expected length matched.
2676 } 2670 }
2677 2671
2678 return this; 2672 return this;
2679 } 2673 }
2680 2674
2681 2675
(...skipping 1195 matching lines...) Expand 10 before | Expand all | Expand 10 after
3877 set_native_c_function(native_function); 3871 set_native_c_function(native_function);
3878 function().SetIsNativeAutoSetupScope(auto_setup_scope); 3872 function().SetIsNativeAutoSetupScope(auto_setup_scope);
3879 Dart_NativeEntryResolver resolver = library.native_entry_resolver(); 3873 Dart_NativeEntryResolver resolver = library.native_entry_resolver();
3880 bool is_bootstrap_native = Bootstrap::IsBootstapResolver(resolver); 3874 bool is_bootstrap_native = Bootstrap::IsBootstapResolver(resolver);
3881 set_is_bootstrap_native(is_bootstrap_native); 3875 set_is_bootstrap_native(is_bootstrap_native);
3882 } 3876 }
3883 3877
3884 #undef __ 3878 #undef __
3885 3879
3886 } // namespace dart 3880 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/intermediate_language.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698