blob: da9d75f7777348ae8c154f0e6935051df576eddf [file] [log] [blame]
/*
* Copyright (c) 2002, 2013, 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.
*
* 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.
*
*/
package sun.jvm.hotspot.runtime;
public interface ClassConstants
{
// constant pool constant types - from JVM spec.
public static final int JVM_CONSTANT_Utf8 = 1;
public static final int JVM_CONSTANT_Unicode = 2; // unused
public static final int JVM_CONSTANT_Integer = 3;
public static final int JVM_CONSTANT_Float = 4;
public static final int JVM_CONSTANT_Long = 5;
public static final int JVM_CONSTANT_Double = 6;
public static final int JVM_CONSTANT_Class = 7;
public static final int JVM_CONSTANT_String = 8;
public static final int JVM_CONSTANT_Fieldref = 9;
public static final int JVM_CONSTANT_Methodref = 10;
public static final int JVM_CONSTANT_InterfaceMethodref = 11;
public static final int JVM_CONSTANT_NameAndType = 12;
public static final int JVM_CONSTANT_MethodHandle = 15;
public static final int JVM_CONSTANT_MethodType = 16;
// static final int JVM_CONSTANT_(unused) = 17;
public static final int JVM_CONSTANT_InvokeDynamic = 18;
// JVM_CONSTANT_MethodHandle subtypes
public static final int JVM_REF_getField = 1;
public static final int JVM_REF_getStatic = 2;
public static final int JVM_REF_putField = 3;
public static final int JVM_REF_putStatic = 4;
public static final int JVM_REF_invokeVirtual = 5;
public static final int JVM_REF_invokeStatic = 6;
public static final int JVM_REF_invokeSpecial = 7;
public static final int JVM_REF_newInvokeSpecial = 8;
public static final int JVM_REF_invokeInterface = 9;
// HotSpot specific constant pool constant types.
// For bad value initialization
public static final int JVM_CONSTANT_Invalid = 0;
public static final int JVM_CONSTANT_UnresolvedClass = 100; // Temporary tag until actual use
public static final int JVM_CONSTANT_ClassIndex = 101; // Temporary tag while constructing constant pool
public static final int JVM_CONSTANT_StringIndex = 102; // Temporary tag while constructing constant pool
public static final int JVM_CONSTANT_UnresolvedClassInError = 103; // Error tag due to resolution error
public static final int JVM_CONSTANT_MethodHandleInError = 104; // Error tag due to resolution error
public static final int JVM_CONSTANT_MethodTypeInError = 105; // Error tag due to resolution error
// 1.5 major/minor version numbers from JVM spec. 3rd edition
public static final short MAJOR_VERSION = 49;
public static final short MINOR_VERSION = 0;
public static final short MAJOR_VERSION_OLD = 46;
public static final short MINOR_VERSION_OLD = 0;
// From jvm.h
public static final long JVM_ACC_PUBLIC = 0x0001; /* visible to everyone */
public static final long JVM_ACC_PRIVATE = 0x0002; /* visible only to the defining class */
public static final long JVM_ACC_PROTECTED = 0x0004; /* visible to subclasses */
public static final long JVM_ACC_STATIC = 0x0008; /* instance variable is static */
public static final long JVM_ACC_FINAL = 0x0010; /* no further subclassing, overriding */
public static final long JVM_ACC_SYNCHRONIZED = 0x0020; /* wrap method call in monitor lock */
public static final long JVM_ACC_SUPER = 0x0020; /* funky handling of invokespecial */
public static final long JVM_ACC_VOLATILE = 0x0040; /* can not cache in registers */
public static final long JVM_ACC_BRIDGE = 0x0040; /* bridge method generated by compiler */
public static final long JVM_ACC_TRANSIENT = 0x0080; /* not persistant */
public static final long JVM_ACC_VARARGS = 0x0080; /* method declared with variable number of args */
public static final long JVM_ACC_NATIVE = 0x0100; /* implemented in C */
public static final long JVM_ACC_INTERFACE = 0x0200; /* class is an interface */
public static final long JVM_ACC_ABSTRACT = 0x0400; /* no definition provided */
public static final long JVM_ACC_STRICT = 0x0800; /* strict floating point */
public static final long JVM_ACC_SYNTHETIC = 0x1000; /* compiler-generated class, method or field */
public static final long JVM_ACC_ANNOTATION = 0x2000; /* annotation type */
public static final long JVM_ACC_ENUM = 0x4000; /* field is declared as element of enum */
// from accessFlags.hpp - hotspot internal flags
// flags actually put in .class file
public static final long JVM_ACC_WRITTEN_FLAGS = 0x00007FFF;
// Method* flags
// monitorenter/monitorexit bytecodes match
public static final long JVM_ACC_MONITOR_MATCH = 0x10000000;
// Method contains monitorenter/monitorexit bytecodes
public static final long JVM_ACC_HAS_MONITOR_BYTECODES = 0x20000000;
// Method has loops
public static final long JVM_ACC_HAS_LOOPS = 0x40000000;
// The loop flag has been initialized
public static final long JVM_ACC_LOOPS_FLAG_INIT = (int)0x80000000;
// Queued for compilation
public static final long JVM_ACC_QUEUED = 0x01000000;
// TEMPORARY: currently on stack replacement compilation is not built into the
// invocation counter machinery. Until it is, we will keep track of methods which
// cannot be on stack replaced in the access flags.
public static final long JVM_ACC_NOT_OSR_COMPILABLE = 0x08000000;
public static final long JVM_ACC_HAS_LINE_NUMBER_TABLE = 0x00100000;
public static final long JVM_ACC_HAS_CHECKED_EXCEPTIONS = 0x00400000;
public static final long JVM_ACC_HAS_JSRS = 0x00800000;
// RedefineClasses() has made method obsolete
public static final long JVM_ACC_IS_OBSOLETE = 0x00010000;
// Klass* flags
// True if this class has miranda methods in it's vtable
public static final long JVM_ACC_HAS_MIRANDA_METHODS = 0x10000000;
// True if klass has a vanilla default constructor
public static final long JVM_ACC_HAS_VANILLA_CONSTRUCTOR = 0x20000000;
// True if klass has a non-empty finalize() method
public static final long JVM_ACC_HAS_FINALIZER = 0x40000000;
// True if klass supports the Clonable interface
public static final long JVM_ACC_IS_CLONEABLE = 0x80000000;
// Klass* and Method* flags
public static final long JVM_ACC_HAS_LOCAL_VARIABLE_TABLE = 0x00200000;
// flags promoted from methods to the holding klass
public static final long JVM_ACC_PROMOTED_FLAGS = 0x00200000;
// field flags
// Note: these flags must be defined in the low order 16 bits because
// InstanceKlass only stores a ushort worth of information from the
// AccessFlags value.
// field access is watched by JVMTI
public static final long JVM_ACC_FIELD_ACCESS_WATCHED = 0x00002000;
// field modification is watched by JVMTI
public static final long JVM_ACC_FIELD_MODIFICATION_WATCHED = 0x00008000;
// field has generic signature
public static final long JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE = 0x00000800;
// flags accepted by set_field_flags
public static final long JVM_ACC_FIELD_FLAGS = 0x00008000 | JVM_ACC_WRITTEN_FLAGS;
// from jvm.h
public static final long JVM_RECOGNIZED_CLASS_MODIFIERS = (JVM_ACC_PUBLIC |
JVM_ACC_FINAL |
JVM_ACC_SUPER |
JVM_ACC_INTERFACE |
JVM_ACC_ABSTRACT |
JVM_ACC_ANNOTATION |
JVM_ACC_ENUM |
JVM_ACC_SYNTHETIC);
public static final long JVM_RECOGNIZED_FIELD_MODIFIERS = (JVM_ACC_PUBLIC |
JVM_ACC_PRIVATE |
JVM_ACC_PROTECTED |
JVM_ACC_STATIC |
JVM_ACC_FINAL |
JVM_ACC_VOLATILE |
JVM_ACC_TRANSIENT |
JVM_ACC_ENUM |
JVM_ACC_SYNTHETIC);
public static final long JVM_RECOGNIZED_METHOD_MODIFIERS = (JVM_ACC_PUBLIC |
JVM_ACC_PRIVATE |
JVM_ACC_PROTECTED |
JVM_ACC_STATIC |
JVM_ACC_FINAL |
JVM_ACC_SYNCHRONIZED |
JVM_ACC_BRIDGE |
JVM_ACC_VARARGS |
JVM_ACC_NATIVE |
JVM_ACC_ABSTRACT |
JVM_ACC_STRICT |
JVM_ACC_SYNTHETIC);
}