mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-17 17:44:40 +02:00
8187443: Forest Consolidation: Move files to unified layout
Reviewed-by: darcy, ihse
This commit is contained in:
parent
270fe13182
commit
3789983e89
56923 changed files with 3 additions and 15727 deletions
4387
src/java.base/share/native/libverify/check_code.c
Normal file
4387
src/java.base/share/native/libverify/check_code.c
Normal file
File diff suppressed because it is too large
Load diff
274
src/java.base/share/native/libverify/check_format.c
Normal file
274
src/java.base/share/native/libverify/check_format.c
Normal file
|
@ -0,0 +1,274 @@
|
|||
/*
|
||||
* Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
#include <setjmp.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "jni.h"
|
||||
#include "jvm.h"
|
||||
|
||||
typedef unsigned short unicode;
|
||||
|
||||
static char *
|
||||
skip_over_fieldname(char *name, jboolean slash_okay,
|
||||
unsigned int len);
|
||||
static char *
|
||||
skip_over_field_signature(char *name, jboolean void_okay,
|
||||
unsigned int len);
|
||||
|
||||
/*
|
||||
* Return non-zero if the character is a valid in JVM class name, zero
|
||||
* otherwise. The only characters currently disallowed from JVM class
|
||||
* names are given in the table below:
|
||||
*
|
||||
* Character Hex Decimal
|
||||
* '.' 0x2e 46
|
||||
* '/' 0x2f 47
|
||||
* ';' 0x3b 59
|
||||
* '[' 0x5b 91
|
||||
*
|
||||
* (Method names have further restrictions dealing with the '<' and
|
||||
* '>' characters.)
|
||||
*/
|
||||
static int isJvmIdentifier(unicode ch) {
|
||||
if( ch > 91 || ch < 46 )
|
||||
return 1; /* Lowercase ASCII letters are > 91 */
|
||||
else { /* 46 <= ch <= 91 */
|
||||
if (ch <= 90 && ch >= 60) {
|
||||
return 1; /* Uppercase ASCII recognized here */
|
||||
} else { /* ch == 91 || 46 <= ch <= 59 */
|
||||
if (ch == 91 || ch == 59 || ch <= 47)
|
||||
return 0;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static unicode
|
||||
next_utf2unicode(char **utfstring_ptr, int * valid)
|
||||
{
|
||||
unsigned char *ptr = (unsigned char *)(*utfstring_ptr);
|
||||
unsigned char ch, ch2, ch3;
|
||||
int length = 1; /* default length */
|
||||
unicode result = 0x80; /* default bad result; */
|
||||
*valid = 1;
|
||||
switch ((ch = ptr[0]) >> 4) {
|
||||
default:
|
||||
result = ch;
|
||||
break;
|
||||
|
||||
case 0x8: case 0x9: case 0xA: case 0xB: case 0xF:
|
||||
/* Shouldn't happen. */
|
||||
*valid = 0;
|
||||
break;
|
||||
|
||||
case 0xC: case 0xD:
|
||||
/* 110xxxxx 10xxxxxx */
|
||||
if (((ch2 = ptr[1]) & 0xC0) == 0x80) {
|
||||
unsigned char high_five = ch & 0x1F;
|
||||
unsigned char low_six = ch2 & 0x3F;
|
||||
result = (high_five << 6) + low_six;
|
||||
length = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0xE:
|
||||
/* 1110xxxx 10xxxxxx 10xxxxxx */
|
||||
if (((ch2 = ptr[1]) & 0xC0) == 0x80) {
|
||||
if (((ch3 = ptr[2]) & 0xC0) == 0x80) {
|
||||
unsigned char high_four = ch & 0x0f;
|
||||
unsigned char mid_six = ch2 & 0x3f;
|
||||
unsigned char low_six = ch3 & 0x3f;
|
||||
result = (((high_four << 6) + mid_six) << 6) + low_six;
|
||||
length = 3;
|
||||
} else {
|
||||
length = 2;
|
||||
}
|
||||
}
|
||||
break;
|
||||
} /* end of switch */
|
||||
|
||||
*utfstring_ptr = (char *)(ptr + length);
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Take pointer to a string. Skip over the longest part of the string that
|
||||
* could be taken as a fieldname. Allow '/' if slash_okay is JNI_TRUE.
|
||||
*
|
||||
* Return a pointer to just past the fieldname. Return NULL if no fieldname
|
||||
* at all was found, or in the case of slash_okay being true, we saw
|
||||
* consecutive slashes (meaning we were looking for a qualified path but
|
||||
* found something that was badly-formed).
|
||||
*/
|
||||
static char *
|
||||
skip_over_fieldname(char *name, jboolean slash_okay,
|
||||
unsigned int length)
|
||||
{
|
||||
char *p;
|
||||
unicode ch;
|
||||
unicode last_ch = 0;
|
||||
int valid = 1;
|
||||
/* last_ch == 0 implies we are looking at the first char. */
|
||||
for (p = name; p != name + length; last_ch = ch) {
|
||||
char *old_p = p;
|
||||
ch = *p;
|
||||
if (ch < 128) {
|
||||
p++;
|
||||
if (isJvmIdentifier(ch)) {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
char *tmp_p = p;
|
||||
ch = next_utf2unicode(&tmp_p, &valid);
|
||||
if (valid == 0)
|
||||
return 0;
|
||||
p = tmp_p;
|
||||
if (isJvmIdentifier(ch)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (slash_okay && ch == '/' && last_ch) {
|
||||
if (last_ch == '/') {
|
||||
return 0; /* Don't permit consecutive slashes */
|
||||
}
|
||||
} else if (ch == '_' || ch == '$') {
|
||||
} else {
|
||||
return last_ch ? old_p : 0;
|
||||
}
|
||||
}
|
||||
return last_ch ? p : 0;
|
||||
}
|
||||
|
||||
/* Take pointer to a string. Skip over the longest part of the string that
|
||||
* could be taken as a field signature. Allow "void" if void_okay.
|
||||
*
|
||||
* Return a pointer to just past the signature. Return NULL if no legal
|
||||
* signature is found.
|
||||
*/
|
||||
|
||||
static char *
|
||||
skip_over_field_signature(char *name, jboolean void_okay,
|
||||
unsigned int length)
|
||||
{
|
||||
unsigned int array_dim = 0;
|
||||
for (;length > 0;) {
|
||||
switch (name[0]) {
|
||||
case JVM_SIGNATURE_VOID:
|
||||
if (!void_okay) return 0;
|
||||
/* FALL THROUGH */
|
||||
case JVM_SIGNATURE_BOOLEAN:
|
||||
case JVM_SIGNATURE_BYTE:
|
||||
case JVM_SIGNATURE_CHAR:
|
||||
case JVM_SIGNATURE_SHORT:
|
||||
case JVM_SIGNATURE_INT:
|
||||
case JVM_SIGNATURE_FLOAT:
|
||||
case JVM_SIGNATURE_LONG:
|
||||
case JVM_SIGNATURE_DOUBLE:
|
||||
return name + 1;
|
||||
|
||||
case JVM_SIGNATURE_CLASS: {
|
||||
/* Skip over the classname, if one is there. */
|
||||
char *p =
|
||||
skip_over_fieldname(name + 1, JNI_TRUE, --length);
|
||||
/* The next character better be a semicolon. */
|
||||
if (p && p - name - 1 > 0 && p[0] == ';')
|
||||
return p + 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
case JVM_SIGNATURE_ARRAY:
|
||||
array_dim++;
|
||||
/* JVMS 2nd ed. 4.10 */
|
||||
/* The number of dimensions in an array is limited to 255 ... */
|
||||
if (array_dim > 255) {
|
||||
return 0;
|
||||
}
|
||||
/* The rest of what's there better be a legal signature. */
|
||||
name++;
|
||||
length--;
|
||||
void_okay = JNI_FALSE;
|
||||
break;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* Used in java/lang/Class.c */
|
||||
/* Determine if the specified name is legal
|
||||
* UTF name for a classname.
|
||||
*
|
||||
* Note that this routine expects the internal form of qualified classes:
|
||||
* the dots should have been replaced by slashes.
|
||||
*/
|
||||
JNIEXPORT jboolean
|
||||
VerifyClassname(char *name, jboolean allowArrayClass)
|
||||
{
|
||||
unsigned int length = strlen(name);
|
||||
char *p;
|
||||
|
||||
if (length > 0 && name[0] == JVM_SIGNATURE_ARRAY) {
|
||||
if (!allowArrayClass) {
|
||||
return JNI_FALSE;
|
||||
} else {
|
||||
/* Everything that's left better be a field signature */
|
||||
p = skip_over_field_signature(name, JNI_FALSE, length);
|
||||
}
|
||||
} else {
|
||||
/* skip over the fieldname. Slashes are okay */
|
||||
p = skip_over_fieldname(name, JNI_TRUE, length);
|
||||
}
|
||||
return (p != 0 && p - name == (ptrdiff_t)length);
|
||||
}
|
||||
|
||||
/*
|
||||
* Translates '.' to '/'. Returns JNI_TRUE is any / were present.
|
||||
*/
|
||||
JNIEXPORT jboolean
|
||||
VerifyFixClassname(char *name)
|
||||
{
|
||||
char *p = name;
|
||||
jboolean slashesFound = JNI_FALSE;
|
||||
int valid = 1;
|
||||
|
||||
while (valid != 0 && *p != '\0') {
|
||||
if (*p == '/') {
|
||||
slashesFound = JNI_TRUE;
|
||||
p++;
|
||||
} else if (*p == '.') {
|
||||
*p++ = '/';
|
||||
} else {
|
||||
next_utf2unicode(&p, &valid);
|
||||
}
|
||||
}
|
||||
|
||||
return slashesFound && valid != 0;
|
||||
}
|
257
src/java.base/share/native/libverify/opcodes.in_out
Normal file
257
src/java.base/share/native/libverify/opcodes.in_out
Normal file
|
@ -0,0 +1,257 @@
|
|||
/*
|
||||
* Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
char * const opcode_in_out[][2] = {
|
||||
{"", ""}, /* nop */
|
||||
{"", "A"}, /* aconst_null */
|
||||
{"", "I"}, /* iconst_m1 */
|
||||
{"", "I"}, /* iconst_0 */
|
||||
{"", "I"}, /* iconst_1 */
|
||||
{"", "I"}, /* iconst_2 */
|
||||
{"", "I"}, /* iconst_3 */
|
||||
{"", "I"}, /* iconst_4 */
|
||||
{"", "I"}, /* iconst_5 */
|
||||
{"", "L"}, /* lconst_0 */
|
||||
{"", "L"}, /* lconst_1 */
|
||||
{"", "F"}, /* fconst_0 */
|
||||
{"", "F"}, /* fconst_1 */
|
||||
{"", "F"}, /* fconst_2 */
|
||||
{"", "D"}, /* dconst_0 */
|
||||
{"", "D"}, /* dconst_1 */
|
||||
{"", "I"}, /* bipush */
|
||||
{"", "I"}, /* sipush */
|
||||
{"", "?"}, /* ldc */
|
||||
{"", "?"}, /* ldc_w */
|
||||
{"", "?"}, /* ldc2_w */
|
||||
{"", "I"}, /* iload */
|
||||
{"", "L"}, /* lload */
|
||||
{"", "F"}, /* fload */
|
||||
{"", "D"}, /* dload */
|
||||
{"", "A"}, /* aload */
|
||||
{"", "I"}, /* iload_0 */
|
||||
{"", "I"}, /* iload_1 */
|
||||
{"", "I"}, /* iload_2 */
|
||||
{"", "I"}, /* iload_3 */
|
||||
{"", "L"}, /* lload_0 */
|
||||
{"", "L"}, /* lload_1 */
|
||||
{"", "L"}, /* lload_2 */
|
||||
{"", "L"}, /* lload_3 */
|
||||
{"", "F"}, /* fload_0 */
|
||||
{"", "F"}, /* fload_1 */
|
||||
{"", "F"}, /* fload_2 */
|
||||
{"", "F"}, /* fload_3 */
|
||||
{"", "D"}, /* dload_0 */
|
||||
{"", "D"}, /* dload_1 */
|
||||
{"", "D"}, /* dload_2 */
|
||||
{"", "D"}, /* dload_3 */
|
||||
{"", "A"}, /* aload_0 */
|
||||
{"", "A"}, /* aload_1 */
|
||||
{"", "A"}, /* aload_2 */
|
||||
{"", "A"}, /* aload_3 */
|
||||
{"[I]I", "I"}, /* iaload */
|
||||
{"[L]I", "L"}, /* laload */
|
||||
{"[F]I", "F"}, /* faload */
|
||||
{"[D]I", "D"}, /* daload */
|
||||
{"[A]I", "A"}, /* aaload */
|
||||
{"[B]I", "I"}, /* baload */
|
||||
{"[C]I", "I"}, /* caload */
|
||||
{"[S]I", "I"}, /* saload */
|
||||
{"I", ""}, /* istore */
|
||||
{"L", ""}, /* lstore */
|
||||
{"F", ""}, /* fstore */
|
||||
{"D", ""}, /* dstore */
|
||||
{"A", ""}, /* astore */
|
||||
{"I", ""}, /* istore_0 */
|
||||
{"I", ""}, /* istore_1 */
|
||||
{"I", ""}, /* istore_2 */
|
||||
{"I", ""}, /* istore_3 */
|
||||
{"L", ""}, /* lstore_0 */
|
||||
{"L", ""}, /* lstore_1 */
|
||||
{"L", ""}, /* lstore_2 */
|
||||
{"L", ""}, /* lstore_3 */
|
||||
{"F", ""}, /* fstore_0 */
|
||||
{"F", ""}, /* fstore_1 */
|
||||
{"F", ""}, /* fstore_2 */
|
||||
{"F", ""}, /* fstore_3 */
|
||||
{"D", ""}, /* dstore_0 */
|
||||
{"D", ""}, /* dstore_1 */
|
||||
{"D", ""}, /* dstore_2 */
|
||||
{"D", ""}, /* dstore_3 */
|
||||
{"A", ""}, /* astore_0 */
|
||||
{"A", ""}, /* astore_1 */
|
||||
{"A", ""}, /* astore_2 */
|
||||
{"A", ""}, /* astore_3 */
|
||||
{"[I]II", ""}, /* iastore */
|
||||
{"[L]IL", ""}, /* lastore */
|
||||
{"[F]IF", ""}, /* fastore */
|
||||
{"[D]ID", ""}, /* dastore */
|
||||
{"[A]IA", ""}, /* aastore */
|
||||
{"[B]II", ""}, /* bastore */
|
||||
{"[C]II", ""}, /* castore */
|
||||
{"[S]II", ""}, /* sastore */
|
||||
{"1", ""}, /* pop */
|
||||
{"2+1", ""}, /* pop2 */
|
||||
{"1", "11"}, /* dup */
|
||||
{"21", "121"}, /* dup_x1 */
|
||||
{"3+21", "1321"}, /* dup_x2 */
|
||||
{"2+1", "2121"}, /* dup2 */
|
||||
{"32+1", "21321"}, /* dup2_x1 */
|
||||
{"4+32+1", "214321"}, /* dup2_x2 */
|
||||
{"21", "12"}, /* swap */
|
||||
{"II", "I"}, /* iadd */
|
||||
{"LL", "L"}, /* ladd */
|
||||
{"FF", "F"}, /* fadd */
|
||||
{"DD", "D"}, /* dadd */
|
||||
{"II", "I"}, /* isub */
|
||||
{"LL", "L"}, /* lsub */
|
||||
{"FF", "F"}, /* fsub */
|
||||
{"DD", "D"}, /* dsub */
|
||||
{"II", "I"}, /* imul */
|
||||
{"LL", "L"}, /* lmul */
|
||||
{"FF", "F"}, /* fmul */
|
||||
{"DD", "D"}, /* dmul */
|
||||
{"II", "I"}, /* idiv */
|
||||
{"LL", "L"}, /* ldiv */
|
||||
{"FF", "F"}, /* fdiv */
|
||||
{"DD", "D"}, /* ddiv */
|
||||
{"II", "I"}, /* irem */
|
||||
{"LL", "L"}, /* lrem */
|
||||
{"FF", "F"}, /* frem */
|
||||
{"DD", "D"}, /* drem */
|
||||
{"I", "I"}, /* ineg */
|
||||
{"L", "L"}, /* lneg */
|
||||
{"F", "F"}, /* fneg */
|
||||
{"D", "D"}, /* dneg */
|
||||
{"II", "I"}, /* ishl */
|
||||
{"LI", "L"}, /* lshl */
|
||||
{"II", "I"}, /* ishr */
|
||||
{"LI", "L"}, /* lshr */
|
||||
{"II", "I"}, /* iushr */
|
||||
{"LI", "L"}, /* lushr */
|
||||
{"II", "I"}, /* iand */
|
||||
{"LL", "L"}, /* land */
|
||||
{"II", "I"}, /* ior */
|
||||
{"LL", "L"}, /* lor */
|
||||
{"II", "I"}, /* ixor */
|
||||
{"LL", "L"}, /* lxor */
|
||||
{"", ""}, /* iinc */
|
||||
{"I", "L"}, /* i2l */
|
||||
{"I", "F"}, /* i2f */
|
||||
{"I", "D"}, /* i2d */
|
||||
{"L", "I"}, /* l2i */
|
||||
{"L", "F"}, /* l2f */
|
||||
{"L", "D"}, /* l2d */
|
||||
{"F", "I"}, /* f2i */
|
||||
{"F", "L"}, /* f2l */
|
||||
{"F", "D"}, /* f2d */
|
||||
{"D", "I"}, /* d2i */
|
||||
{"D", "L"}, /* d2l */
|
||||
{"D", "F"}, /* d2f */
|
||||
{"I", "I"}, /* i2b */
|
||||
{"I", "I"}, /* i2c */
|
||||
{"I", "I"}, /* i2s */
|
||||
{"LL", "I"}, /* lcmp */
|
||||
{"FF", "I"}, /* fcmpl */
|
||||
{"FF", "I"}, /* fcmpg */
|
||||
{"DD", "I"}, /* dcmpl */
|
||||
{"DD", "I"}, /* dcmpg */
|
||||
{"I", ""}, /* ifeq */
|
||||
{"I", ""}, /* ifne */
|
||||
{"I", ""}, /* iflt */
|
||||
{"I", ""}, /* ifge */
|
||||
{"I", ""}, /* ifgt */
|
||||
{"I", ""}, /* ifle */
|
||||
{"II", ""}, /* if_icmpeq */
|
||||
{"II", ""}, /* if_icmpne */
|
||||
{"II", ""}, /* if_icmplt */
|
||||
{"II", ""}, /* if_icmpge */
|
||||
{"II", ""}, /* if_icmpgt */
|
||||
{"II", ""}, /* if_icmple */
|
||||
{"AA", ""}, /* if_acmpeq */
|
||||
{"AA", ""}, /* if_acmpne */
|
||||
{"", ""}, /* goto */
|
||||
{"", "R"}, /* jsr */
|
||||
{"", ""}, /* ret */
|
||||
{"I", ""}, /* tableswitch */
|
||||
{"I", ""}, /* lookupswitch */
|
||||
{"I", ""}, /* ireturn */
|
||||
{"L", ""}, /* lreturn */
|
||||
{"F", ""}, /* freturn */
|
||||
{"D", ""}, /* dreturn */
|
||||
{"A", ""}, /* areturn */
|
||||
{"", ""}, /* return */
|
||||
{"", "?"}, /* getstatic */
|
||||
{"?", ""}, /* putstatic */
|
||||
{"A", "?"}, /* getfield */
|
||||
{"?", ""}, /* putfield */
|
||||
{"?", "?"}, /* invokevirtual */
|
||||
{"?", "?"}, /* invokespecial */
|
||||
{"?", "?"}, /* invokestatic */
|
||||
{"?", "?"}, /* invokeinterface */
|
||||
{"?", "?"}, /* invokedynamic */
|
||||
{"", "A"}, /* new */
|
||||
{"I", "A"}, /* newarray */
|
||||
{"I", "A"}, /* anewarray */
|
||||
{"[?]", "I"}, /* arraylength */
|
||||
{"O", ""}, /* athrow */
|
||||
{"A", "A"}, /* checkcast */
|
||||
{"A", "I"}, /* instanceof */
|
||||
{"A", ""}, /* monitorenter */
|
||||
{"A", ""}, /* monitorexit */
|
||||
{"", ""}, /* wide */
|
||||
{"?", "A"}, /* multianewarray */
|
||||
{"A", ""}, /* ifnull */
|
||||
{"A", ""}, /* ifnonnull */
|
||||
{"", ""}, /* goto_w */
|
||||
{"", "R"}, /* jsr_w */
|
||||
{"", ""}, /* breakpoint */
|
||||
{"", "?"}, /* ldc_quick */
|
||||
{"", "?"}, /* ldc_w_quick */
|
||||
{"", "?"}, /* ldc2_w_quick */
|
||||
{"A", "?"}, /* getfield_quick */
|
||||
{"?", ""}, /* putfield_quick */
|
||||
{"A", "?"}, /* getfield2_quick */
|
||||
{"?", ""}, /* putfield2_quick */
|
||||
{"", "?"}, /* getstatic_quick */
|
||||
{"?", ""}, /* putstatic_quick */
|
||||
{"", "?"}, /* getstatic2_quick */
|
||||
{"?", "_"}, /* putstatic2_quick */
|
||||
{"?", "?"}, /* invokevirtual_quick */
|
||||
{"?", "?"}, /* invokenonvirtual_quick */
|
||||
{"?", "?"}, /* invokesuper_quick */
|
||||
{"?", "?"}, /* invokestatic_quick */
|
||||
{"?", "?"}, /* invokeinterface_quick */
|
||||
{"?", "?"}, /* invokevirtualobject_quick */
|
||||
{"?", "?"}, /* invokeignored_quick */
|
||||
{"", "A"}, /* new_quick */
|
||||
{"I", "A"}, /* anewarray_quick */
|
||||
{"?", "A"}, /* multianewarray_quick */
|
||||
{"A", "A"}, /* checkcast_quick */
|
||||
{"A", "I"}, /* instanceof_quick */
|
||||
{"?", "?"}, /* invokevirtual_quick_w */
|
||||
{"A", "?"}, /* getfield_quick_w */
|
||||
{"?", ""}, /* putfield_quick_w */
|
||||
{"A", ""}, /* nonnull_quick */
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue