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

Unified Diff: runtime/vm/intermediate_language_dbc.cc

Issue 2859673002: Pass type argument vector to generic functions (if --reify-generic-functions is (Closed)
Patch Set: Created 3 years, 8 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
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);

Powered by Google App Engine
This is Rietveld 408576698