| /* |
| * Copyright (C) 2011 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.dex; |
| |
| public final class Code { |
| private final int registersSize; |
| private final int insSize; |
| private final int outsSize; |
| private final int debugInfoOffset; |
| private final short[] instructions; |
| private final Try[] tries; |
| private final CatchHandler[] catchHandlers; |
| |
| public Code(int registersSize, int insSize, int outsSize, int debugInfoOffset, |
| short[] instructions, Try[] tries, CatchHandler[] catchHandlers) { |
| this.registersSize = registersSize; |
| this.insSize = insSize; |
| this.outsSize = outsSize; |
| this.debugInfoOffset = debugInfoOffset; |
| this.instructions = instructions; |
| this.tries = tries; |
| this.catchHandlers = catchHandlers; |
| } |
| |
| public int getRegistersSize() { |
| return registersSize; |
| } |
| |
| public int getInsSize() { |
| return insSize; |
| } |
| |
| public int getOutsSize() { |
| return outsSize; |
| } |
| |
| public int getDebugInfoOffset() { |
| return debugInfoOffset; |
| } |
| |
| public short[] getInstructions() { |
| return instructions; |
| } |
| |
| public Try[] getTries() { |
| return tries; |
| } |
| |
| public CatchHandler[] getCatchHandlers() { |
| return catchHandlers; |
| } |
| |
| public static class Try { |
| final int startAddress; |
| final int instructionCount; |
| final int catchHandlerIndex; |
| |
| Try(int startAddress, int instructionCount, int catchHandlerIndex) { |
| this.startAddress = startAddress; |
| this.instructionCount = instructionCount; |
| this.catchHandlerIndex = catchHandlerIndex; |
| } |
| |
| public int getStartAddress() { |
| return startAddress; |
| } |
| |
| public int getInstructionCount() { |
| return instructionCount; |
| } |
| |
| /** |
| * Returns this try's catch handler <strong>index</strong>. Note that |
| * this is distinct from the its catch handler <strong>offset</strong>. |
| */ |
| public int getCatchHandlerIndex() { |
| return catchHandlerIndex; |
| } |
| } |
| |
| public static class CatchHandler { |
| final int[] typeIndexes; |
| final int[] addresses; |
| final int catchAllAddress; |
| final int offset; |
| |
| public CatchHandler(int[] typeIndexes, int[] addresses, int catchAllAddress, int offset) { |
| this.typeIndexes = typeIndexes; |
| this.addresses = addresses; |
| this.catchAllAddress = catchAllAddress; |
| this.offset = offset; |
| } |
| |
| public int[] getTypeIndexes() { |
| return typeIndexes; |
| } |
| |
| public int[] getAddresses() { |
| return addresses; |
| } |
| |
| public int getCatchAllAddress() { |
| return catchAllAddress; |
| } |
| |
| public int getOffset() { |
| return offset; |
| } |
| } |
| } |