Index: runtime/vm/intermediate_language_dbc.cc |
diff --git a/runtime/vm/intermediate_language_dbc.cc b/runtime/vm/intermediate_language_dbc.cc |
index 3838de2cbf23169b146711bf97fbfdd8a6d999b3..b82a0b61d43354e637bed25c9b1c4ff252f1cff3 100644 |
--- a/runtime/vm/intermediate_language_dbc.cc |
+++ b/runtime/vm/intermediate_language_dbc.cc |
@@ -240,7 +240,8 @@ EMIT_NATIVE_CODE(PolymorphicInstanceCall, |
Location::RegisterLocation(0), |
LocationSummary::kCall) { |
const Array& arguments_descriptor = Array::Handle(ArgumentsDescriptor::New( |
- instance_call()->ArgumentCount(), instance_call()->argument_names())); |
+ instance_call()->type_args_len(), instance_call()->ArgumentCount(), |
zra
2017/05/03 15:03:24
Does this one need to be adjusted?
regis
2017/05/09 18:31:23
Good catch! I missed this one. One more reason to
|
+ instance_call()->argument_names())); |
const intptr_t argdesc_kidx = __ AddConstant(arguments_descriptor); |
const CallTargets& ic_data = targets(); |
@@ -451,9 +452,11 @@ EMIT_NATIVE_CODE(ClosureCall, |
__ Push(locs()->in(0).reg()); |
} |
- intptr_t argument_count = ArgumentCount(); |
- const Array& arguments_descriptor = Array::ZoneHandle( |
- ArgumentsDescriptor::New(argument_count, argument_names())); |
+ const intptr_t ta_len = type_args_len(); |
+ const intptr_t argument_count = ArgumentCount(); // Includes type args. |
+ const Array& arguments_descriptor = |
+ Array::ZoneHandle(ArgumentsDescriptor::New( |
+ ta_len, argument_count - (ta_len > 0 ? 1 : 0), argument_names())); |
const intptr_t argdesc_kidx = |
compiler->assembler()->AddConstant(arguments_descriptor); |
__ StaticCall(argument_count, argdesc_kidx); |
@@ -919,9 +922,10 @@ EMIT_NATIVE_CODE(StringInterpolate, |
if (compiler->is_optimizing()) { |
__ Push(locs()->in(0).reg()); |
} |
+ const intptr_t kTypeArgsLen = 0; |
const intptr_t kArgumentCount = 1; |
- const Array& arguments_descriptor = Array::Handle( |
- ArgumentsDescriptor::New(kArgumentCount, Object::null_array())); |
+ const Array& arguments_descriptor = Array::Handle(ArgumentsDescriptor::New( |
+ kTypeArgsLen, kArgumentCount, Object::null_array())); |
__ PushConstant(CallFunction()); |
const intptr_t argdesc_kidx = __ AddConstant(arguments_descriptor); |
__ StaticCall(kArgumentCount, argdesc_kidx); |