| /* |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| */ |
| |
| package org.apache.flex.abc.graph; |
| |
| import java.util.Collection; |
| import java.util.List; |
| |
| import org.apache.flex.abc.semantics.Instruction; |
| |
| /** |
| * IBasicBlock defines the minimum necessary semantics |
| * of a vertex in an AET method body's {@link IFlowgraph}. |
| */ |
| public interface IBasicBlock |
| { |
| /** |
| * Get this block's successors; this defines the set of |
| * edges in the {@link IFlowgraph flowgraph}. |
| * @return this block's successors in the control-flow graph. |
| */ |
| Collection<? extends IBasicBlock> getSuccessors(); |
| |
| /** |
| * Get the contents of the block. |
| * @return this block's instructions as a mutable List. |
| */ |
| List<Instruction> getInstructions(); |
| |
| /** |
| * How big is this block? |
| * @return the size of getInstructions.size(). |
| */ |
| int size(); |
| |
| /** |
| * Fetch the Instruction at the specified position. |
| * @param idx - the Instruction's position. |
| * @return the Instruction at that position. |
| */ |
| Instruction get(int idx); |
| |
| /** |
| * Can this block's control fall through the end? |
| * @return true if the block doesn't unconditionally transfer control. |
| */ |
| boolean canFallThrough(); |
| } |