Mercurial > hg > graal-jvmci-8
diff src/share/vm/prims/jvmtiEnv.cpp @ 14909:4ca6dc0799b6
Backout jdk9 merge
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Tue, 01 Apr 2014 13:57:07 +0200 |
parents | d8041d695d19 |
children | 52b4284cb496 |
line wrap: on
line diff
--- a/src/share/vm/prims/jvmtiEnv.cpp Tue Apr 01 14:09:03 2014 +0200 +++ b/src/share/vm/prims/jvmtiEnv.cpp Tue Apr 01 13:57:07 2014 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 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 @@ -999,9 +999,8 @@ GrowableArray<jvmtiMonitorStackDepthInfo*> *owned_monitors_list = new (ResourceObj::C_HEAP, mtInternal) GrowableArray<jvmtiMonitorStackDepthInfo*>(1, true); - // It is only safe to perform the direct operation on the current - // thread. All other usage needs to use a vm-safepoint-op for safety. - if (java_thread == calling_thread) { + uint32_t debug_bits = 0; + if (is_thread_fully_suspended(java_thread, true, &debug_bits)) { err = get_owned_monitors(calling_thread, java_thread, owned_monitors_list); } else { // JVMTI get monitors info at safepoint. Do not require target thread to @@ -1045,9 +1044,8 @@ GrowableArray<jvmtiMonitorStackDepthInfo*> *owned_monitors_list = new (ResourceObj::C_HEAP, mtInternal) GrowableArray<jvmtiMonitorStackDepthInfo*>(1, true); - // It is only safe to perform the direct operation on the current - // thread. All other usage needs to use a vm-safepoint-op for safety. - if (java_thread == calling_thread) { + uint32_t debug_bits = 0; + if (is_thread_fully_suspended(java_thread, true, &debug_bits)) { err = get_owned_monitors(calling_thread, java_thread, owned_monitors_list); } else { // JVMTI get owned monitors info at safepoint. Do not require target thread to @@ -1088,11 +1086,9 @@ jvmtiError JvmtiEnv::GetCurrentContendedMonitor(JavaThread* java_thread, jobject* monitor_ptr) { jvmtiError err = JVMTI_ERROR_NONE; + uint32_t debug_bits = 0; JavaThread* calling_thread = JavaThread::current(); - - // It is only safe to perform the direct operation on the current - // thread. All other usage needs to use a vm-safepoint-op for safety. - if (java_thread == calling_thread) { + if (is_thread_fully_suspended(java_thread, true, &debug_bits)) { err = get_current_contended_monitor(calling_thread, java_thread, monitor_ptr); } else { // get contended monitor information at safepoint. @@ -1301,10 +1297,8 @@ jvmtiError JvmtiEnv::GetStackTrace(JavaThread* java_thread, jint start_depth, jint max_frame_count, jvmtiFrameInfo* frame_buffer, jint* count_ptr) { jvmtiError err = JVMTI_ERROR_NONE; - - // It is only safe to perform the direct operation on the current - // thread. All other usage needs to use a vm-safepoint-op for safety. - if (java_thread == JavaThread::current()) { + uint32_t debug_bits = 0; + if (is_thread_fully_suspended(java_thread, true, &debug_bits)) { err = get_stack_trace(java_thread, start_depth, max_frame_count, frame_buffer, count_ptr); } else { // JVMTI get stack trace at safepoint. Do not require target thread to @@ -1366,10 +1360,8 @@ if (state == NULL) { return JVMTI_ERROR_THREAD_NOT_ALIVE; } - - // It is only safe to perform the direct operation on the current - // thread. All other usage needs to use a vm-safepoint-op for safety. - if (java_thread == JavaThread::current()) { + uint32_t debug_bits = 0; + if (is_thread_fully_suspended(java_thread, true, &debug_bits)) { err = get_frame_count(state, count_ptr); } else { // get java stack frame count at safepoint. @@ -1484,10 +1476,9 @@ jvmtiError JvmtiEnv::GetFrameLocation(JavaThread* java_thread, jint depth, jmethodID* method_ptr, jlocation* location_ptr) { jvmtiError err = JVMTI_ERROR_NONE; - - // It is only safe to perform the direct operation on the current - // thread. All other usage needs to use a vm-safepoint-op for safety. - if (java_thread == JavaThread::current()) { + uint32_t debug_bits = 0; + + if (is_thread_fully_suspended(java_thread, true, &debug_bits)) { err = get_frame_location(java_thread, depth, method_ptr, location_ptr); } else { // JVMTI get java stack frame location at safepoint.