| Index: runtime/vm/intermediate_language.cc
|
| ===================================================================
|
| --- runtime/vm/intermediate_language.cc (revision 10775)
|
| +++ runtime/vm/intermediate_language.cc (working copy)
|
| @@ -329,6 +329,14 @@
|
| }
|
|
|
|
|
| +intptr_t BindInstr::GetPropagatedCid() {
|
| + if (has_propagated_cid()) return propagated_cid();
|
| + intptr_t cid = computation()->ResultCid();
|
| + ASSERT(cid != kIllegalCid);
|
| + SetPropagatedCid(cid);
|
| + return cid;
|
| +}
|
| +
|
| void BindInstr::RecordAssignedVars(BitVector* assigned_vars,
|
| intptr_t fixed_parameter_count) {
|
| computation()->RecordAssignedVars(assigned_vars, fixed_parameter_count);
|
| @@ -568,6 +576,19 @@
|
| }
|
|
|
|
|
| +intptr_t ConstantVal::ResultCid() const {
|
| + if (value().IsNull()) {
|
| + return kNullCid;
|
| + }
|
| + if (value().IsInstance()) {
|
| + return Class::Handle(value().clazz()).id();
|
| + } else {
|
| + ASSERT(value().IsAbstractTypeArguments());
|
| + return kDynamicCid;
|
| + }
|
| +}
|
| +
|
| +
|
| RawAbstractType* UseVal::CompileType() const {
|
| if (definition()->HasPropagatedType()) {
|
| return definition()->PropagatedType();
|
| @@ -581,6 +602,11 @@
|
| }
|
|
|
|
|
| +intptr_t UseVal::ResultCid() const {
|
| + return definition()->GetPropagatedCid();
|
| +}
|
| +
|
| +
|
| RawAbstractType* AssertAssignableComp::CompileType() const {
|
| const AbstractType& value_compile_type =
|
| AbstractType::Handle(value()->CompileType());
|
|
|