Mercurial > hg > graal-compiler
diff agent/src/share/classes/sun/jvm/hotspot/runtime/ClassConstants.java @ 0:a61af66fc99e jdk7-b24
Initial load
author | duke |
---|---|
date | Sat, 01 Dec 2007 00:00:00 +0000 |
parents | |
children | 1f2abec69714 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/ClassConstants.java Sat Dec 01 00:00:00 2007 +0000 @@ -0,0 +1,175 @@ +/* + * Copyright 2002-2007 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.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; + + // HotSpot specific constant pool constant types. + + // For bad value initialization + public static final int JVM_CONSTANT_Invalid = 0; + + // Temporary tag until actual use + public static final int JVM_CONSTANT_UnresolvedClass = 100; + + // Temporary tag while constructing constant pool + public static final int JVM_CONSTANT_ClassIndex = 101; + + // Temporary tag until actual use + public static final int JVM_CONSTANT_UnresolvedString = 102; + + // Temporary tag while constructing constant pool + public static final int JVM_CONSTANT_StringIndex = 103; + + // 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; + + // methodOop 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; + + // klassOop 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; + + // klassOop and methodOop 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; + + // 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_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); +}