OLD | NEW |
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/bigint_operations.h" | 7 #include "vm/bigint_operations.h" |
8 #include "vm/bit_vector.h" | 8 #include "vm/bit_vector.h" |
9 #include "vm/cpu.h" | 9 #include "vm/cpu.h" |
10 #include "vm/dart_entry.h" | 10 #include "vm/dart_entry.h" |
(...skipping 1042 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1053 use_idx += step) { | 1053 use_idx += step) { |
1054 phi->SetInputAt(use_idx, phi->InputAt(use_idx + step)); | 1054 phi->SetInputAt(use_idx, phi->InputAt(use_idx + step)); |
1055 } | 1055 } |
1056 // Write the predecessor use. | 1056 // Write the predecessor use. |
1057 phi->SetInputAt(new_index, pred_use); | 1057 phi->SetInputAt(new_index, pred_use); |
1058 } | 1058 } |
1059 } | 1059 } |
1060 } | 1060 } |
1061 | 1061 |
1062 | 1062 |
| 1063 void BlockEntryInstr::ClearAllInstructions() { |
| 1064 JoinEntryInstr* join = this->AsJoinEntry(); |
| 1065 if (join != NULL) { |
| 1066 for (PhiIterator it(join); !it.Done(); it.Advance()) { |
| 1067 it.Current()->UnuseAllInputs(); |
| 1068 } |
| 1069 } |
| 1070 UnuseAllInputs(); |
| 1071 for (ForwardInstructionIterator it(this); |
| 1072 !it.Done(); |
| 1073 it.Advance()) { |
| 1074 it.Current()->UnuseAllInputs(); |
| 1075 } |
| 1076 } |
| 1077 |
| 1078 |
1063 void JoinEntryInstr::InsertPhi(intptr_t var_index, intptr_t var_count) { | 1079 void JoinEntryInstr::InsertPhi(intptr_t var_index, intptr_t var_count) { |
1064 // Lazily initialize the array of phis. | 1080 // Lazily initialize the array of phis. |
1065 // Currently, phis are stored in a sparse array that holds the phi | 1081 // Currently, phis are stored in a sparse array that holds the phi |
1066 // for variable with index i at position i. | 1082 // for variable with index i at position i. |
1067 // TODO(fschneider): Store phis in a more compact way. | 1083 // TODO(fschneider): Store phis in a more compact way. |
1068 if (phis_ == NULL) { | 1084 if (phis_ == NULL) { |
1069 phis_ = new ZoneGrowableArray<PhiInstr*>(var_count); | 1085 phis_ = new ZoneGrowableArray<PhiInstr*>(var_count); |
1070 for (intptr_t i = 0; i < var_count; i++) { | 1086 for (intptr_t i = 0; i < var_count; i++) { |
1071 phis_->Add(NULL); | 1087 phis_->Add(NULL); |
1072 } | 1088 } |
(...skipping 2265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3338 case Token::kTRUNCDIV: return 0; | 3354 case Token::kTRUNCDIV: return 0; |
3339 case Token::kMOD: return 1; | 3355 case Token::kMOD: return 1; |
3340 default: UNIMPLEMENTED(); return -1; | 3356 default: UNIMPLEMENTED(); return -1; |
3341 } | 3357 } |
3342 } | 3358 } |
3343 | 3359 |
3344 | 3360 |
3345 #undef __ | 3361 #undef __ |
3346 | 3362 |
3347 } // namespace dart | 3363 } // namespace dart |
OLD | NEW |