Chromium Code Reviews| Index: runtime/vm/flow_graph_compiler_ia32.cc |
| =================================================================== |
| --- runtime/vm/flow_graph_compiler_ia32.cc (revision 35593) |
| +++ runtime/vm/flow_graph_compiler_ia32.cc (working copy) |
| @@ -1240,6 +1240,7 @@ |
| intptr_t deopt_id, |
| intptr_t token_pos, |
| LocationSummary* locs) { |
| + ASSERT(Array::Handle(ic_data.arguments_descriptor()).Length() > 0); |
|
regis
2014/04/30 21:47:07
You should add these asserts on all platforms.
srdjan
2014/04/30 21:58:27
Done.
|
| // Each ICData propagated from unoptimized to optimized code contains the |
| // function that corresponds to the Dart function of that IC call. Due |
| // to inlining in optimized code, that function may not correspond to the |
| @@ -1263,6 +1264,7 @@ |
| intptr_t deopt_id, |
| intptr_t token_pos, |
| LocationSummary* locs) { |
| + ASSERT(Array::Handle(ic_data.arguments_descriptor()).Length() > 0); |
| __ LoadObject(ECX, ic_data); |
| GenerateDartCall(deopt_id, |
| token_pos, |
| @@ -1283,7 +1285,7 @@ |
| const String& name = String::Handle(ic_data.target_name()); |
| const Array& arguments_descriptor = |
| Array::ZoneHandle(ic_data.arguments_descriptor()); |
| - ASSERT(!arguments_descriptor.IsNull()); |
| + ASSERT(!arguments_descriptor.IsNull() && (arguments_descriptor.Length() > 0)); |
| const MegamorphicCache& cache = |
| MegamorphicCache::ZoneHandle(table->Lookup(name, arguments_descriptor)); |
| Label not_smi, load_cache; |