You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by od...@apache.org on 2009/07/16 17:57:41 UTC

svn commit: r794726 [2/15] - in /harmony/enhanced/jdktools/branches/java6/modules/jpda: ./ src/main/native/include/ src/main/native/jdwp/common/agent/commands/ src/main/native/jdwp/common/agent/core/ src/main/native/jdwp/common/generic/ src/main/native...

Modified: harmony/enhanced/jdktools/branches/java6/modules/jpda/src/main/native/jdwp/common/agent/commands/EventRequest.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/branches/java6/modules/jpda/src/main/native/jdwp/common/agent/commands/EventRequest.cpp?rev=794726&r1=794725&r2=794726&view=diff
==============================================================================
--- harmony/enhanced/jdktools/branches/java6/modules/jpda/src/main/native/jdwp/common/agent/commands/EventRequest.cpp (original)
+++ harmony/enhanced/jdktools/branches/java6/modules/jpda/src/main/native/jdwp/common/agent/commands/EventRequest.cpp Thu Jul 16 15:57:37 2009
@@ -15,15 +15,12 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-
-/**
- * @author Vitaly A. Provodin, Pavel N. Vyssotski
- * @version $Revision: 1.12 $
- */
 #include "EventRequest.h"
 #include "PacketParser.h"
 #include "RequestManager.h"
 #include "Log.h"
+#include "ExceptionManager.h"
+
 
 using namespace jdwp;
 using namespace EventRequest;
@@ -31,340 +28,380 @@
 //-----------------------------------------------------------------------------
 //Set--------------------------------------------------------------------------
 
-void
-EventRequest::SetHandler::Execute(JNIEnv *jni) throw(AgentException)
+int
+EventRequest::SetHandler::Execute(JNIEnv *jni) 
 {
     jdwpEventKind eventKind = (jdwpEventKind) m_cmdParser->command.ReadByte();
     jdwpSuspendPolicy suspendPolicy =
         (jdwpSuspendPolicy) m_cmdParser->command.ReadByte();
     jint modCount = m_cmdParser->command.ReadInt();
 
-    JDWP_TRACE_DATA("Set: event="
-        << GetRequestManager().GetEventKindName(eventKind) 
-        << ", eventKind=" << eventKind 
-        << ", suspendPolicy=" << suspendPolicy
-        << ", modCount=" << modCount);
+    JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Set: event=%s, eventKind=%d, suspendPolicy=%d, modCount=%d",
+                    GetRequestManager().GetEventKindName(eventKind), eventKind, suspendPolicy, modCount));
 
     AgentEventRequest* request = (eventKind == JDWP_EVENT_SINGLE_STEP) ?
         new StepRequest(suspendPolicy, modCount) :
         new AgentEventRequest(eventKind, suspendPolicy, modCount);
 
-    try {
-        for (jint i = 0; i < modCount; i++) {
-            RequestModifier* modifier;
-            jbyte modifierByte = m_cmdParser->command.ReadByte();
-            switch (modifierByte) {
-            case JDWP_MODIFIER_COUNT:
-                {
-                    jint n = m_cmdParser->command.ReadInt();
-                    if (n <= 0) {
-                        throw AgentException(JDWP_ERROR_INVALID_COUNT);
-                    }
-                    modifier = new CountModifier(n);
-                    JDWP_TRACE_DATA("Set: modifier=COUNT, count=" << n);
-                    break;
-                }
+    for (jint i = 0; i < modCount; i++) {
+        RequestModifier* modifier;
+        jbyte modifierByte = m_cmdParser->command.ReadByte();
+        switch (modifierByte) {
+        case JDWP_MODIFIER_COUNT:
+            {
+                jint n = m_cmdParser->command.ReadInt();
+                if (n <= 0) {
+                    AgentException e(JDWP_ERROR_INVALID_COUNT);
+                    JDWP_SET_EXCEPTION(e);
+                    delete request;
+                    return JDWP_ERROR_INVALID_COUNT;
+                }
+                modifier = new CountModifier(n);
+                JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Set: modifier=COUNT, count=%d", n));
+                break;
+            }
 
-            case JDWP_MODIFIER_CONDITIONAL:
-                {
-                    jint id = m_cmdParser->command.ReadInt();
-                    modifier = new ConditionalModifier(id);
-                    JDWP_TRACE_DATA("Set: modifier=CONDITIONAL, exprID=" << id);
-                    break;
-                }
+        case JDWP_MODIFIER_CONDITIONAL:
+            {
+                jint id = m_cmdParser->command.ReadInt();
+                modifier = new ConditionalModifier(id);
+                JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Set: modifier=CONDITIONAL, exprID=%d", id));
+                break;
+            }
 
-            case JDWP_MODIFIER_THREAD_ONLY:
-                {
-                    if (eventKind == JDWP_EVENT_CLASS_UNLOAD ||
-                        eventKind == JDWP_EVENT_VM_DEATH)
-                    {
-                        throw IllegalArgumentException();
-                    }
-                    jthread thread = m_cmdParser->command.ReadThreadID(jni);
+        case JDWP_MODIFIER_THREAD_ONLY:
+            {
+                if (eventKind == JDWP_EVENT_CLASS_UNLOAD ||
+                    eventKind == JDWP_EVENT_VM_DEATH)
+                {
+                    AgentException e(JDWP_ERROR_ILLEGAL_ARGUMENT);
+                    JDWP_SET_EXCEPTION(e);
+                    delete request;
+                    return JDWP_ERROR_ILLEGAL_ARGUMENT;
+                }
+                jthread thread = m_cmdParser->command.ReadThreadID(jni);
 #ifndef NDEBUG                    
-                    if (JDWP_TRACE_ENABLED(LOG_KIND_DATA)) {
-                        jvmtiError err;
-                        jvmtiThreadInfo threadInfo;
-                        JVMTI_TRACE(err, GetJvmtiEnv()->GetThreadInfo(thread, &threadInfo));
-                        JDWP_TRACE_DATA("Set: modifier=THREAD_ONLY, thread=" << thread 
-                            << ", name=" << threadInfo.name);
-                    }
+                if (JDWP_TRACE_ENABLED(LOG_KIND_DATA)) {
+                    jvmtiError err;
+                    jvmtiThreadInfo threadInfo;
+                    JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetThreadInfo(thread, &threadInfo));
+                    JvmtiAutoFree jafInfoName(threadInfo.name);
+                    JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Set: modifier=THREAD_ONLY, thread=%p, name=%s", thread, threadInfo.name));
+                }
 #endif
-                    if (thread == 0) {
-                        throw AgentException(JDWP_ERROR_INVALID_THREAD);
-                    }
-                    modifier = new ThreadOnlyModifier(jni, thread);
-                    break;
+                if (thread == 0) {
+                    AgentException e(JDWP_ERROR_INVALID_THREAD);
+                    JDWP_SET_EXCEPTION(e);
+                    delete request;
+                    return JDWP_ERROR_INVALID_THREAD;
                 }
+                modifier = new ThreadOnlyModifier(jni, thread);
+                break;
+            }
 
-            case JDWP_MODIFIER_CLASS_ONLY:
-                {
-                    if (eventKind == JDWP_EVENT_CLASS_UNLOAD ||
-                        eventKind == JDWP_EVENT_THREAD_START ||
-                        eventKind == JDWP_EVENT_THREAD_END ||
-                        eventKind == JDWP_EVENT_VM_DEATH)
-                    {
-                        throw IllegalArgumentException();
-                    }
-                    jclass cls = m_cmdParser->command.ReadReferenceTypeID(jni);
+        case JDWP_MODIFIER_CLASS_ONLY:
+            {
+                if (eventKind == JDWP_EVENT_CLASS_UNLOAD ||
+                    eventKind == JDWP_EVENT_THREAD_START ||
+                    eventKind == JDWP_EVENT_THREAD_END ||
+                    eventKind == JDWP_EVENT_VM_DEATH)
+                {
+                    AgentException e(JDWP_ERROR_ILLEGAL_ARGUMENT);
+                    JDWP_SET_EXCEPTION(e);
+                    delete request;
+                    return JDWP_ERROR_ILLEGAL_ARGUMENT;
+                }
+                jclass cls = m_cmdParser->command.ReadReferenceTypeID(jni);
 #ifndef NDEBUG  
-                    if (JDWP_TRACE_ENABLED(LOG_KIND_DATA)) {
-                        jvmtiError err;
-                        char* signature = 0;
-                        JVMTI_TRACE(err, GetJvmtiEnv()->GetClassSignature(cls, &signature, 0));
-                        JvmtiAutoFree afs(signature);
-                        JDWP_TRACE_DATA("Set: modifier=CLASS_ONLY, refTypeID=" << cls
-                            << ", signature=" << JDWP_CHECK_NULL(signature));
-                    }
+                if (JDWP_TRACE_ENABLED(LOG_KIND_DATA)) {
+                    jvmtiError err;
+                    char* signature = 0;
+                    JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetClassSignature(cls, &signature, 0));
+                    JvmtiAutoFree afs(signature);
+                    JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Set: modifier=CLASS_ONLY, refTypeID=%p, signature=%s", cls, JDWP_CHECK_NULL(signature)));
+                }
 #endif
 
-                    if (cls == 0) {
-                        throw AgentException(JDWP_ERROR_INVALID_CLASS);
-                    }
-                    modifier = new ClassOnlyModifier(jni, cls);
-                    break;
+                if (cls == 0) {
+                    AgentException e(JDWP_ERROR_INVALID_CLASS);
+                    JDWP_SET_EXCEPTION(e);
+                    delete request;
+                    return JDWP_ERROR_INVALID_CLASS;
                 }
+                modifier = new ClassOnlyModifier(jni, cls);
+                break;
+            }
 
-            case JDWP_MODIFIER_CLASS_MATCH:
-                {
-                    if (eventKind == JDWP_EVENT_THREAD_START ||
-                        eventKind == JDWP_EVENT_THREAD_END ||
-                        eventKind == JDWP_EVENT_VM_DEATH)
-                    {
-                        throw IllegalArgumentException();
-                    }
-                    char* pattern = m_cmdParser->command.ReadStringNoFree();
-                    JDWP_ASSERT(pattern != 0);
-                    // replace '.' with '/' to be matched with signature
-                    for (char* p = pattern; *p != '\0'; p++) {
-                        if (*p == '.') {
-                            *p = '/';
-                        }
-                    }
-                    modifier = new ClassMatchModifier(pattern);
-                    JDWP_TRACE_DATA("Set: modifier=CLASS_MATCH, classPattern=" 
-                        << JDWP_CHECK_NULL(pattern));
-                    break;
-                }
+        case JDWP_MODIFIER_CLASS_MATCH:
+            {
+                if (eventKind == JDWP_EVENT_THREAD_START ||
+                    eventKind == JDWP_EVENT_THREAD_END ||
+                    eventKind == JDWP_EVENT_VM_DEATH)
+                {
+                    AgentException e(JDWP_ERROR_ILLEGAL_ARGUMENT);
+                    JDWP_SET_EXCEPTION(e);
+                    delete request;
+                    return JDWP_ERROR_ILLEGAL_ARGUMENT;
+                }
+                char* pattern = m_cmdParser->command.ReadStringNoFree();
+                JDWP_ASSERT(pattern != 0);
+                // replace '.' with '/' to be matched with signature
+                for (char* p = pattern; *p != '\0'; p++) {
+                    if (*p == '.') {
+                        *p = '/';
+                    }
+                }
+                modifier = new ClassMatchModifier(pattern);
+                JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Set: modifier=CLASS_MATCH, classPattern=%s", JDWP_CHECK_NULL(pattern)));
+                break;
+            }
 
-            case JDWP_MODIFIER_CLASS_EXCLUDE:
-                {
-                    if (eventKind == JDWP_EVENT_THREAD_START ||
-                        eventKind == JDWP_EVENT_THREAD_END ||
-                        eventKind == JDWP_EVENT_VM_DEATH)
-                    {
-                        throw IllegalArgumentException();
-                    }
-                    char* pattern = m_cmdParser->command.ReadStringNoFree();
-                    JDWP_ASSERT(pattern != 0);
-                    // replace '.' with '/' to be matched with signature
-                    for (char* p = pattern; *p != '\0'; p++) {
-                        if (*p == '.') {
-                            *p = '/';
-                        }
-                    }
-                    modifier = new ClassExcludeModifier(pattern);
-                    JDWP_TRACE_DATA("Set: modifier=CLASS_EXCLUDE, classPattern=" 
-                        << JDWP_CHECK_NULL(pattern));
-                    break;
-                }
+        case JDWP_MODIFIER_CLASS_EXCLUDE:
+            {
+                if (eventKind == JDWP_EVENT_THREAD_START ||
+                    eventKind == JDWP_EVENT_THREAD_END ||
+                    eventKind == JDWP_EVENT_VM_DEATH)
+                {
+                    AgentException e(JDWP_ERROR_ILLEGAL_ARGUMENT);
+                    JDWP_SET_EXCEPTION(e);
+                    delete request;
+                    return JDWP_ERROR_ILLEGAL_ARGUMENT;
+                }
+                char* pattern = m_cmdParser->command.ReadStringNoFree();
+                JDWP_ASSERT(pattern != 0);
+                // replace '.' with '/' to be matched with signature
+                for (char* p = pattern; *p != '\0'; p++) {
+                    if (*p == '.') {
+                        *p = '/';
+                    }
+                }
+                modifier = new ClassExcludeModifier(pattern);
+                JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Set: modifier=CLASS_EXCLUDE, classPattern=%s", JDWP_CHECK_NULL(pattern)));
+                break;
+            }
 
-            case JDWP_MODIFIER_LOCATION_ONLY:
-                {
-                    if (eventKind != JDWP_EVENT_BREAKPOINT &&
-                        eventKind != JDWP_EVENT_FIELD_ACCESS &&
-                        eventKind != JDWP_EVENT_FIELD_MODIFICATION &&
-                        eventKind != JDWP_EVENT_SINGLE_STEP &&
-                        eventKind != JDWP_EVENT_EXCEPTION)
-                    {
-                        throw IllegalArgumentException();
-                    }
-                    m_cmdParser->command.ReadByte(); // typeTag
-                    jclass cls = m_cmdParser->command.ReadReferenceTypeID(jni);
-                    jmethodID method = m_cmdParser->command.ReadMethodID(jni);
-                    jlocation loc = m_cmdParser->command.ReadLong();
+        case JDWP_MODIFIER_LOCATION_ONLY:
+            {
+                if (eventKind != JDWP_EVENT_BREAKPOINT &&
+                    eventKind != JDWP_EVENT_FIELD_ACCESS &&
+                    eventKind != JDWP_EVENT_FIELD_MODIFICATION &&
+                    eventKind != JDWP_EVENT_SINGLE_STEP &&
+                    eventKind != JDWP_EVENT_EXCEPTION)
+                {
+                    AgentException e(JDWP_ERROR_ILLEGAL_ARGUMENT);
+                    JDWP_SET_EXCEPTION(e);
+                    delete request;
+                    return JDWP_ERROR_ILLEGAL_ARGUMENT;
+                }
+                m_cmdParser->command.ReadByte(); // typeTag
+                jclass cls = m_cmdParser->command.ReadReferenceTypeID(jni);
+                jmethodID method = m_cmdParser->command.ReadMethodID(jni);
+                jlocation loc = m_cmdParser->command.ReadLong();
 
 #ifndef NDEBUG                    
-                    if (JDWP_TRACE_ENABLED(LOG_KIND_DATA)) {
-                        jvmtiError err;
-                        char* methodName = 0;
-                        char* methodSignature = 0;
-                        JVMTI_TRACE(err, GetJvmtiEnv()->GetMethodName(method, &methodName, &methodSignature, 0));
-                        JvmtiAutoFree afs(methodSignature);
-                        JvmtiAutoFree afn(methodName);
-                        JDWP_TRACE_DATA("Set: modifier=LOCATION_ONLY, loc=" << loc
-                            << ", method=" << method
-                            << ", name=" << JDWP_CHECK_NULL(methodName)
-                            << ", signature=" << JDWP_CHECK_NULL(methodSignature));
-                    }
-#endif                      
-                    modifier = new LocationOnlyModifier(jni, cls, method, loc);
-                    break;
+                if (JDWP_TRACE_ENABLED(LOG_KIND_DATA)) {
+                    jvmtiError err;
+                    char* methodName = 0;
+                    char* methodSignature = 0;
+                    JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetMethodName(method, &methodName, &methodSignature, 0));
+                    JvmtiAutoFree afs(methodSignature);
+                    JvmtiAutoFree afn(methodName);
+                    JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Set: modifier=LOCATION_ONLY, loc=%lld, method=%p, name=%s, signature=%s", 
+                                    loc, method, JDWP_CHECK_NULL(methodName), JDWP_CHECK_NULL(methodSignature)));
                 }
+#endif                      
+                modifier = new LocationOnlyModifier(jni, cls, method, loc);
+                break;
+            }
 
-            case JDWP_MODIFIER_EXCEPTION_ONLY:
-                {
-                    if (eventKind != JDWP_EVENT_EXCEPTION) {
-                        throw IllegalArgumentException();
-                    }
-                    jclass cls = m_cmdParser->command.ReadReferenceTypeIDOrNull(jni);
-                    jboolean caught = m_cmdParser->command.ReadBoolean();
-                    jboolean uncaught = m_cmdParser->command.ReadBoolean();
+        case JDWP_MODIFIER_EXCEPTION_ONLY:
+            {
+                if (eventKind != JDWP_EVENT_EXCEPTION) {
+                    AgentException e(JDWP_ERROR_ILLEGAL_ARGUMENT);
+                    JDWP_SET_EXCEPTION(e);
+                    delete request;
+                    return JDWP_ERROR_ILLEGAL_ARGUMENT;
+                }
+                jclass cls = m_cmdParser->command.ReadReferenceTypeIDOrNull(jni);
+                jboolean caught = m_cmdParser->command.ReadBoolean();
+                jboolean uncaught = m_cmdParser->command.ReadBoolean();
 
 #ifndef NDEBUG                    
-                    if (JDWP_TRACE_ENABLED(LOG_KIND_DATA)) {
-                        jvmtiError err;
-                        char* signature = 0;
-                        JVMTI_TRACE(err, GetJvmtiEnv()->GetClassSignature(cls, &signature, 0));
-                        JvmtiAutoFree afs(signature);
-                        JDWP_TRACE_DATA("Set: modifier=EXCEPTION_ONLY, refTypeID=" << cls
-                            << ", signature=" << JDWP_CHECK_NULL(signature)
-                            << ", caught=" << (int)caught
-                            << ", uncaught=" << (int)uncaught);
-                    }
-#endif
-                    modifier = new ExceptionOnlyModifier(jni, cls,
-                        (caught == JNI_TRUE), (uncaught == JNI_TRUE));
-                    break;
+                if (JDWP_TRACE_ENABLED(LOG_KIND_DATA)) {
+                    jvmtiError err;
+                    char* signature = 0;
+                    JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetClassSignature(cls, &signature, 0));
+                    JvmtiAutoFree afs(signature);
+                    JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Set: modifier=EXCEPTION_ONLY, refTypeID=%p, signature=%s, caught=%s, uncaught=%s", 
+                                    cls, JDWP_CHECK_NULL(signature), (caught?"TRUE":"FALSE"), (uncaught?"TRUE":"FALSE")));
                 }
+#endif
+                modifier = new ExceptionOnlyModifier(jni, cls,
+                    (caught == JNI_TRUE), (uncaught == JNI_TRUE));
+                break;
+            }
 
-            case JDWP_MODIFIER_FIELD_ONLY:
-                {
-                    if (eventKind != JDWP_EVENT_FIELD_ACCESS &&
-                        eventKind != JDWP_EVENT_FIELD_MODIFICATION)
-                    {
-                        throw IllegalArgumentException();
-                    }
-                    jclass cls = m_cmdParser->command.ReadReferenceTypeID(jni);
-                                        if (cls == 0) {
-                        throw AgentException(JDWP_ERROR_INVALID_CLASS);
-                    }
-                    jfieldID field = 
-                    m_cmdParser->command.ReadFieldID(jni);
+        case JDWP_MODIFIER_FIELD_ONLY:
+            {
+                if (eventKind != JDWP_EVENT_FIELD_ACCESS &&
+                    eventKind != JDWP_EVENT_FIELD_MODIFICATION)
+                {
+                    AgentException e(JDWP_ERROR_ILLEGAL_ARGUMENT);
+                    JDWP_SET_EXCEPTION(e);
+                    delete request;
+                    return JDWP_ERROR_ILLEGAL_ARGUMENT;
+                }
+                jclass cls = m_cmdParser->command.ReadReferenceTypeID(jni);
+                                    if (cls == 0) {
+                    AgentException e(JDWP_ERROR_INVALID_CLASS);
+                    JDWP_SET_EXCEPTION(e);
+                    delete request;
+                    return JDWP_ERROR_INVALID_CLASS;
+                }
+                jfieldID field = 
+                m_cmdParser->command.ReadFieldID(jni);
 #ifndef NDEBUG                    
-                    if (JDWP_TRACE_ENABLED(LOG_KIND_DATA)) {
-                        jvmtiError err;
-                        char* signature = 0;
-                        JVMTI_TRACE(err, GetJvmtiEnv()->GetClassSignature(cls, &signature, 0));
-                        JvmtiAutoFree afs(signature);
-                        char* fieldName = 0;
-                        JVMTI_TRACE(err, GetJvmtiEnv()->GetFieldName(cls, field, &fieldName, 0, 0));
-                        JvmtiAutoFree afn(fieldName);
-                        JDWP_TRACE_DATA("Set: modifier=FIELD_ONLY, refTypeId=" << cls
-                            << ", signature=" << JDWP_CHECK_NULL(signature)
-                            << ", fieldName=" << JDWP_CHECK_NULL(fieldName));
-                    }
-#endif
-                    modifier = new FieldOnlyModifier(jni, cls, field);
-                    break;
+                if (JDWP_TRACE_ENABLED(LOG_KIND_DATA)) {
+                    jvmtiError err;
+                    char* signature = 0;
+                    JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetClassSignature(cls, &signature, 0));
+                    JvmtiAutoFree afs(signature);
+                    char* fieldName = 0;
+                    JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetFieldName(cls, field, &fieldName, 0, 0));
+                    JvmtiAutoFree afn(fieldName);
+                    JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Set: modifier=FIELD_ONLY, refTypeId=%p, signature=%s, fieldName=%s",
+                                    cls, JDWP_CHECK_NULL(signature), JDWP_CHECK_NULL(fieldName)));
                 }
+#endif
+                modifier = new FieldOnlyModifier(jni, cls, field);
+                break;
+            }
 
-            case JDWP_MODIFIER_STEP:
-                {
-                    if (eventKind != JDWP_EVENT_SINGLE_STEP) {
-                        throw IllegalArgumentException();
-                    }
-                    jthread thread = m_cmdParser->command.ReadThreadID(jni);
-                    jint size = m_cmdParser->command.ReadInt();
-                    jint depth = m_cmdParser->command.ReadInt();
+        case JDWP_MODIFIER_STEP:
+            {
+                if (eventKind != JDWP_EVENT_SINGLE_STEP) {
+                    AgentException e(JDWP_ERROR_ILLEGAL_ARGUMENT);
+                    JDWP_SET_EXCEPTION(e);
+                    delete request;
+                    return JDWP_ERROR_ILLEGAL_ARGUMENT;
+                }
+                jthread thread = m_cmdParser->command.ReadThreadID(jni);
+                jint size = m_cmdParser->command.ReadInt();
+                jint depth = m_cmdParser->command.ReadInt();
 
 #ifndef NDEBUG                    
-                    if (JDWP_TRACE_ENABLED(LOG_KIND_DATA)) {
-                        jvmtiError err;
-                        jvmtiThreadInfo threadInfo;
-                        JVMTI_TRACE(err, GetJvmtiEnv()->GetThreadInfo(thread, &threadInfo));
-                        JvmtiAutoFree aftn(threadInfo.name);
-                        JDWP_TRACE_DATA("Set: modifier=STEP, thread=" << thread
-                            << ", name=" << JDWP_CHECK_NULL(threadInfo.name)
-                            << ", size=" << size
-                            << ", depth=" << depth);
-                    }
+                if (JDWP_TRACE_ENABLED(LOG_KIND_DATA)) {
+                    jvmtiError err;
+                    jvmtiThreadInfo threadInfo;
+                    JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetThreadInfo(thread, &threadInfo));
+                    JvmtiAutoFree aftn(threadInfo.name);
+                    JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Set: modifier=STEP, thread=%p, name=%s, size=%d, depth=%d", 
+                                    thread, JDWP_CHECK_NULL(threadInfo.name), size, depth));
+                }
 #endif
 
-                    if (thread == 0) {
-                        throw AgentException(JDWP_ERROR_INVALID_THREAD);
-                    }
-                    reinterpret_cast<StepRequest*>
-                        (request)->Init(jni, thread, size, depth);
-                    modifier = new StepModifier(jni, thread, size, depth);
-                    break;
+                if (thread == 0) {
+                    AgentException e(JDWP_ERROR_INVALID_THREAD);
+                    JDWP_SET_EXCEPTION(e);
+                    delete request;
+                    return JDWP_ERROR_INVALID_THREAD;
+                }
+                int ret  = (reinterpret_cast<StepRequest*>
+                    (request))->Init(jni, thread, size, depth);
+                if (ret != JDWP_ERROR_NONE) {
+                    delete request;
+                    return ret;
                 }
+                modifier = new StepModifier(jni, thread, size, depth);
+                break;
+            }
 
-            case JDWP_MODIFIER_INSTANCE_ONLY:
-                {
-                    if (eventKind == JDWP_EVENT_CLASS_PREPARE ||
-                        eventKind == JDWP_EVENT_CLASS_UNLOAD ||
-                        eventKind == JDWP_EVENT_THREAD_START ||
-                        eventKind == JDWP_EVENT_THREAD_END ||
-                        eventKind == JDWP_EVENT_VM_DEATH)
-                    {
-                        throw IllegalArgumentException();
-                    }
-
-                    jobject instance = m_cmdParser->command.ReadObjectID(jni);
-                    JDWP_TRACE_DATA("Set: modifier=INSTANCE_ONLY, instance=" << instance);
-
-                    modifier = new InstanceOnlyModifier(jni, instance);
-                    break;
+        case JDWP_MODIFIER_INSTANCE_ONLY:
+            {
+                if (eventKind == JDWP_EVENT_CLASS_PREPARE ||
+                    eventKind == JDWP_EVENT_CLASS_UNLOAD ||
+                    eventKind == JDWP_EVENT_THREAD_START ||
+                    eventKind == JDWP_EVENT_THREAD_END ||
+                    eventKind == JDWP_EVENT_VM_DEATH)
+                {
+                    AgentException e(JDWP_ERROR_ILLEGAL_ARGUMENT);
+                    JDWP_SET_EXCEPTION(e);
+                    delete request;
+                    return JDWP_ERROR_ILLEGAL_ARGUMENT;
                 }
 
-            // New modifier kind  for Java 6
-            case JDWP_MODIFIER_SOURCE_NAME_MATCH:
-                {
-                    if (eventKind != JDWP_EVENT_CLASS_PREPARE )
-                    {
-                        throw IllegalArgumentException();
-                    }
-
-                    char* pattern = m_cmdParser->command.ReadStringNoFree();
-                    JDWP_ASSERT(pattern != 0);
+                jobject instance = m_cmdParser->command.ReadObjectID(jni);
+                JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Set: modifier=INSTANCE_ONLY, instance=%p", instance));
 
-                    modifier = new SourceNameMatchModifier(pattern);
-                    JDWP_TRACE_DATA("Set: modifier=SOURCE_NAME_MATCH, classPattern=" 
-                        << JDWP_CHECK_NULL(pattern));
-                    break;
-                }
-            default:
-                JDWP_TRACE_DATA("Set: bad modifier: " << modifierByte);
-                throw IllegalArgumentException();
+                modifier = new InstanceOnlyModifier(jni, instance);
+                break;
+            }
 
+        // New modifier kind  for Java 6
+        case JDWP_MODIFIER_SOURCE_NAME_MATCH:
+            {
+                if (eventKind != JDWP_EVENT_CLASS_PREPARE )
+                {
+                    AgentException e(JDWP_ERROR_ILLEGAL_ARGUMENT);
+                    JDWP_SET_EXCEPTION(e);
+                    delete request;
+                    return JDWP_ERROR_ILLEGAL_ARGUMENT;
+                }
+
+                char* pattern = m_cmdParser->command.ReadStringNoFree();
+                JDWP_ASSERT(pattern != 0);
+
+                modifier = new SourceNameMatchModifier(pattern);
+                JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Set: modifier=SOURCE_NAME_MATCH, classPattern=%s", JDWP_CHECK_NULL(pattern)));
+                break;
             }
-            request->AddModifier(modifier, i);
+        default:
+            JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Set: bad modifier: %d", modifierByte));
+            AgentException e(JDWP_ERROR_ILLEGAL_ARGUMENT);
+            JDWP_SET_EXCEPTION(e);
+            delete request;
+            return JDWP_ERROR_ILLEGAL_ARGUMENT;
+
         }
-    } catch (AgentException& e) {
-        delete request;
-        throw e;
+        request->AddModifier(modifier, i);
     }
 
     RequestID id = GetRequestManager().AddRequest(jni, request);
-    JDWP_TRACE_DATA("Set: send: requestId=" << id);
+    if (id == 0) {
+        return JDWP_ERROR_INTERNAL;
+    }
+    JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Set: send: requestId=%d", id));
     m_cmdParser->reply.WriteInt(id);
+
+    return JDWP_ERROR_NONE;
 }
 
 //-----------------------------------------------------------------------------
 //Clear------------------------------------------------------------------------
 
-void
+int
 EventRequest::ClearHandler::Execute(JNIEnv *jni)
-    throw(AgentException)
 {
     jdwpEventKind eventKind = (jdwpEventKind) m_cmdParser->command.ReadByte();
     RequestID id = m_cmdParser->command.ReadInt();
-    JDWP_TRACE_DATA("Clear: event="
-        << GetRequestManager().GetEventKindName(eventKind) 
-        << ", eventKind=" << eventKind << ", requestId=" << id);
-    GetRequestManager().DeleteRequest(jni, eventKind, id);
+    JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Clear: event=%s, eventKind=%d, requestId=%d",
+                    GetRequestManager().GetEventKindName(eventKind), eventKind, id));
+    int ret = GetRequestManager().DeleteRequest(jni, eventKind, id);
+    JDWP_CHECK_RETURN(ret);
+
+    return JDWP_ERROR_NONE;
 }
 
 //-----------------------------------------------------------------------------
 //ClearAllBreakpoints----------------------------------------------------------
 
-void
+int
 EventRequest::ClearAllBreakpointsHandler::Execute(JNIEnv *jni)
-    throw(AgentException)
 {
-    JDWP_TRACE_DATA("ClearAllBreakpoints");
+    JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "ClearAllBreakpoints"));
     GetRequestManager().DeleteAllBreakpoints(jni);
+
+    return JDWP_ERROR_NONE;
 }
 
 //-----------------------------------------------------------------------------

Modified: harmony/enhanced/jdktools/branches/java6/modules/jpda/src/main/native/jdwp/common/agent/commands/EventRequest.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/branches/java6/modules/jpda/src/main/native/jdwp/common/agent/commands/EventRequest.h?rev=794726&r1=794725&r2=794726&view=diff
==============================================================================
--- harmony/enhanced/jdktools/branches/java6/modules/jpda/src/main/native/jdwp/common/agent/commands/EventRequest.h (original)
+++ harmony/enhanced/jdktools/branches/java6/modules/jpda/src/main/native/jdwp/common/agent/commands/EventRequest.h Thu Jul 16 15:57:37 2009
@@ -17,11 +17,6 @@
  */
 
 /**
- * @author Vitaly A. Provodin, Pavel N. Vyssotski
- * @version $Revision: 1.4.2.1 $
- */
-
-/**
  * @file
  * EventRequest.h
  *
@@ -63,7 +58,7 @@
              * @exception The implementations of the given interface
              *            may throw <code>AgentException</code>.
              */
-            virtual void Execute(JNIEnv *jni) throw(AgentException);
+            virtual int Execute(JNIEnv *jni) ;
 
         };//SetHandler
 
@@ -80,7 +75,7 @@
              *
              * @param jni - the JNI interface pointer
              */
-            virtual void Execute(JNIEnv *jni) throw(AgentException);
+            virtual int Execute(JNIEnv *jni) ;
 
         };//ClearHandler
 
@@ -97,7 +92,7 @@
              *
              * @param jni - the JNI interface pointer
              */
-            virtual void Execute(JNIEnv *jni) throw(AgentException);
+            virtual int Execute(JNIEnv *jni) ;
 
         };//ClearHandler
 

Modified: harmony/enhanced/jdktools/branches/java6/modules/jpda/src/main/native/jdwp/common/agent/commands/Method.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/branches/java6/modules/jpda/src/main/native/jdwp/common/agent/commands/Method.cpp?rev=794726&r1=794725&r2=794726&view=diff
==============================================================================
--- harmony/enhanced/jdktools/branches/java6/modules/jpda/src/main/native/jdwp/common/agent/commands/Method.cpp (original)
+++ harmony/enhanced/jdktools/branches/java6/modules/jpda/src/main/native/jdwp/common/agent/commands/Method.cpp Thu Jul 16 15:57:37 2009
@@ -15,19 +15,16 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-
-/**
- * @author Viacheslav G. Rybalov
- * @version $Revision: 1.11 $
- */
 #include "Method.h"
 #include "PacketParser.h"
+#include "ExceptionManager.h"
+
 
 using namespace jdwp;
 using namespace Method;
 
-void
-Method::LineTableHandler::Execute(JNIEnv *jni) throw(AgentException)
+int
+Method::LineTableHandler::Execute(JNIEnv *jni) 
 {
     jvmtiError err;
     jclass refType = m_cmdParser->command.ReadReferenceTypeID(jni);
@@ -37,48 +34,51 @@
     if (JDWP_TRACE_ENABLED(LOG_KIND_DATA)) {
         jvmtiError err;
         char* classSignature = 0;
-        JVMTI_TRACE(err, GetJvmtiEnv()->GetClassSignature(refType, &classSignature, 0));
+        JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetClassSignature(refType, &classSignature, 0));
         JvmtiAutoFree afs(classSignature);
         char* methodName = 0;
         char* methodSignature = 0;
-        JVMTI_TRACE(err, GetJvmtiEnv()->GetMethodName(methodID, &methodName, &methodSignature, 0));
+        JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetMethodName(methodID, &methodName, &methodSignature, 0));
         JvmtiAutoFree afmn(methodName);
         JvmtiAutoFree afms(methodSignature);
-        JDWP_TRACE_DATA("LineTable: received: methodName=" << methodName
-            << ", methodSignature=" << JDWP_CHECK_NULL(methodSignature)
-            << ", classSignature=" << JDWP_CHECK_NULL(classSignature));
+        JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "LineTable: received: methodName=%s, methodSignature=%s, classSignature=%s", 
+                        methodName, JDWP_CHECK_NULL(methodSignature), JDWP_CHECK_NULL(classSignature)));
     }
 #endif
 
     jboolean isNative;
-    JVMTI_TRACE(err, GetJvmtiEnv()->IsMethodNative(methodID, &isNative));
+    JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->IsMethodNative(methodID, &isNative));
     if (err != JVMTI_ERROR_NONE) {
-        throw AgentException(err);
+        AgentException e(err);
+		JDWP_SET_EXCEPTION(e);
+        return err;
     }
 
     if (isNative == JNI_TRUE) {
-        JDWP_TRACE_DATA("LineTable: native method");
-        throw AgentException(JDWP_ERROR_NATIVE_METHOD);
+        JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "LineTable: native method"));
+        AgentException e(JDWP_ERROR_NATIVE_METHOD);
+        JDWP_SET_EXCEPTION(e);
+        return JDWP_ERROR_NATIVE_METHOD;
     }
     
     jlocation start_location;
     jlocation end_location;
-    JVMTI_TRACE(err, GetJvmtiEnv()->GetMethodLocation(methodID,
+    JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetMethodLocation(methodID,
         &start_location, &end_location));
     if (err != JVMTI_ERROR_NONE) {
-        throw AgentException(err);
+        AgentException e(err);
+		JDWP_SET_EXCEPTION(e);
+        return err;
     }    
     jint entry_count = 0;
     jvmtiLineNumberEntry* table = 0;
-    JVMTI_TRACE(err, GetJvmtiEnv()->GetLineNumberTable(methodID,
+    JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetLineNumberTable(methodID,
         &entry_count, &table));
     JvmtiAutoFree afv(table);
     if (err == JVMTI_ERROR_MUST_POSSESS_CAPABILITY ||
         err == JVMTI_ERROR_ABSENT_INFORMATION)
     {
-        JDWP_TRACE_DATA("LineTable: send: tableStart=" << start_location
-            << ", tableEnd=" << end_location 
-            << ", entry_count=0 (no info)"); 
+        JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "LineTable: send: tableStart=%lld, tableEnd=%lld, entry_count=0 (no info)", start_location, end_location));
 
         m_cmdParser->reply.WriteLong(start_location);
         m_cmdParser->reply.WriteLong(end_location);
@@ -86,29 +86,30 @@
         
     } else if (err == JVMTI_ERROR_NONE) {
 
-        JDWP_TRACE_DATA("LineTable: send: tableStart=" << start_location
-            << ", tableEnd=" << end_location 
-            << ", entry_count=" << entry_count);
+        JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "LineTable: send: tableStart=%lld, tableEnd=%lld, entry_count=%d", start_location, end_location, entry_count));
 
         m_cmdParser->reply.WriteLong(start_location);
         m_cmdParser->reply.WriteLong(end_location);
         m_cmdParser->reply.WriteInt(entry_count);
 
         for (int i = 0; i < entry_count; i++) {
-            JDWP_TRACE_DATA("LineTable: send: entry#=" << i 
-                << ", lineCodeIndex=" << table[i].start_location 
-                << ", lineCodeNumber=" << table[i].line_number);
+            JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "LineTable: send: entry#=%d, lineCodeIndex=%lld, lineCodeNumber=%d", 
+                            i, table[i].start_location, table[i].line_number));
             m_cmdParser->reply.WriteLong(table[i].start_location);
             m_cmdParser->reply.WriteInt(table[i].line_number);
               
         }
     } else {
-        throw AgentException(err);
+        AgentException e(err);
+		JDWP_SET_EXCEPTION(e);
+        return err;
     }
+
+    return JDWP_ERROR_NONE;
 }
 
-void
-Method::VariableTableHandler::Execute(JNIEnv *jni) throw(AgentException)
+int
+Method::VariableTableHandler::Execute(JNIEnv *jni) 
 {
     jclass refType = m_cmdParser->command.ReadReferenceTypeID(jni);
     jmethodID methodID = m_cmdParser->command.ReadMethodID(jni);
@@ -117,47 +118,54 @@
     if (JDWP_TRACE_ENABLED(LOG_KIND_DATA)) {
         jvmtiError err;
         char* classSignature = 0;
-        JVMTI_TRACE(err, GetJvmtiEnv()->GetClassSignature(refType, &classSignature, 0));
+        JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetClassSignature(refType, &classSignature, 0));
         JvmtiAutoFree afcs(classSignature);
         char* methodName = 0;
         char* methodSignature = 0;
-        JVMTI_TRACE(err, GetJvmtiEnv()->GetMethodName(methodID, &methodName, &methodSignature, 0));
+        JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetMethodName(methodID, &methodName, &methodSignature, 0));
         JvmtiAutoFree afmn(methodName);
         JvmtiAutoFree afms(methodSignature);
-        JDWP_TRACE_DATA("VariableTable: received: methodName=" << methodName
-            << ", methodSignature=" << JDWP_CHECK_NULL(methodSignature)
-            << ", classSignature=" << JDWP_CHECK_NULL(classSignature));
+        JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "VariableTable: received: methodName=%s, methodSignature=%s, classSignature=%s", 
+                        methodName, JDWP_CHECK_NULL(methodSignature), JDWP_CHECK_NULL(classSignature)));
     }
 #endif
 
     jboolean isNative;
     jvmtiError err;
-    JVMTI_TRACE(err, GetJvmtiEnv()->IsMethodNative(methodID, &isNative));
+    JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->IsMethodNative(methodID, &isNative));
     if (err != JVMTI_ERROR_NONE) {
-        throw AgentException(err);
+        AgentException e(err);
+		JDWP_SET_EXCEPTION(e);
+        return err;
     }
 
     if (isNative == JNI_TRUE) {
-        JDWP_TRACE_DATA("VariableTable: native method");
-        throw AgentException(JDWP_ERROR_NATIVE_METHOD);
+        JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "VariableTable: native method"));
+        AgentException e(JDWP_ERROR_NATIVE_METHOD);
+		JDWP_SET_EXCEPTION(e);
+        return JDWP_ERROR_NATIVE_METHOD;
     }
 
     jint size;
 
-    JVMTI_TRACE(err, GetJvmtiEnv()->GetArgumentsSize(methodID, &size));
+    JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetArgumentsSize(methodID, &size));
     if (err != JVMTI_ERROR_NONE) {
-        throw AgentException(err);
+        AgentException e(err);
+		JDWP_SET_EXCEPTION(e);
+        return err;
     }
     m_cmdParser->reply.WriteInt(size);
 
     jint entry_count;
     jvmtiLocalVariableEntry* table = 0;
 
-    JVMTI_TRACE(err, GetJvmtiEnv()->GetLocalVariableTable(methodID,
+    JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetLocalVariableTable(methodID,
         &entry_count, &table));
     JvmtiAutoFree afv(table);
     if (err != JVMTI_ERROR_NONE) {
-        throw AgentException(err);
+        AgentException e(err);
+		JDWP_SET_EXCEPTION(e);
+        return err;
     }
     
 #ifndef NDEBUG    
@@ -166,23 +174,17 @@
         jlocation end_location;
         GetJvmtiEnv()->GetMethodLocation(methodID,
             &start_location, &end_location);
-        JDWP_TRACE_DATA("VariableTable: methodStart=" << start_location
-            << ", methodEnd=" << end_location << ", entry_count=" << entry_count);
+        JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "VariableTable: methodStart=%lld, methodEnd=%lld, entry_count=%d", start_location, end_location, entry_count));
     }
 #endif
     
-    JDWP_TRACE_DATA("VariableTable: send: argSize=" << size 
-        << ", entry_count=" << entry_count); 
+    JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "VariableTable: send: argSize=%d, entry_count=%d", size, entry_count));
     m_cmdParser->reply.WriteInt(entry_count);
 
     for (int i = 0; i < entry_count; i++) {
 
-        JDWP_TRACE_DATA("VariableTable: send: entry#=" << i 
-            << ", codeIndex=" << table[i].start_location 
-            << ", name=" << table[i].name 
-            << ", signature=" << table[i].signature 
-            << ", length=" << table[i].length 
-            << ", slot=" << table[i].slot);
+        JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "VariableTable: send: entry#=%d, codeIndex=%lld, name=%s, signature=%s, length=%d, slot=%d",
+                        i, table[i].start_location, table[i].name, table[i].signature, table[i].length, table[i].slot));
 
         m_cmdParser->reply.WriteLong(table[i].start_location);
         m_cmdParser->reply.WriteString(table[i].name);
@@ -190,20 +192,22 @@
         m_cmdParser->reply.WriteInt(table[i].length);
         m_cmdParser->reply.WriteInt(table[i].slot);
 
-        JVMTI_TRACE(err, GetJvmtiEnv()->Deallocate(
+        JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->Deallocate(
             reinterpret_cast<unsigned char*>(table[i].name)));
         JDWP_ASSERT(err==JVMTI_ERROR_NONE);
-        JVMTI_TRACE(err, GetJvmtiEnv()->Deallocate(
+        JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->Deallocate(
             reinterpret_cast<unsigned char*>(table[i].signature)));
         JDWP_ASSERT(err==JVMTI_ERROR_NONE);
-        JVMTI_TRACE(err, GetJvmtiEnv()->Deallocate(
+        JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->Deallocate(
             reinterpret_cast<unsigned char*>(table[i].generic_signature)));
         JDWP_ASSERT(err==JVMTI_ERROR_NONE);
     }
+
+    return JDWP_ERROR_NONE;
 }
 
-void
-Method::BytecodesHandler::Execute(JNIEnv *jni) throw(AgentException)
+int
+Method::BytecodesHandler::Execute(JNIEnv *jni) 
 {
     jclass refType = m_cmdParser->command.ReadReferenceTypeID(jni);
     jmethodID methodID = m_cmdParser->command.ReadMethodID(jni);
@@ -212,69 +216,82 @@
     if (JDWP_TRACE_ENABLED(LOG_KIND_DATA)) {
         jvmtiError err;
         char* classSignature = 0;
-        JVMTI_TRACE(err, GetJvmtiEnv()->GetClassSignature(refType, &classSignature, 0));
+        JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetClassSignature(refType, &classSignature, 0));
         JvmtiAutoFree afcs(classSignature);
         char* methodName = 0;
         char* methodSignature = 0;
-        JVMTI_TRACE(err, GetJvmtiEnv()->GetMethodName(methodID, &methodName, &methodSignature, 0));
+        JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetMethodName(methodID, &methodName, &methodSignature, 0));
         JvmtiAutoFree afmn(methodName);
         JvmtiAutoFree afms(methodSignature);
-        JDWP_TRACE_DATA("Bytecodes: received: methodName=" << methodName
-            << ", methodSignature=" << JDWP_CHECK_NULL(methodSignature)
-            << ", classSignature=" << JDWP_CHECK_NULL(classSignature));
+        JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Bytecodes: received: methodName=%s, methodSignature=%s, classSignature=%s", 
+                        methodName, JDWP_CHECK_NULL(methodSignature), JDWP_CHECK_NULL(classSignature)));
     }
 #endif
     jint bytecode_count;
     unsigned char* bytecodes = 0;
 
     jvmtiError err;
-    JVMTI_TRACE(err, GetJvmtiEnv()->GetBytecodes(methodID,
+    JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetBytecodes(methodID,
         &bytecode_count, &bytecodes));
     JvmtiAutoFree afv(bytecodes);
     if (err != JVMTI_ERROR_NONE) {
-        throw AgentException(err);
+        AgentException e(err);
+		JDWP_SET_EXCEPTION(e);
+        return err;
     }
 
-    JDWP_TRACE_DATA("Bytecodes: send: bytecode_count=" << bytecode_count);
+    JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "Bytecodes: send: bytecode_count=%d", bytecode_count));
     m_cmdParser->reply.WriteByteArray(reinterpret_cast<jbyte*>(bytecodes), bytecode_count);
+
+    return JDWP_ERROR_NONE;
 }
 
-void
-Method::IsObsoleteHandler::Execute(JNIEnv *jni) throw(AgentException)
+int
+Method::IsObsoleteHandler::Execute(JNIEnv *jni) 
 {
     jclass refType = m_cmdParser->command.ReadReferenceTypeID(jni);
     jmethodID methodID = m_cmdParser->command.ReadMethodID(jni);
 
+    // when the methodID is 0, it means the method is obsolete.
+    if (0 == methodID) {
+        JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "IsObsolete: send: is_obsolete=TRUE"));
+        m_cmdParser->reply.WriteBoolean(JNI_TRUE);
+        return JDWP_ERROR_NONE;
+	}
+
 #ifndef NDEBUG
     if (JDWP_TRACE_ENABLED(LOG_KIND_DATA)) {
         jvmtiError err;
         char* classSignature = 0;
-        JVMTI_TRACE(err, GetJvmtiEnv()->GetClassSignature(refType, &classSignature, 0));
+        JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetClassSignature(refType, &classSignature, 0));
         JvmtiAutoFree afcs(classSignature);
         char* methodName = 0;
         char* methodSignature = 0;
-        JVMTI_TRACE(err, GetJvmtiEnv()->GetMethodName(methodID, &methodName, &methodSignature, 0));
+        JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetMethodName(methodID, &methodName, &methodSignature, 0));
         JvmtiAutoFree afmn(methodName);
         JvmtiAutoFree afms(methodSignature);
-        JDWP_TRACE_DATA("IsObsolete: received: methodName=" << methodName
-            << ", methodSignature=" << JDWP_CHECK_NULL(methodSignature)
-            << ", classSignature=" << JDWP_CHECK_NULL(classSignature));
+        JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "IsObsolete: received: methodName=%s, methodSignature=%s, classSignature=%s", 
+                        methodName, JDWP_CHECK_NULL(methodSignature), JDWP_CHECK_NULL(classSignature)));
     }
 #endif
     jboolean is_obsolete = JNI_FALSE;
 
     jvmtiError err;
-    JVMTI_TRACE(err, GetJvmtiEnv()->IsMethodObsolete(methodID, &is_obsolete));
+    JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->IsMethodObsolete(methodID, &is_obsolete));
     if (err != JVMTI_ERROR_NONE) {
-        throw AgentException(err);
+        AgentException e(err);
+		JDWP_SET_EXCEPTION(e);
+        return err;
     }
 
-    JDWP_TRACE_DATA("IsObsolete: send: is_obsolete=" << is_obsolete);
+    JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "IsObsolete: send: is_obsolete=%s", (is_obsolete ? "TRUE" : "FALSE")));
     m_cmdParser->reply.WriteBoolean(is_obsolete);
+
+    return JDWP_ERROR_NONE;
 }
 
-void
-Method::VariableTableWithGenericHandler::Execute(JNIEnv *jni) throw(AgentException)
+int
+Method::VariableTableWithGenericHandler::Execute(JNIEnv *jni)
 {
     jclass refType = m_cmdParser->command.ReadReferenceTypeID(jni);
     jmethodID methodID = m_cmdParser->command.ReadMethodID(jni);
@@ -282,35 +299,38 @@
     if (JDWP_TRACE_ENABLED(LOG_KIND_DATA)) {
         jvmtiError err;
         char* classSignature = 0;
-        JVMTI_TRACE(err, GetJvmtiEnv()->GetClassSignature(refType, &classSignature, 0));
+        JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetClassSignature(refType, &classSignature, 0));
         JvmtiAutoFree afcs(classSignature);      
         char* methodName = 0;
         char* methodSignature = 0;
-        JVMTI_TRACE(err, GetJvmtiEnv()->GetMethodName(methodID, &methodName, &methodSignature, 0));
+        JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetMethodName(methodID, &methodName, &methodSignature, 0));
         JvmtiAutoFree afmn(methodName);
         JvmtiAutoFree afms(methodSignature);
-        JDWP_TRACE_DATA("VariableTableWithGeneric: received: methodName=" << methodName
-            << ", methodSignature=" << JDWP_CHECK_NULL(methodSignature)
-            << ", classSignature=" << JDWP_CHECK_NULL(classSignature));
+        JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "VariableTableWithGeneric: received: methodName=%s, methodSignature=%s, classSignature=%s", 
+                        methodName, JDWP_CHECK_NULL(methodSignature), JDWP_CHECK_NULL(classSignature)));
     }
 #endif
     jint size;
 
     jvmtiError err;
-    JVMTI_TRACE(err, GetJvmtiEnv()->GetArgumentsSize(methodID, &size));
+    JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetArgumentsSize(methodID, &size));
     if (err != JVMTI_ERROR_NONE) {
-        throw AgentException(err);
+        AgentException e(err);
+		JDWP_SET_EXCEPTION(e);
+        return err;
     }
     m_cmdParser->reply.WriteInt(size);
 
     jint entry_count;
     jvmtiLocalVariableEntry* table = 0;
 
-    JVMTI_TRACE(err, GetJvmtiEnv()->GetLocalVariableTable(methodID,
+    JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->GetLocalVariableTable(methodID,
         &entry_count, &table));
     JvmtiAutoFree afv(table);
     if (err != JVMTI_ERROR_NONE) {
-        throw AgentException(err);
+        AgentException e(err);
+		JDWP_SET_EXCEPTION(e);
+        return err;
     }
     
 #ifndef NDEBUG
@@ -319,24 +339,18 @@
         jlocation end_location;
         GetJvmtiEnv()->GetMethodLocation(methodID,
             &start_location, &end_location);
-        JDWP_TRACE_DATA("VariableTableWithGeneric: methodStart="
-            << start_location << ", methodEnd=" 
-            << end_location << ", entry_count=" << entry_count);
+        JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "VariableTableWithGeneric: methodStart=%lld, methodEnd=%lld, entry_count=%d",
+                        start_location, end_location, entry_count));
     } 
 #endif
     
-    JDWP_TRACE_DATA("VariableTableWithGeneric: send: argSize=" << size 
-        << ", entry_count=" << entry_count); 
+    JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "VariableTableWithGeneric: send: argSize=%d, entry_count=%d", size, entry_count));
     m_cmdParser->reply.WriteInt(entry_count);
 
     for (int i = 0; i < entry_count; i++) {
 
-        JDWP_TRACE_DATA("VariableTableWithGeneric: send: entry#=" << i 
-            << ", codeIndex=" << table[i].start_location 
-            << ", name=" << table[i].name 
-            << ", signature=" << table[i].signature 
-            << ", length=" << table[i].length 
-            << ", slot=" << table[i].slot);        
+        JDWP_TRACE(LOG_RELEASE, (LOG_DATA_FL, "VariableTableWithGeneric: send: entry#=%d, codeIndex=%lld, name=%s, signature=%s, length=%d, slot=%d",
+                        i, table[i].start_location, table[i].name, table[i].signature, table[i].length, table[i].slot));
         
         m_cmdParser->reply.WriteLong(table[i].start_location);
         m_cmdParser->reply.WriteString(table[i].name);
@@ -345,14 +359,16 @@
         m_cmdParser->reply.WriteInt(table[i].length);
         m_cmdParser->reply.WriteInt(table[i].slot);
 
-        JVMTI_TRACE(err, GetJvmtiEnv()->Deallocate(
+        JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->Deallocate(
             reinterpret_cast<unsigned char*>(table[i].name)));
         JDWP_ASSERT(err==JVMTI_ERROR_NONE);
-        JVMTI_TRACE(err, GetJvmtiEnv()->Deallocate(
+        JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->Deallocate(
             reinterpret_cast<unsigned char*>(table[i].signature)));
         JDWP_ASSERT(err==JVMTI_ERROR_NONE);
-        JVMTI_TRACE(err, GetJvmtiEnv()->Deallocate(
+        JVMTI_TRACE(LOG_DEBUG, err, GetJvmtiEnv()->Deallocate(
             reinterpret_cast<unsigned char*>(table[i].generic_signature)));
         JDWP_ASSERT(err==JVMTI_ERROR_NONE);
     }
+
+    return JDWP_ERROR_NONE;
 }

Modified: harmony/enhanced/jdktools/branches/java6/modules/jpda/src/main/native/jdwp/common/agent/commands/Method.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/branches/java6/modules/jpda/src/main/native/jdwp/common/agent/commands/Method.h?rev=794726&r1=794725&r2=794726&view=diff
==============================================================================
--- harmony/enhanced/jdktools/branches/java6/modules/jpda/src/main/native/jdwp/common/agent/commands/Method.h (original)
+++ harmony/enhanced/jdktools/branches/java6/modules/jpda/src/main/native/jdwp/common/agent/commands/Method.h Thu Jul 16 15:57:37 2009
@@ -17,11 +17,6 @@
  */
 
 /**
- * @author Viacheslav G. Rybalov
- * @version $Revision: 1.4.2.1 $
- */
-
-/**
  * @file
  * Method.h
  *
@@ -54,7 +49,7 @@
              *
              * @param jni - the JNI interface pointer
              */
-            virtual void Execute(JNIEnv *jni) throw(AgentException);
+            virtual int Execute(JNIEnv *jni);
 
         };//LineTableHandler
 
@@ -71,7 +66,7 @@
              *
              * @param jni - the JNI interface pointer
              */
-            virtual void Execute(JNIEnv *jni) throw(AgentException);
+            virtual int Execute(JNIEnv *jni);
 
         };//VariableTableHandler
 
@@ -88,7 +83,7 @@
              *
              * @param jni - the JNI interface pointer
              */
-            virtual void Execute(JNIEnv *jni) throw(AgentException);
+            virtual int Execute(JNIEnv *jni);
 
         };//BytecodesHandler
 
@@ -105,7 +100,7 @@
              *
              * @param jni - the JNI interface pointer
              */
-            virtual void Execute(JNIEnv *jni) throw(AgentException);
+            virtual int Execute(JNIEnv *jni);
 
         };//IsObsoleteHandler
 
@@ -122,7 +117,7 @@
              *
              * @param jni - the JNI interface pointer
              */
-            virtual void Execute(JNIEnv *jni) throw(AgentException);
+            virtual int Execute(JNIEnv *jni);
 
         };//VariableTableWithGenericHandler