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

Unified Diff: runtime/vm/intermediate_language_dbc.cc

Issue 2799373002: Pass a second type argument vector to all type instantiation calls in the VM. (Closed)
Patch Set: addressed comments 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
« no previous file with comments | « runtime/vm/intermediate_language_arm64.cc ('k') | runtime/vm/intermediate_language_ia32.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/intermediate_language_dbc.cc
diff --git a/runtime/vm/intermediate_language_dbc.cc b/runtime/vm/intermediate_language_dbc.cc
index c3a2ac839c06958fb441b4b69970849de427906c..f4a252f130cc1e8770032b5081b6df4df0b66e00 100644
--- a/runtime/vm/intermediate_language_dbc.cc
+++ b/runtime/vm/intermediate_language_dbc.cc
@@ -186,7 +186,7 @@ DEFINE_UNIMPLEMENTED_EMIT_BRANCH_CODE(CheckedSmiComparison)
EMIT_NATIVE_CODE(InstanceOf,
- 2,
+ 3,
Location::SameAsFirstInput(),
LocationSummary::kCall) {
SubtypeTestCache& test_cache = SubtypeTestCache::Handle();
@@ -197,6 +197,7 @@ EMIT_NATIVE_CODE(InstanceOf,
if (compiler->is_optimizing()) {
__ Push(locs()->in(0).reg()); // Value.
__ Push(locs()->in(1).reg()); // Instantiator type arguments.
+ __ Push(locs()->in(2).reg()); // Function type arguments.
}
__ PushConstant(type());
@@ -212,7 +213,7 @@ EMIT_NATIVE_CODE(InstanceOf,
DEFINE_MAKE_LOCATION_SUMMARY(AssertAssignable,
- 2,
+ 3,
Location::SameAsFirstInput(),
LocationSummary::kCall);
@@ -1272,11 +1273,12 @@ EMIT_NATIVE_CODE(ReThrow, 0, Location::NoLocation(), LocationSummary::kCall) {
}
EMIT_NATIVE_CODE(InstantiateType,
- 1,
+ 2,
Location::RequiresRegister(),
LocationSummary::kCall) {
if (compiler->is_optimizing()) {
- __ Push(locs()->in(0).reg());
+ __ Push(locs()->in(0).reg()); // Instantiator type arguments.
+ __ Push(locs()->in(1).reg()); // Function type arguments.
}
__ InstantiateType(__ AddConstant(type()));
compiler->RecordSafepoint(locs());
@@ -1288,14 +1290,15 @@ EMIT_NATIVE_CODE(InstantiateType,
}
EMIT_NATIVE_CODE(InstantiateTypeArguments,
- 1,
+ 2,
Location::RequiresRegister(),
LocationSummary::kCall) {
if (compiler->is_optimizing()) {
- __ Push(locs()->in(0).reg());
+ __ Push(locs()->in(0).reg()); // Instantiator type arguments.
+ __ Push(locs()->in(1).reg()); // Function type arguments.
}
__ InstantiateTypeArgumentsTOS(
- type_arguments().IsRawInstantiatedRaw(type_arguments().Length()),
+ type_arguments().IsRawWhenInstantiatedFromRaw(type_arguments().Length()),
__ AddConstant(type_arguments()));
compiler->RecordSafepoint(locs());
compiler->AddCurrentDescriptor(RawPcDescriptors::kOther, deopt_id(),
« no previous file with comments | « runtime/vm/intermediate_language_arm64.cc ('k') | runtime/vm/intermediate_language_ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698