| Index: runtime/vm/intermediate_language.h
|
| diff --git a/runtime/vm/intermediate_language.h b/runtime/vm/intermediate_language.h
|
| index 6b00393b110b239bacacb0db99de400919cdf2aa..3e4bf0b42ff87274c20d4f2d90c1e2087d562495 100644
|
| --- a/runtime/vm/intermediate_language.h
|
| +++ b/runtime/vm/intermediate_language.h
|
| @@ -2536,7 +2536,7 @@ class UnboxedConstantInstr : public ConstantInstr {
|
| };
|
|
|
|
|
| -class AssertAssignableInstr : public TemplateDefinition<2, Throws, Pure> {
|
| +class AssertAssignableInstr : public TemplateDefinition<3, Throws, Pure> {
|
| public:
|
| AssertAssignableInstr(TokenPosition token_pos,
|
| Value* value,
|
| @@ -2554,7 +2554,7 @@ class AssertAssignableInstr : public TemplateDefinition<2, Throws, Pure> {
|
| ASSERT(!dst_name.IsNull());
|
| SetInputAt(0, value);
|
| SetInputAt(1, instantiator_type_arguments);
|
| - ASSERT(function_type_arguments == NULL); // TODO(regis): Implement.
|
| + SetInputAt(2, function_type_arguments);
|
| }
|
|
|
| DECLARE_INSTRUCTION(AssertAssignable)
|
| @@ -2563,6 +2563,7 @@ class AssertAssignableInstr : public TemplateDefinition<2, Throws, Pure> {
|
|
|
| Value* value() const { return inputs_[0]; }
|
| Value* instantiator_type_arguments() const { return inputs_[1]; }
|
| + Value* function_type_arguments() const { return inputs_[2]; }
|
|
|
| virtual TokenPosition token_pos() const { return token_pos_; }
|
| const AbstractType& dst_type() const { return dst_type_; }
|
| @@ -3971,7 +3972,7 @@ class BooleanNegateInstr : public TemplateDefinition<1, NoThrow> {
|
| };
|
|
|
|
|
| -class InstanceOfInstr : public TemplateDefinition<2, Throws> {
|
| +class InstanceOfInstr : public TemplateDefinition<3, Throws> {
|
| public:
|
| InstanceOfInstr(TokenPosition token_pos,
|
| Value* value,
|
| @@ -3983,7 +3984,7 @@ class InstanceOfInstr : public TemplateDefinition<2, Throws> {
|
| ASSERT(!type.IsNull());
|
| SetInputAt(0, value);
|
| SetInputAt(1, instantiator_type_arguments);
|
| - ASSERT(function_type_arguments == NULL); // TODO(regis): Implement.
|
| + SetInputAt(2, function_type_arguments);
|
| }
|
|
|
| DECLARE_INSTRUCTION(InstanceOf)
|
| @@ -3991,6 +3992,7 @@ class InstanceOfInstr : public TemplateDefinition<2, Throws> {
|
|
|
| Value* value() const { return inputs_[0]; }
|
| Value* instantiator_type_arguments() const { return inputs_[1]; }
|
| + Value* function_type_arguments() const { return inputs_[2]; }
|
|
|
| const AbstractType& type() const { return type_; }
|
| virtual TokenPosition token_pos() const { return token_pos_; }
|
| @@ -4398,7 +4400,7 @@ class LoadFieldInstr : public TemplateDefinition<1, NoThrow> {
|
| };
|
|
|
|
|
| -class InstantiateTypeInstr : public TemplateDefinition<1, Throws> {
|
| +class InstantiateTypeInstr : public TemplateDefinition<2, Throws> {
|
| public:
|
| InstantiateTypeInstr(TokenPosition token_pos,
|
| const AbstractType& type,
|
| @@ -4408,13 +4410,14 @@ class InstantiateTypeInstr : public TemplateDefinition<1, Throws> {
|
| token_pos_(token_pos),
|
| type_(type) {
|
| ASSERT(type.IsZoneHandle() || type.IsReadOnlyHandle());
|
| - ASSERT(function_type_arguments == NULL); // TODO(regis): Implement.
|
| SetInputAt(0, instantiator_type_arguments);
|
| + SetInputAt(1, function_type_arguments);
|
| }
|
|
|
| DECLARE_INSTRUCTION(InstantiateType)
|
|
|
| Value* instantiator_type_arguments() const { return inputs_[0]; }
|
| + Value* function_type_arguments() const { return inputs_[1]; }
|
| const AbstractType& type() const { return type_; }
|
| virtual TokenPosition token_pos() const { return token_pos_; }
|
|
|
| @@ -4432,7 +4435,7 @@ class InstantiateTypeInstr : public TemplateDefinition<1, Throws> {
|
| };
|
|
|
|
|
| -class InstantiateTypeArgumentsInstr : public TemplateDefinition<1, Throws> {
|
| +class InstantiateTypeArgumentsInstr : public TemplateDefinition<2, Throws> {
|
| public:
|
| InstantiateTypeArgumentsInstr(TokenPosition token_pos,
|
| const TypeArguments& type_arguments,
|
| @@ -4444,13 +4447,14 @@ class InstantiateTypeArgumentsInstr : public TemplateDefinition<1, Throws> {
|
| type_arguments_(type_arguments),
|
| instantiator_class_(instantiator_class) {
|
| ASSERT(type_arguments.IsZoneHandle());
|
| - ASSERT(function_type_arguments == NULL); // TODO(regis): Implement.
|
| SetInputAt(0, instantiator_type_arguments);
|
| + SetInputAt(1, function_type_arguments);
|
| }
|
|
|
| DECLARE_INSTRUCTION(InstantiateTypeArguments)
|
|
|
| Value* instantiator_type_arguments() const { return inputs_[0]; }
|
| + Value* function_type_arguments() const { return inputs_[1]; }
|
| const TypeArguments& type_arguments() const { return type_arguments_; }
|
| const Class& instantiator_class() const { return instantiator_class_; }
|
| virtual TokenPosition token_pos() const { return token_pos_; }
|
|
|