1 /*
2  * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.
8  *
9  * This code is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12  * version 2 for more details (a copy is included in the LICENSE file that
13  * accompanied this code).
14  *
15  * You should have received a copy of the GNU General Public License version
16  * 2 along with this work; if not, write to the Free Software Foundation,
17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20  * or visit www.oracle.com if you need additional information or have any
21  * questions.
22  *
23  */
24 
25 #ifndef SHARE_PRIMS_JVMTIEVENTCONTROLLER_INLINE_HPP
26 #define SHARE_PRIMS_JVMTIEVENTCONTROLLER_INLINE_HPP
27 
28 #include "prims/jvmtiEventController.hpp"
29 #include "prims/jvmtiImpl.hpp"
30 #include "prims/jvmtiUtil.hpp"
31 
32 // these inline functions are in a separate file to break include cycles
33 
34 
35 ///////////////////////////////////////////////////////////////
36 //
37 // JvmtiEventEnabled
38 //
39 
bit_for(jvmtiEvent event_type)40 inline jlong JvmtiEventEnabled::bit_for(jvmtiEvent event_type) {
41   assert(JvmtiEventController::is_valid_event_type(event_type), "invalid event type");
42   return ((jlong)1) << (event_type - TOTAL_MIN_EVENT_TYPE_VAL);
43 }
44 
get_bits()45 inline jlong JvmtiEventEnabled::get_bits() {
46   assert(_init_guard == JEE_INIT_GUARD, "enable bits uninitialized or corrupted");
47   return _enabled_bits;
48 }
49 
set_bits(jlong bits)50 inline void JvmtiEventEnabled::set_bits(jlong bits) {
51   assert(_init_guard == JEE_INIT_GUARD, "enable bits uninitialized or corrupted on set");
52   _enabled_bits = bits;
53 }
54 
is_enabled(jvmtiEvent event_type)55 inline bool JvmtiEventEnabled::is_enabled(jvmtiEvent event_type) {
56   return (bit_for(event_type) & get_bits()) != 0;
57 }
58 
59 
60 ///////////////////////////////////////////////////////////////
61 //
62 // JvmtiEnvThreadEventEnable
63 //
64 
is_enabled(jvmtiEvent event_type)65 inline bool JvmtiEnvThreadEventEnable::is_enabled(jvmtiEvent event_type) {
66   assert(JvmtiUtil::event_threaded(event_type), "Only thread filtered events should be tested here");
67   return _event_enabled.is_enabled(event_type);
68 }
69 
set_user_enabled(jvmtiEvent event_type,bool enabled)70 inline void JvmtiEnvThreadEventEnable::set_user_enabled(jvmtiEvent event_type, bool enabled) {
71   _event_user_enabled.set_enabled(event_type, enabled);
72 }
73 
74 
75 ///////////////////////////////////////////////////////////////
76 //
77 // JvmtiThreadEventEnable
78 //
79 
is_enabled(jvmtiEvent event_type)80 inline bool JvmtiThreadEventEnable::is_enabled(jvmtiEvent event_type) {
81   assert(JvmtiUtil::event_threaded(event_type), "Only thread filtered events should be tested here");
82   return _event_enabled.is_enabled(event_type);
83 }
84 
85 
86 ///////////////////////////////////////////////////////////////
87 //
88 // JvmtiEnvEventEnable
89 //
90 
is_enabled(jvmtiEvent event_type)91 inline bool JvmtiEnvEventEnable::is_enabled(jvmtiEvent event_type) {
92   assert(!JvmtiUtil::event_threaded(event_type), "Only non thread filtered events should be tested here");
93   return _event_enabled.is_enabled(event_type);
94 }
95 
set_user_enabled(jvmtiEvent event_type,bool enabled)96 inline void JvmtiEnvEventEnable::set_user_enabled(jvmtiEvent event_type, bool enabled) {
97   _event_user_enabled.set_enabled(event_type, enabled);
98 }
99 
100 
101 ///////////////////////////////////////////////////////////////
102 //
103 // JvmtiEventController
104 //
105 
is_enabled(jvmtiEvent event_type)106 inline bool JvmtiEventController::is_enabled(jvmtiEvent event_type) {
107   return _universal_global_event_enabled.is_enabled(event_type);
108 }
109 
110 #endif // SHARE_PRIMS_JVMTIEVENTCONTROLLER_INLINE_HPP
111