/* * Copyright (c) 2012, 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 com.sun.max.vm.ext.jvmti; import static com.sun.max.vm.ext.jvmti.JVMTIConstants.*; /** * Support for {@link JVMTIFunctions#GetErrorName}. * The use of an enum has the VM create the strings for us. */ public enum JVMTIError { // Errors NONE(JVMTI_ERROR_NONE), INVALID_THREAD(JVMTI_ERROR_INVALID_THREAD), INVALID_THREAD_GROUP(JVMTI_ERROR_INVALID_THREAD_GROUP), INVALID_PRIORITY(JVMTI_ERROR_INVALID_PRIORITY), THREAD_NOT_SUSPENDED(JVMTI_ERROR_THREAD_NOT_SUSPENDED), THREAD_SUSPENDED(JVMTI_ERROR_THREAD_SUSPENDED), THREAD_NOT_ALIVE(JVMTI_ERROR_THREAD_NOT_ALIVE), INVALID_OBJECT(JVMTI_ERROR_INVALID_OBJECT), INVALID_CLASS(JVMTI_ERROR_INVALID_CLASS), CLASS_NOT_PREPARED(JVMTI_ERROR_CLASS_NOT_PREPARED), INVALID_METHODID(JVMTI_ERROR_INVALID_METHODID), INVALID_LOCATION(JVMTI_ERROR_INVALID_LOCATION), INVALID_FIELDID(JVMTI_ERROR_INVALID_FIELDID), NO_MORE_FRAMES(JVMTI_ERROR_NO_MORE_FRAMES), OPAQUE_FRAME(JVMTI_ERROR_OPAQUE_FRAME), TYPE_MISMATCH(JVMTI_ERROR_TYPE_MISMATCH), INVALID_SLOT(JVMTI_ERROR_INVALID_SLOT), DUPLICATE(JVMTI_ERROR_DUPLICATE), NOT_FOUND(JVMTI_ERROR_NOT_FOUND), INVALID_MONITOR(JVMTI_ERROR_INVALID_MONITOR), NOT_MONITOR_OWNER(JVMTI_ERROR_NOT_MONITOR_OWNER), INTERRUPT(JVMTI_ERROR_INTERRUPT), INVALID_CLASS_FORMAT(JVMTI_ERROR_INVALID_CLASS_FORMAT), CIRCULAR_CLASS_DEFINITION(JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION), FAILS_VERIFICATION(JVMTI_ERROR_FAILS_VERIFICATION), UNSUPPORTED_REDEFINITION_METHOD_ADDED(JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED), UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED(JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED), INVALID_TYPESTATE(JVMTI_ERROR_INVALID_TYPESTATE), UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED(JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED), UNSUPPORTED_REDEFINITION_METHOD_DELETED(JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED), UNSUPPORTED_VERSION(JVMTI_ERROR_UNSUPPORTED_VERSION), NAMES_DONT_MATCH(JVMTI_ERROR_NAMES_DONT_MATCH), UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED(JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED), UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED(JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED), UNMODIFIABLE_CLASS(JVMTI_ERROR_UNMODIFIABLE_CLASS), NOT_AVAILABLE(JVMTI_ERROR_NOT_AVAILABLE), MUST_POSSESS_CAPABILITY(JVMTI_ERROR_MUST_POSSESS_CAPABILITY), NULL_POINTER(JVMTI_ERROR_NULL_POINTER), ABSENT_INFORMATION(JVMTI_ERROR_ABSENT_INFORMATION), INVALID_EVENT_TYPE(JVMTI_ERROR_INVALID_EVENT_TYPE), ILLEGAL_ARGUMENT(JVMTI_ERROR_ILLEGAL_ARGUMENT), NATIVE_METHOD(JVMTI_ERROR_NATIVE_METHOD), CLASS_LOADER_UNSUPPORTED(JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED), OUT_OF_MEMORY(JVMTI_ERROR_OUT_OF_MEMORY), ACCESS_DENIED(JVMTI_ERROR_ACCESS_DENIED), WRONG_PHASE(JVMTI_ERROR_WRONG_PHASE), INTERNAL(JVMTI_ERROR_INTERNAL), UNATTACHED_THREAD(JVMTI_ERROR_UNATTACHED_THREAD), INVALID_ENVIRONMENT(JVMTI_ERROR_INVALID_ENVIRONMENT), MAX(JVMTI_ERROR_MAX); final int code; private static final String JVMTI_ERROR_PREFIX = "JVMTI_ERROR_"; private static final JVMTIError[] VALUES = values(); /** * Full names as byte arrays. Index is the error code value, NOT {code ordinal()}. */ static final byte[][] nameBytes = new byte[JVMTI_ERROR_MAX + 1][]; static { for (int i = 0; i < VALUES.length; i++) { JVMTIError error = VALUES[i]; String fullName = JVMTI_ERROR_PREFIX + error.name(); nameBytes[error.code] = fullName.getBytes(); } } private JVMTIError(int code) { this.code = code; } public static String getName(int code) { return VALUES[code].name(); } }