src/share/vm/prims/jvmtiEventController.cpp

Print this page

        

*** 1,7 **** /* ! * 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2003, 2014, 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.
*** 987,1005 **** --- 987,1013 ---- void JvmtiEventController::set_frame_pop(JvmtiEnvThreadState *ets, JvmtiFramePop fpop) { + if (Thread::current()->is_VM_thread() && SafepointSynchronize::is_at_safepoint()) { + JvmtiEventControllerPrivate::set_frame_pop(ets, fpop); + } else { MutexLocker mu(JvmtiThreadState_lock); JvmtiEventControllerPrivate::set_frame_pop(ets, fpop); + } } void JvmtiEventController::clear_frame_pop(JvmtiEnvThreadState *ets, JvmtiFramePop fpop) { + if (Thread::current()->is_VM_thread() && SafepointSynchronize::is_at_safepoint()) { + JvmtiEventControllerPrivate::clear_frame_pop(ets, fpop); + } else { MutexLocker mu(JvmtiThreadState_lock); JvmtiEventControllerPrivate::clear_frame_pop(ets, fpop); + } } void JvmtiEventController::clear_to_frame_pop(JvmtiEnvThreadState *ets, JvmtiFramePop fpop) {