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

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

Issue 10915026: We can throw an exception but we cannot deoptimize at a runtime call. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 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 | Annotate | Revision Log
« no previous file with comments | « runtime/vm/intermediate_language.h ('k') | runtime/vm/intermediate_language_ia32.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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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/dart_entry.h" 8 #include "vm/dart_entry.h"
9 #include "vm/flow_graph_allocator.h" 9 #include "vm/flow_graph_allocator.h"
10 #include "vm/flow_graph_builder.h" 10 #include "vm/flow_graph_builder.h"
(...skipping 1158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1169 } 1169 }
1170 1170
1171 1171
1172 LocationSummary* ThrowInstr::MakeLocationSummary() const { 1172 LocationSummary* ThrowInstr::MakeLocationSummary() const {
1173 return new LocationSummary(0, 0, LocationSummary::kCall); 1173 return new LocationSummary(0, 0, LocationSummary::kCall);
1174 } 1174 }
1175 1175
1176 1176
1177 1177
1178 void ThrowInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 1178 void ThrowInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
1179 compiler->GenerateCallRuntime(deopt_id(), 1179 compiler->GenerateCallRuntime(token_pos(),
1180 token_pos(),
1181 kThrowRuntimeEntry, 1180 kThrowRuntimeEntry,
1182 locs()); 1181 locs());
1183 __ int3(); 1182 __ int3();
1184 } 1183 }
1185 1184
1186 1185
1187 LocationSummary* ReThrowInstr::MakeLocationSummary() const { 1186 LocationSummary* ReThrowInstr::MakeLocationSummary() const {
1188 return new LocationSummary(0, 0, LocationSummary::kCall); 1187 return new LocationSummary(0, 0, LocationSummary::kCall);
1189 } 1188 }
1190 1189
1191 1190
1192 void ReThrowInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 1191 void ReThrowInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
1193 compiler->GenerateCallRuntime(deopt_id(), 1192 compiler->GenerateCallRuntime(token_pos(),
1194 token_pos(),
1195 kReThrowRuntimeEntry, 1193 kReThrowRuntimeEntry,
1196 locs()); 1194 locs());
1197 __ int3(); 1195 __ int3();
1198 } 1196 }
1199 1197
1200 1198
1201 LocationSummary* GotoInstr::MakeLocationSummary() const { 1199 LocationSummary* GotoInstr::MakeLocationSummary() const {
1202 return new LocationSummary(0, 0, LocationSummary::kNoCall); 1200 return new LocationSummary(0, 0, LocationSummary::kNoCall);
1203 } 1201 }
1204 1202
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
1370 function(), 1368 function(),
1371 ArgumentCount(), 1369 ArgumentCount(),
1372 argument_names(), 1370 argument_names(),
1373 locs()); 1371 locs());
1374 __ Bind(&done); 1372 __ Bind(&done);
1375 } 1373 }
1376 1374
1377 1375
1378 void AssertAssignableComp::EmitNativeCode(FlowGraphCompiler* compiler) { 1376 void AssertAssignableComp::EmitNativeCode(FlowGraphCompiler* compiler) {
1379 if (!is_eliminated()) { 1377 if (!is_eliminated()) {
1380 compiler->GenerateAssertAssignable(deopt_id(), 1378 compiler->GenerateAssertAssignable(token_pos(),
1381 token_pos(),
1382 dst_type(), 1379 dst_type(),
1383 dst_name(), 1380 dst_name(),
1384 locs()); 1381 locs());
1385 } 1382 }
1386 ASSERT(locs()->in(0).reg() == locs()->out().reg()); 1383 ASSERT(locs()->in(0).reg() == locs()->out().reg());
1387 } 1384 }
1388 1385
1389 1386
1390 LocationSummary* BooleanNegateComp::MakeLocationSummary() const { 1387 LocationSummary* BooleanNegateComp::MakeLocationSummary() const {
1391 return LocationSummary::Make(1, 1388 return LocationSummary::Make(1,
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
1528 value->set_use_index(i); 1525 value->set_use_index(i);
1529 value->AddToEnvUseList(); 1526 value->AddToEnvUseList();
1530 } 1527 }
1531 instr->set_env(copy); 1528 instr->set_env(copy);
1532 } 1529 }
1533 1530
1534 1531
1535 #undef __ 1532 #undef __
1536 1533
1537 } // namespace dart 1534 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/intermediate_language.h ('k') | runtime/vm/intermediate_language_ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698