13c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein/*
23c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * Copyright (C) 2011 The Android Open Source Project
33c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein *
43c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * Licensed under the Apache License, Version 2.0 (the "License");
53c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * you may not use this file except in compliance with the License.
63c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * You may obtain a copy of the License at
73c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein *
83c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein *      http://www.apache.org/licenses/LICENSE-2.0
93c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein *
103c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * Unless required by applicable law or agreed to in writing, software
113c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * distributed under the License is distributed on an "AS IS" BASIS,
123c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * See the License for the specific language governing permissions and
143c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * limitations under the License.
153c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein */
163c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein
173c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornsteinpackage com.android.dx.io;
183c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein
193c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein/**
203c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein * The various types that an index in a Dalvik instruction might refer to.
213c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein */
223c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornsteinpublic enum IndexType {
23f67b6afce08a6b9b5daf7d4d69e132fda07bc78fDan Bornstein    /** "Unknown." Used for undefined opcodes. */
24f67b6afce08a6b9b5daf7d4d69e132fda07bc78fDan Bornstein    UNKNOWN,
25f67b6afce08a6b9b5daf7d4d69e132fda07bc78fDan Bornstein
26f67b6afce08a6b9b5daf7d4d69e132fda07bc78fDan Bornstein    /** no index used */
27f67b6afce08a6b9b5daf7d4d69e132fda07bc78fDan Bornstein    NONE,
28f67b6afce08a6b9b5daf7d4d69e132fda07bc78fDan Bornstein
293c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    /** "It depends." Used for {@code throw-verification-error}. */
303c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    VARIES,
313c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein
323c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    /** type reference index */
333c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    TYPE_REF,
343c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein
353c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    /** string reference index */
363c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    STRING_REF,
373c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein
383c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    /** method reference index */
393c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    METHOD_REF,
403c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein
413c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    /** field reference index */
423c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    FIELD_REF,
433c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein
44ab9e85c38ce771b506b90ee81586c594c7c5ac4eOrion Hodson    /** method index and a proto index */
45ab9e85c38ce771b506b90ee81586c594c7c5ac4eOrion Hodson    METHOD_AND_PROTO_REF,
46ab9e85c38ce771b506b90ee81586c594c7c5ac4eOrion Hodson
47fa5e510d770070f8e7f47d126f5be138aa55cb84Orion Hodson    /** call site reference index */
48fa5e510d770070f8e7f47d126f5be138aa55cb84Orion Hodson    CALL_SITE_REF,
49fa5e510d770070f8e7f47d126f5be138aa55cb84Orion Hodson
503c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    /** inline method index (for inline linked method invocations) */
513c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    INLINE_METHOD,
523c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein
533c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    /** direct vtable offset (for static linked method invocations) */
543c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    VTABLE_OFFSET,
553c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein
563c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein    /** direct field offset (for static linked field accesses) */
57766a678339e615d7e0b3935111392b7eef50df24Orion Hodson    FIELD_OFFSET,
58766a678339e615d7e0b3935111392b7eef50df24Orion Hodson
59766a678339e615d7e0b3935111392b7eef50df24Orion Hodson    /** method handle reference index (for loading constant method handles) */
60766a678339e615d7e0b3935111392b7eef50df24Orion Hodson    METHOD_HANDLE_REF,
61766a678339e615d7e0b3935111392b7eef50df24Orion Hodson
62766a678339e615d7e0b3935111392b7eef50df24Orion Hodson    /** proto reference index (for loading constant proto ref) */
63766a678339e615d7e0b3935111392b7eef50df24Orion Hodson    PROTO_REF;
643c5df37a2df7368eb274eb097e9cfa2ccc7fffb6Dan Bornstein}
65