/* * 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; } } }