| Index: runtime/vm/intermediate_language.cc
|
| ===================================================================
|
| --- runtime/vm/intermediate_language.cc (revision 8617)
|
| +++ runtime/vm/intermediate_language.cc (working copy)
|
| @@ -56,6 +56,15 @@
|
| }
|
|
|
|
|
| +void Computation::ReplaceWith(Computation* other) {
|
| + ASSERT(other->instr() == NULL);
|
| + ASSERT(instr() != NULL);
|
| + other->set_instr(other->instr());
|
| + instr()->replace_computation(other);
|
| + set_instr(NULL);
|
| +}
|
| +
|
| +
|
| intptr_t InstanceCallComp::InputCount() const {
|
| return ArgumentCount();
|
| }
|
| @@ -467,6 +476,11 @@
|
| }
|
|
|
|
|
| +RawAbstractType* PolymorphicInstanceCallComp::StaticType() const {
|
| + return Type::DynamicType();
|
| +}
|
| +
|
| +
|
| RawAbstractType* StaticCallComp::StaticType() const {
|
| return function().result_type();
|
| }
|
| @@ -979,6 +993,29 @@
|
| }
|
|
|
|
|
| +LocationSummary* PolymorphicInstanceCallComp::MakeLocationSummary() const {
|
| + return MakeCallSummary();
|
| +}
|
| +
|
| +
|
| +void PolymorphicInstanceCallComp::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| + // TODO(srdjan): Add checked calls, a series of checks each issuing
|
| + // a direct call to the target if check succeeds.
|
| + ASSERT(VerifyCallComputation(instance_call()));
|
| + compiler->AddCurrentDescriptor(PcDescriptors::kDeopt,
|
| + instance_call()->cid(),
|
| + instance_call()->token_index(),
|
| + instance_call()->try_index());
|
| + compiler->GenerateInstanceCall(instance_call()->cid(),
|
| + instance_call()->token_index(),
|
| + instance_call()->try_index(),
|
| + instance_call()->function_name(),
|
| + instance_call()->ArgumentCount(),
|
| + instance_call()->argument_names(),
|
| + instance_call()->checked_argument_count());
|
| +}
|
| +
|
| +
|
| LocationSummary* StaticCallComp::MakeLocationSummary() const {
|
| return MakeCallSummary();
|
| }
|
|
|