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

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

Issue 12457034: Ensure that all goto instructions have deoptimization target. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 8 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
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/globals.h" // Needed here to get TARGET_ARCH_MIPS. 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_MIPS.
6 #if defined(TARGET_ARCH_MIPS) 6 #if defined(TARGET_ARCH_MIPS)
7 7
8 #include "vm/flow_graph_compiler.h" 8 #include "vm/flow_graph_compiler.h"
9 9
10 #include "lib/error.h" 10 #include "lib/error.h"
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 intptr_t token_pos, 120 intptr_t token_pos,
121 const AbstractType& type, 121 const AbstractType& type,
122 Label* is_instance_lbl, 122 Label* is_instance_lbl,
123 Label* is_not_instance_lbl) { 123 Label* is_not_instance_lbl) {
124 UNIMPLEMENTED(); 124 UNIMPLEMENTED();
125 return NULL; 125 return NULL;
126 } 126 }
127 127
128 128
129 void FlowGraphCompiler::GenerateInstanceOf(intptr_t token_pos, 129 void FlowGraphCompiler::GenerateInstanceOf(intptr_t token_pos,
130 intptr_t deopt_id,
131 const AbstractType& type, 130 const AbstractType& type,
132 bool negate_result, 131 bool negate_result,
133 LocationSummary* locs) { 132 LocationSummary* locs) {
134 UNIMPLEMENTED(); 133 UNIMPLEMENTED();
135 } 134 }
136 135
137 136
138 void FlowGraphCompiler::GenerateAssertAssignable(intptr_t token_pos, 137 void FlowGraphCompiler::GenerateAssertAssignable(intptr_t token_pos,
139 intptr_t deopt_id, 138 intptr_t deopt_id,
140 const AbstractType& dst_type, 139 const AbstractType& dst_type,
141 const String& dst_name, 140 const String& dst_name,
142 LocationSummary* locs) { 141 LocationSummary* locs) {
143 UNIMPLEMENTED(); 142 UNIMPLEMENTED();
144 } 143 }
145 144
146 145
147 void FlowGraphCompiler::EmitInstructionPrologue(Instruction* instr) { 146 void FlowGraphCompiler::EmitInstructionPrologue(Instruction* instr) {
148 if (!is_optimizing()) { 147 if (!is_optimizing()) {
149 if (FLAG_enable_type_checks && instr->IsAssertAssignable()) { 148 if (FLAG_enable_type_checks && instr->IsAssertAssignable()) {
150 AssertAssignableInstr* assert = instr->AsAssertAssignable(); 149 AssertAssignableInstr* assert = instr->AsAssertAssignable();
151 AddCurrentDescriptor(PcDescriptors::kDeoptBefore, 150 AddCurrentDescriptor(PcDescriptors::kDeopt,
152 assert->deopt_id(), 151 assert->deopt_id(),
153 assert->token_pos()); 152 assert->token_pos());
153 } else if (instr->IsGuardField()) {
154 GuardFieldInstr* guard = instr->AsGuardField();
155 AddCurrentDescriptor(PcDescriptors::kDeopt,
156 guard->deopt_id(),
157 Scanner::kDummyTokenIndex);
158 } else if (instr->CanBeDeoptimizationTarget()) {
159 AddCurrentDescriptor(PcDescriptors::kDeopt,
160 instr->deopt_id(),
161 Scanner::kDummyTokenIndex);
154 } 162 }
155 AllocateRegistersLocally(instr); 163 AllocateRegistersLocally(instr);
156 } 164 }
157 } 165 }
158 166
159 167
160 void FlowGraphCompiler::EmitInstructionEpilogue(Instruction* instr) { 168 void FlowGraphCompiler::EmitInstructionEpilogue(Instruction* instr) {
161 if (is_optimizing()) return; 169 if (is_optimizing()) return;
162 Definition* defn = instr->AsDefinition(); 170 Definition* defn = instr->AsDefinition();
163 if ((defn != NULL) && defn->is_used()) { 171 if ((defn != NULL) && defn->is_used()) {
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after
643 651
644 652
645 void ParallelMoveResolver::Exchange(const Address& mem1, const Address& mem2) { 653 void ParallelMoveResolver::Exchange(const Address& mem1, const Address& mem2) {
646 UNIMPLEMENTED(); 654 UNIMPLEMENTED();
647 } 655 }
648 656
649 657
650 } // namespace dart 658 } // namespace dart
651 659
652 #endif // defined TARGET_ARCH_MIPS 660 #endif // defined TARGET_ARCH_MIPS
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698