| Index: runtime/vm/intermediate_language_ia32.cc
|
| ===================================================================
|
| --- runtime/vm/intermediate_language_ia32.cc (revision 22154)
|
| +++ runtime/vm/intermediate_language_ia32.cc (working copy)
|
| @@ -1875,7 +1875,9 @@
|
|
|
| // 'instantiator_reg' is the instantiator AbstractTypeArguments object
|
| // (or null).
|
| - if (!type_arguments().IsUninstantiatedIdentity()) {
|
| + if (!type_arguments().IsUninstantiatedIdentity() &&
|
| + !type_arguments().CanShareInstantiatorTypeArguments(
|
| + instantiator_class())) {
|
| // If the instantiator is null and if the type argument vector
|
| // instantiated from null becomes a vector of dynamic, then use null as
|
| // the type arguments.
|
| @@ -1925,7 +1927,9 @@
|
|
|
| // instantiator_reg is the instantiator type argument vector, i.e. an
|
| // AbstractTypeArguments object (or null).
|
| - if (!type_arguments().IsUninstantiatedIdentity()) {
|
| + if (!type_arguments().IsUninstantiatedIdentity() &&
|
| + !type_arguments().CanShareInstantiatorTypeArguments(
|
| + instantiator_class())) {
|
| // If the instantiator is null and if the type argument vector
|
| // instantiated from null becomes a vector of dynamic, then use null as
|
| // the type arguments.
|
| @@ -1968,7 +1972,9 @@
|
|
|
| // instantiator_reg is the instantiator AbstractTypeArguments object
|
| // (or null).
|
| - if (type_arguments().IsUninstantiatedIdentity()) {
|
| + if (type_arguments().IsUninstantiatedIdentity() ||
|
| + type_arguments().CanShareInstantiatorTypeArguments(
|
| + instantiator_class())) {
|
| // The instantiator was used in VisitExtractConstructorTypeArguments as the
|
| // instantiated type arguments, no proper instantiator needed.
|
| __ movl(instantiator_reg,
|
|
|