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

Unified Diff: runtime/vm/flow_graph_compiler_x64.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, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/flow_graph_compiler_x64.h ('k') | runtime/vm/il_printer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/flow_graph_compiler_x64.cc
===================================================================
--- runtime/vm/flow_graph_compiler_x64.cc (revision 11688)
+++ runtime/vm/flow_graph_compiler_x64.cc (working copy)
@@ -451,8 +451,7 @@
// Clobbers RCX and RDX.
// Returns:
// - true or false in RAX.
-void FlowGraphCompiler::GenerateInstanceOf(intptr_t deopt_id,
- intptr_t token_pos,
+void FlowGraphCompiler::GenerateInstanceOf(intptr_t token_pos,
const AbstractType& type,
bool negate_result,
LocationSummary* locs) {
@@ -495,7 +494,7 @@
__ pushq(RDX); // Instantiator type arguments.
__ LoadObject(RAX, test_cache);
__ pushq(RAX);
- GenerateCallRuntime(deopt_id, token_pos, kInstanceofRuntimeEntry, locs);
+ GenerateCallRuntime(token_pos, kInstanceofRuntimeEntry, locs);
// Pop the parameters supplied to the runtime entry. The result of the
// instanceof runtime call will be left as the result of the operation.
__ Drop(5);
@@ -534,8 +533,7 @@
// - object in RAX for successful assignable check (or throws TypeError).
// Performance notes: positive checks must be quick, negative checks can be slow
// as they throw an exception.
-void FlowGraphCompiler::GenerateAssertAssignable(intptr_t deopt_id,
- intptr_t token_pos,
+void FlowGraphCompiler::GenerateAssertAssignable(intptr_t token_pos,
const AbstractType& dst_type,
const String& dst_name,
LocationSummary* locs) {
@@ -563,8 +561,7 @@
__ pushq(RAX); // Push the source object.
__ PushObject(dst_name); // Push the name of the destination.
__ PushObject(error_message);
- GenerateCallRuntime(deopt_id,
- token_pos,
+ GenerateCallRuntime(token_pos,
kMalformedTypeErrorRuntimeEntry,
locs);
// We should never return here.
@@ -592,8 +589,7 @@
__ PushObject(dst_name); // Push the name of the destination.
__ LoadObject(RAX, test_cache);
__ pushq(RAX);
- GenerateCallRuntime(deopt_id,
- token_pos,
+ GenerateCallRuntime(token_pos,
kTypeCheckRuntimeEntry,
locs);
// Pop the parameters supplied to the runtime entry. The result of the
@@ -949,8 +945,7 @@
__ cmpq(RAX, Immediate(Smi::RawValue(parameter_count)));
__ j(EQUAL, &argc_in_range, Assembler::kNearJump);
if (function.IsClosureFunction()) {
- GenerateCallRuntime(Isolate::kNoDeoptId,
- function.token_pos(),
+ GenerateCallRuntime(function.token_pos(),
kClosureArgumentMismatchRuntimeEntry,
prologue_locs);
} else {
@@ -1050,13 +1045,12 @@
}
-void FlowGraphCompiler::GenerateCallRuntime(intptr_t deopt_id,
- intptr_t token_pos,
+void FlowGraphCompiler::GenerateCallRuntime(intptr_t token_pos,
const RuntimeEntry& entry,
LocationSummary* locs) {
ASSERT(!IsLeaf());
__ CallRuntime(entry);
- AddCurrentDescriptor(PcDescriptors::kOther, deopt_id, token_pos);
+ AddCurrentDescriptor(PcDescriptors::kOther, Isolate::kNoDeoptId, token_pos);
RecordSafepoint(locs);
}
« no previous file with comments | « runtime/vm/flow_graph_compiler_x64.h ('k') | runtime/vm/il_printer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698