From 31d522aa578c3c9a32f11737285505e0cd62d2aa Mon Sep 17 00:00:00 2001 From: kseitz Date: Wed, 20 Sep 2006 16:56:53 +0000 Subject: [PATCH] * jvmti.cc (_Jv_JVMTI_GetErrorName): New function. (_Jv_JVMTI_Interface): Define GetErrorName member. * testsuite/libjava.jvmti/geterrorname.java: New file. * testsuite/libjava.jvmti/geterrorname.out: New file. * testsuite/libjava.jvmti/natgeterrorname.cc: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117086 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/ChangeLog | 8 + libjava/jvmti.cc | 215 ++++++++++++++++++++- libjava/testsuite/libjava.jvmti/geterrorname.java | 12 ++ libjava/testsuite/libjava.jvmti/geterrorname.out | 49 +++++ libjava/testsuite/libjava.jvmti/natgeterrorname.cc | 76 ++++++++ 5 files changed, 359 insertions(+), 1 deletion(-) create mode 100644 libjava/testsuite/libjava.jvmti/geterrorname.java create mode 100644 libjava/testsuite/libjava.jvmti/geterrorname.out create mode 100644 libjava/testsuite/libjava.jvmti/natgeterrorname.cc diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 0afeddee3c1..e22d26aa8bd 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,11 @@ +2006-09-20 Keith Seitz + + * jvmti.cc (_Jv_JVMTI_GetErrorName): New function. + (_Jv_JVMTI_Interface): Define GetErrorName member. + * testsuite/libjava.jvmti/geterrorname.java: New file. + * testsuite/libjava.jvmti/geterrorname.out: New file. + * testsuite/libjava.jvmti/natgeterrorname.cc: New file. + 2006-09-20 Gary Benson * java/net/InetAddress.java: Mostly merged with Classpath. diff --git a/libjava/jvmti.cc b/libjava/jvmti.cc index a522374d7e2..b18ac68dc78 100644 --- a/libjava/jvmti.cc +++ b/libjava/jvmti.cc @@ -651,6 +651,219 @@ _Jv_JVMTI_GetObjectSize (MAYBE_UNUSED jvmtiEnv *env, jobject object, return JVMTI_ERROR_NONE; } +jvmtiError +_Jv_JVMTI_GetErrorName (MAYBE_UNUSED jvmtiEnv *env, jvmtiError error, + char **name_ptr) +{ + NULL_CHECK (name_ptr); + + const char *name; + switch (error) + { + case JVMTI_ERROR_NONE: + name = "none"; + break; + + case JVMTI_ERROR_NULL_POINTER: + name = "null pointer"; + break; + + case JVMTI_ERROR_OUT_OF_MEMORY: + name = "out of memory"; + break; + + case JVMTI_ERROR_ACCESS_DENIED: + name = "access denied"; + break; + + case JVMTI_ERROR_WRONG_PHASE: + name = "wrong phase"; + break; + + case JVMTI_ERROR_INTERNAL: + name = "internal error"; + break; + + case JVMTI_ERROR_UNATTACHED_THREAD: + name = "unattached thread"; + break; + + case JVMTI_ERROR_INVALID_ENVIRONMENT: + name = "invalid environment"; + break; + + case JVMTI_ERROR_INVALID_PRIORITY: + name = "invalid priority"; + break; + + case JVMTI_ERROR_THREAD_NOT_SUSPENDED: + name = "thread not suspended"; + break; + + case JVMTI_ERROR_THREAD_SUSPENDED: + name = "thread suspended"; + break; + + case JVMTI_ERROR_THREAD_NOT_ALIVE: + name = "thread not alive"; + break; + + case JVMTI_ERROR_CLASS_NOT_PREPARED: + name = "class not prepared"; + break; + + case JVMTI_ERROR_NO_MORE_FRAMES: + name = "no more frames"; + break; + + case JVMTI_ERROR_OPAQUE_FRAME: + name = "opaque frame"; + break; + + case JVMTI_ERROR_DUPLICATE: + name = "duplicate"; + break; + + case JVMTI_ERROR_NOT_FOUND: + name = "not found"; + break; + + case JVMTI_ERROR_NOT_MONITOR_OWNER: + name = "not monitor owner"; + break; + + case JVMTI_ERROR_INTERRUPT: + name = "interrupted"; + break; + + case JVMTI_ERROR_UNMODIFIABLE_CLASS: + name = "unmodifiable class"; + break; + + case JVMTI_ERROR_NOT_AVAILABLE: + name = "not available"; + break; + + case JVMTI_ERROR_ABSENT_INFORMATION: + name = "absent information"; + break; + + case JVMTI_ERROR_INVALID_EVENT_TYPE: + name = "invalid event type"; + break; + + case JVMTI_ERROR_NATIVE_METHOD: + name = "native method"; + break; + + case JVMTI_ERROR_INVALID_THREAD: + name = "invalid thread"; + break; + + case JVMTI_ERROR_INVALID_THREAD_GROUP: + name = "invalid thread group"; + break; + + case JVMTI_ERROR_INVALID_OBJECT: + name = "invalid object"; + break; + + case JVMTI_ERROR_INVALID_CLASS: + name = "invalid class"; + break; + + case JVMTI_ERROR_INVALID_METHODID: + name = "invalid method ID"; + break; + + case JVMTI_ERROR_INVALID_LOCATION: + name = "invalid location"; + break; + + case JVMTI_ERROR_INVALID_FIELDID: + name = "invalid field ID"; + break; + + case JVMTI_ERROR_TYPE_MISMATCH: + name = "type mismatch"; + break; + + case JVMTI_ERROR_INVALID_SLOT: + name = "invalid slot"; + break; + + case JVMTI_ERROR_INVALID_MONITOR: + name = "invalid monitor"; + break; + + case JVMTI_ERROR_INVALID_CLASS_FORMAT: + name = "invalid class format"; + break; + + case JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION: + name = "circular class definition"; + break; + + case JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED: + name = "unsupported redefinition: method added"; + break; + + case JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED: + name = "unsupported redefinition: schema changed"; + break; + + case JVMTI_ERROR_INVALID_TYPESTATE: + name = "invalid type state"; + break; + + case JVMTI_ERROR_FAILS_VERIFICATION: + name = "fails verification"; + break; + + case JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED: + name = "unsupported redefinition: hierarchy changed"; + break; + + case JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED: + name = "unsupported redefinition: method deleted"; + break; + + case JVMTI_ERROR_UNSUPPORTED_VERSION: + name = "unsupported version"; + break; + + case JVMTI_ERROR_NAMES_DONT_MATCH: + name = "names do not match"; + break; + + case JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED: + name = "unsupported redefinition: class modifiers changed"; + break; + + case JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED: + name = "unsupported redefinition: method modifiers changed"; + break; + + case JVMTI_ERROR_MUST_POSSESS_CAPABILITY: + name = "must possess capability"; + break; + + case JVMTI_ERROR_ILLEGAL_ARGUMENT: + name = "illegal argument"; + break; + + default: + return JVMTI_ERROR_ILLEGAL_ARGUMENT; + } + + *name_ptr = (char *) _Jv_MallocUnchecked (strlen (name) + 1); + if (*name_ptr == NULL) + return JVMTI_ERROR_OUT_OF_MEMORY; + + strcpy (*name_ptr, name); + return JVMTI_ERROR_NONE; +} + #define RESERVED NULL #define UNIMPLEMENTED NULL @@ -783,7 +996,7 @@ struct _Jv_jvmtiEnv _Jv_JVMTI_Interface = UNIMPLEMENTED, // GetExtensionEvents UNIMPLEMENTED, // SetExtensionEventCallback _Jv_JVMTI_DisposeEnvironment, // DisposeEnvironment - UNIMPLEMENTED, // GetErrorName + _Jv_JVMTI_GetErrorName, // GetErrorName UNIMPLEMENTED, // GetJLocationFormat UNIMPLEMENTED, // GetSystemProperties _Jv_JVMTI_GetSystemProperty, // GetSystemProperty diff --git a/libjava/testsuite/libjava.jvmti/geterrorname.java b/libjava/testsuite/libjava.jvmti/geterrorname.java new file mode 100644 index 00000000000..b809b22d63b --- /dev/null +++ b/libjava/testsuite/libjava.jvmti/geterrorname.java @@ -0,0 +1,12 @@ +// Test JVMTI GetErrorName + +public class geterrorname +{ + public static native void do_errorname_tests (); + + public static void main (String[] args) + { + System.out.println ("JVMTI GetErrorName tests"); + do_errorname_tests (); + } +} diff --git a/libjava/testsuite/libjava.jvmti/geterrorname.out b/libjava/testsuite/libjava.jvmti/geterrorname.out new file mode 100644 index 00000000000..3b993d3b66e --- /dev/null +++ b/libjava/testsuite/libjava.jvmti/geterrorname.out @@ -0,0 +1,49 @@ +JVMTI GetErrorName tests +none +null pointer +out of memory +access denied +wrong phase +internal error +unattached thread +invalid environment +invalid priority +thread not suspended +thread suspended +thread not alive +class not prepared +no more frames +opaque frame +duplicate +not found +not monitor owner +interrupted +unmodifiable class +not available +absent information +invalid event type +native method +invalid thread +invalid thread group +invalid object +invalid class +invalid method ID +invalid location +invalid field ID +type mismatch +invalid slot +invalid monitor +invalid class format +circular class definition +unsupported redefinition: method added +unsupported redefinition: schema changed +invalid type state +fails verification +unsupported redefinition: hierarchy changed +unsupported redefinition: method deleted +unsupported version +names do not match +unsupported redefinition: class modifiers changed +unsupported redefinition: method modifiers changed +must possess capability +illegal argument diff --git a/libjava/testsuite/libjava.jvmti/natgeterrorname.cc b/libjava/testsuite/libjava.jvmti/natgeterrorname.cc new file mode 100644 index 00000000000..46e2590ae06 --- /dev/null +++ b/libjava/testsuite/libjava.jvmti/natgeterrorname.cc @@ -0,0 +1,76 @@ +#include + +#include +#include +#include + +#include "jvmti-int.h" +#include "geterrorname.h" + +static void +get_error (jvmtiEnv *env, jvmtiError err) +{ + char *s; + env->GetErrorName (err, &s); + printf ("%s\n", s); + env->Deallocate (reinterpret_cast (s)); +} + +void +geterrorname::do_errorname_tests () +{ + jvmtiEnv *env; + JavaVM *vm = _Jv_GetJavaVM (); + vm->GetEnv (reinterpret_cast (&env), JVMTI_VERSION_1_0); + + get_error (env, JVMTI_ERROR_NONE); + get_error (env, JVMTI_ERROR_NULL_POINTER); + get_error (env, JVMTI_ERROR_OUT_OF_MEMORY); + get_error (env, JVMTI_ERROR_ACCESS_DENIED); + get_error (env, JVMTI_ERROR_WRONG_PHASE); + get_error (env, JVMTI_ERROR_INTERNAL); + get_error (env, JVMTI_ERROR_UNATTACHED_THREAD); + get_error (env, JVMTI_ERROR_INVALID_ENVIRONMENT); + get_error (env, JVMTI_ERROR_INVALID_PRIORITY); + get_error (env, JVMTI_ERROR_THREAD_NOT_SUSPENDED); + get_error (env, JVMTI_ERROR_THREAD_SUSPENDED); + get_error (env, JVMTI_ERROR_THREAD_NOT_ALIVE); + get_error (env, JVMTI_ERROR_CLASS_NOT_PREPARED); + get_error (env, JVMTI_ERROR_NO_MORE_FRAMES); + get_error (env, JVMTI_ERROR_OPAQUE_FRAME); + get_error (env, JVMTI_ERROR_DUPLICATE); + get_error (env, JVMTI_ERROR_NOT_FOUND); + get_error (env, JVMTI_ERROR_NOT_MONITOR_OWNER); + get_error (env, JVMTI_ERROR_INTERRUPT); + get_error (env, JVMTI_ERROR_UNMODIFIABLE_CLASS); + get_error (env, JVMTI_ERROR_NOT_AVAILABLE); + get_error (env, JVMTI_ERROR_ABSENT_INFORMATION); + get_error (env, JVMTI_ERROR_INVALID_EVENT_TYPE); + get_error (env, JVMTI_ERROR_NATIVE_METHOD); + get_error (env, JVMTI_ERROR_INVALID_THREAD); + get_error (env, JVMTI_ERROR_INVALID_THREAD_GROUP); + get_error (env, JVMTI_ERROR_INVALID_OBJECT); + get_error (env, JVMTI_ERROR_INVALID_CLASS); + get_error (env, JVMTI_ERROR_INVALID_METHODID); + get_error (env, JVMTI_ERROR_INVALID_LOCATION); + get_error (env, JVMTI_ERROR_INVALID_FIELDID); + get_error (env, JVMTI_ERROR_TYPE_MISMATCH); + get_error (env, JVMTI_ERROR_INVALID_SLOT); + get_error (env, JVMTI_ERROR_INVALID_MONITOR); + get_error (env, JVMTI_ERROR_INVALID_CLASS_FORMAT); + get_error (env, JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION); + get_error (env, JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED); + get_error (env, JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED); + get_error (env, JVMTI_ERROR_INVALID_TYPESTATE); + get_error (env, JVMTI_ERROR_FAILS_VERIFICATION); + get_error (env, JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED); + get_error (env, JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED); + get_error (env, JVMTI_ERROR_UNSUPPORTED_VERSION); + get_error (env, JVMTI_ERROR_NAMES_DONT_MATCH); + get_error (env, + JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED); + get_error (env, + JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED); + get_error (env, JVMTI_ERROR_MUST_POSSESS_CAPABILITY); + get_error (env, JVMTI_ERROR_ILLEGAL_ARGUMENT); +} -- 2.11.0