| Index: runtime/vm/intermediate_language.cc
|
| diff --git a/runtime/vm/intermediate_language.cc b/runtime/vm/intermediate_language.cc
|
| index 418366e429ab13b734a4f4716aac11e1b01e31ed..fce978527984c0ab947d66657db42c4494058d81 100644
|
| --- a/runtime/vm/intermediate_language.cc
|
| +++ b/runtime/vm/intermediate_language.cc
|
| @@ -92,6 +92,106 @@ void FlowGraphVisitor::VisitBlocks() {
|
| }
|
|
|
|
|
| +// ==== Per-instruction input counts.
|
| +intptr_t AssertAssignableComp::InputCount() const {
|
| + // Value and optional instantiator type arguments.
|
| + return (instantiator_type_arguments() == NULL) ? 1 : 2;
|
| +}
|
| +
|
| +
|
| +intptr_t InstanceOfComp::InputCount() const {
|
| + // Value and optional type_arguments.
|
| + return (type_arguments() == NULL) ? 1 : 2;
|
| +}
|
| +
|
| +
|
| +intptr_t CreateClosureComp::InputCount() const {
|
| + // Optional type arguments.
|
| + return (type_arguments() == NULL) ? 0 : 1;
|
| +}
|
| +
|
| +
|
| +intptr_t InstanceCallComp::InputCount() const {
|
| + return ArgumentCount();
|
| +}
|
| +
|
| +
|
| +intptr_t StaticCallComp::InputCount() const {
|
| + return ArgumentCount();
|
| +}
|
| +
|
| +
|
| +intptr_t ClosureCallComp::InputCount() const {
|
| + // Context and arguments.
|
| + return 1 + ArgumentCount();
|
| +}
|
| +
|
| +
|
| +intptr_t AllocateObjectComp::InputCount() const {
|
| + return arguments().length();
|
| +}
|
| +
|
| +
|
| +intptr_t AllocateObjectWithBoundsCheckComp::InputCount() const {
|
| + return arguments().length();
|
| +}
|
| +
|
| +
|
| +intptr_t CreateArrayComp::InputCount() const {
|
| + return ElementCount();
|
| +}
|
| +
|
| +
|
| +intptr_t BranchInstr::InputCount() const {
|
| + return 1;
|
| +}
|
| +
|
| +
|
| +intptr_t ReThrowInstr::InputCount() const {
|
| + return 2;
|
| +}
|
| +
|
| +
|
| +intptr_t ThrowInstr::InputCount() const {
|
| + return 1;
|
| +}
|
| +
|
| +
|
| +intptr_t ReturnInstr::InputCount() const {
|
| + return 1;
|
| +}
|
| +
|
| +
|
| +intptr_t BindInstr::InputCount() const {
|
| + return computation()->InputCount();
|
| +}
|
| +
|
| +
|
| +intptr_t DoInstr::InputCount() const {
|
| + return computation()->InputCount();
|
| +}
|
| +
|
| +
|
| +intptr_t TuckTempInstr::InputCount() const {
|
| + return 0;
|
| +}
|
| +
|
| +
|
| +intptr_t PickTempInstr::InputCount() const {
|
| + return 0;
|
| +}
|
| +
|
| +
|
| +intptr_t TargetEntryInstr::InputCount() const {
|
| + return 0;
|
| +}
|
| +
|
| +
|
| +intptr_t JoinEntryInstr::InputCount() const {
|
| + return 0;
|
| +}
|
| +
|
| +
|
| // ==== Postorder graph traversal.
|
| void JoinEntryInstr::DiscoverBlocks(
|
| BlockEntryInstr* current_block,
|
|
|