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

Unified Diff: runtime/vm/flow_graph_compiler_x64.cc

Issue 17421003: Store arguments descriptor in ICData. Remove loading of arguments descriptor at unoptimized call si… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 6 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_mips.cc ('k') | runtime/vm/flow_graph_inliner.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 24207)
+++ runtime/vm/flow_graph_compiler_x64.cc (working copy)
@@ -1002,7 +1002,8 @@
function.IsClosureFunction() ? Symbols::Call().raw() : function.name());
const int kNumArgsChecked = 1;
const ICData& ic_data = ICData::ZoneHandle(
- ICData::New(function, name, Isolate::kNoDeoptId, kNumArgsChecked));
+ ICData::New(function, name, Object::null_array(),
+ Isolate::kNoDeoptId, kNumArgsChecked));
__ LoadObject(RBX, ic_data);
// RBP - 8 : PC marker, allows easy identification of RawInstruction obj.
// RBP : points to previous frame pointer.
@@ -1173,7 +1174,7 @@
// Invoke noSuchMethod function passing "call" as the function name.
const int kNumArgsChecked = 1;
const ICData& ic_data = ICData::ZoneHandle(
- ICData::New(function, Symbols::Call(),
+ ICData::New(function, Symbols::Call(), Object::null_array(),
Isolate::kNoDeoptId, kNumArgsChecked));
__ LoadObject(RBX, ic_data);
// RBP - 8 : PC marker, for easy identification of RawInstruction obj.
@@ -1315,7 +1316,6 @@
void FlowGraphCompiler::EmitOptimizedInstanceCall(
ExternalLabel* target_label,
const ICData& ic_data,
- const Array& arguments_descriptor,
intptr_t argument_count,
intptr_t deopt_id,
intptr_t token_pos,
@@ -1328,7 +1328,6 @@
// Pass the function explicitly, it is used in IC stub.
__ LoadObject(RDI, parsed_function().function());
__ LoadObject(RBX, ic_data);
- __ LoadObject(R10, arguments_descriptor);
GenerateDartCall(deopt_id,
token_pos,
target_label,
@@ -1340,13 +1339,11 @@
void FlowGraphCompiler::EmitInstanceCall(ExternalLabel* target_label,
const ICData& ic_data,
- const Array& arguments_descriptor,
intptr_t argument_count,
intptr_t deopt_id,
intptr_t token_pos,
LocationSummary* locs) {
__ LoadObject(RBX, ic_data);
- __ LoadObject(R10, arguments_descriptor);
GenerateDartCall(deopt_id,
token_pos,
target_label,
@@ -1358,13 +1355,15 @@
void FlowGraphCompiler::EmitMegamorphicInstanceCall(
const ICData& ic_data,
- const Array& arguments_descriptor,
intptr_t argument_count,
intptr_t deopt_id,
intptr_t token_pos,
LocationSummary* locs) {
MegamorphicCacheTable* table = Isolate::Current()->megamorphic_cache_table();
const String& name = String::Handle(ic_data.target_name());
+ const Array& arguments_descriptor =
+ Array::ZoneHandle(ic_data.arguments_descriptor());
+ ASSERT(!arguments_descriptor.IsNull());
const MegamorphicCache& cache =
MegamorphicCache::ZoneHandle(table->Lookup(name, arguments_descriptor));
Label not_smi, load_cache;
« no previous file with comments | « runtime/vm/flow_graph_compiler_mips.cc ('k') | runtime/vm/flow_graph_inliner.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698