summaryrefslogtreecommitdiffstats
path: root/dx/src/com/android/dx/dex/code/BlockAddresses.java
diff options
context:
space:
mode:
Diffstat (limited to 'dx/src/com/android/dx/dex/code/BlockAddresses.java')
-rw-r--r--dx/src/com/android/dx/dex/code/BlockAddresses.java143
1 files changed, 0 insertions, 143 deletions
diff --git a/dx/src/com/android/dx/dex/code/BlockAddresses.java b/dx/src/com/android/dx/dex/code/BlockAddresses.java
deleted file mode 100644
index 9fea66c62..000000000
--- a/dx/src/com/android/dx/dex/code/BlockAddresses.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) 2007 The Android Open Source Project
- *
- * Licensed 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 com.android.dx.dex.code;
-
-import com.android.dx.rop.code.BasicBlock;
-import com.android.dx.rop.code.BasicBlockList;
-import com.android.dx.rop.code.Insn;
-import com.android.dx.rop.code.RopMethod;
-import com.android.dx.rop.code.SourcePosition;
-
-/**
- * Container for the set of {@link CodeAddress} instances associated with
- * the blocks of a particular method. Each block has a corresponding
- * start address, end address, and last instruction address.
- */
-public final class BlockAddresses {
- /** non-null; array containing addresses for the start of each basic
- * block (indexed by basic block label) */
- private final CodeAddress[] starts;
-
- /** non-null; array containing addresses for the final instruction
- * of each basic block (indexed by basic block label) */
- private final CodeAddress[] lasts;
-
- /** non-null; array containing addresses for the end (just past the
- * final instruction) of each basic block (indexed by basic block
- * label) */
- private final CodeAddress[] ends;
-
- /**
- * Constructs an instance.
- *
- * @param method non-null; the method to have block addresses for
- */
- public BlockAddresses(RopMethod method) {
- BasicBlockList blocks = method.getBlocks();
- int maxLabel = blocks.getMaxLabel();
-
- this.starts = new CodeAddress[maxLabel];
- this.lasts = new CodeAddress[maxLabel];
- this.ends = new CodeAddress[maxLabel];
-
- setupArrays(method);
- }
-
- /**
- * Gets the instance for the start of the given block.
- *
- * @param block non-null; the block in question
- * @return non-null; the appropriate instance
- */
- public CodeAddress getStart(BasicBlock block) {
- return starts[block.getLabel()];
- }
-
- /**
- * Gets the instance for the start of the block with the given label.
- *
- * @param label non-null; the label of the block in question
- * @return non-null; the appropriate instance
- */
- public CodeAddress getStart(int label) {
- return starts[label];
- }
-
- /**
- * Gets the instance for the final instruction of the given block.
- *
- * @param block non-null; the block in question
- * @return non-null; the appropriate instance
- */
- public CodeAddress getLast(BasicBlock block) {
- return lasts[block.getLabel()];
- }
-
- /**
- * Gets the instance for the final instruction of the block with
- * the given label.
- *
- * @param label non-null; the label of the block in question
- * @return non-null; the appropriate instance
- */
- public CodeAddress getLast(int label) {
- return lasts[label];
- }
-
- /**
- * Gets the instance for the end (address after the final instruction)
- * of the given block.
- *
- * @param block non-null; the block in question
- * @return non-null; the appropriate instance
- */
- public CodeAddress getEnd(BasicBlock block) {
- return ends[block.getLabel()];
- }
-
- /**
- * Gets the instance for the end (address after the final instruction)
- * of the block with the given label.
- *
- * @param label non-null; the label of the block in question
- * @return non-null; the appropriate instance
- */
- public CodeAddress getEnd(int label) {
- return ends[label];
- }
-
- /**
- * Sets up the address arrays.
- */
- private void setupArrays(RopMethod method) {
- BasicBlockList blocks = method.getBlocks();
- int sz = blocks.size();
-
- for (int i = 0; i < sz; i++) {
- BasicBlock one = blocks.get(i);
- int label = one.getLabel();
- Insn insn = one.getInsns().get(0);
-
- starts[label] = new CodeAddress(insn.getPosition());
-
- SourcePosition pos = one.getLastInsn().getPosition();
-
- lasts[label] = new CodeAddress(pos);
- ends[label] = new CodeAddress(pos);
- }
- }
-}