hotspot/src/share/vm/prims/jvmtiEventController.hpp
author ysr
Thu, 03 Dec 2009 15:01:57 -0800
changeset 4461 c17c526d36ef
parent 1 489c9b5090e2
child 5547 f4b087cbb361
permissions -rw-r--r--
6906727: UseCompressedOops: some card-marking fixes related to object arrays Summary: Introduced a new write_ref_array(HeapWords* start, size_t count) method that does the requisite MemRegion range calculation so (some of the) clients of the erstwhile write_ref_array(MemRegion mr) do not need to worry. This removed all external uses of array_size(), which was also simplified and made private. Asserts were added to catch other possible issues. Further, less essential, fixes stemming from this investigation are deferred to CR 6904516 (to follow shortly in hs17). Reviewed-by: kvn, coleenp, jmasa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
     1
/*
489c9b5090e2 Initial load
duke
parents:
diff changeset
     2
 * Copyright 2003-2004 Sun Microsystems, Inc.  All Rights Reserved.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     4
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
489c9b5090e2 Initial load
duke
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
489c9b5090e2 Initial load
duke
parents:
diff changeset
     7
 * published by the Free Software Foundation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     8
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
489c9b5090e2 Initial load
duke
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
489c9b5090e2 Initial load
duke
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
489c9b5090e2 Initial load
duke
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
489c9b5090e2 Initial load
duke
parents:
diff changeset
    13
 * accompanied this code).
489c9b5090e2 Initial load
duke
parents:
diff changeset
    14
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
489c9b5090e2 Initial load
duke
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    18
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    19
 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    20
 * CA 95054 USA or visit www.sun.com if you need additional information or
489c9b5090e2 Initial load
duke
parents:
diff changeset
    21
 * have any questions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    22
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    23
 */
489c9b5090e2 Initial load
duke
parents:
diff changeset
    24
489c9b5090e2 Initial load
duke
parents:
diff changeset
    25
#ifndef _JAVA_JVMTI_EVENT_CONTROLLER_H_
489c9b5090e2 Initial load
duke
parents:
diff changeset
    26
#define _JAVA_JVMTI_EVENT_CONTROLLER_H_
489c9b5090e2 Initial load
duke
parents:
diff changeset
    27
489c9b5090e2 Initial load
duke
parents:
diff changeset
    28
// forward declaration
489c9b5090e2 Initial load
duke
parents:
diff changeset
    29
class JvmtiEventControllerPrivate;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    30
class JvmtiEventController;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    31
class JvmtiEnvThreadState;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    32
class JvmtiFramePop;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    33
class JvmtiEnvBase;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    34
489c9b5090e2 Initial load
duke
parents:
diff changeset
    35
489c9b5090e2 Initial load
duke
parents:
diff changeset
    36
// Extension event support
489c9b5090e2 Initial load
duke
parents:
diff changeset
    37
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
    38
// jvmtiExtEvent is the extensions equivalent of jvmtiEvent
489c9b5090e2 Initial load
duke
parents:
diff changeset
    39
// jvmtiExtCallbacks is the extensions equivalent of jvmtiEventCallbacks
489c9b5090e2 Initial load
duke
parents:
diff changeset
    40
489c9b5090e2 Initial load
duke
parents:
diff changeset
    41
// Extension events start JVMTI_MIN_EVENT_TYPE_VAL-1 and work towards 0.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    42
typedef enum {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    43
  EXT_EVENT_CLASS_UNLOAD = JVMTI_MIN_EVENT_TYPE_VAL-1,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    44
  EXT_MIN_EVENT_TYPE_VAL = EXT_EVENT_CLASS_UNLOAD,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    45
  EXT_MAX_EVENT_TYPE_VAL = EXT_EVENT_CLASS_UNLOAD
489c9b5090e2 Initial load
duke
parents:
diff changeset
    46
} jvmtiExtEvent;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    47
489c9b5090e2 Initial load
duke
parents:
diff changeset
    48
typedef struct {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    49
  jvmtiExtensionEvent ClassUnload;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    50
} jvmtiExtEventCallbacks;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    51
489c9b5090e2 Initial load
duke
parents:
diff changeset
    52
489c9b5090e2 Initial load
duke
parents:
diff changeset
    53
// The complete range of events is EXT_MIN_EVENT_TYPE_VAL to
489c9b5090e2 Initial load
duke
parents:
diff changeset
    54
// JVMTI_MAX_EVENT_TYPE_VAL (inclusive and contiguous).
489c9b5090e2 Initial load
duke
parents:
diff changeset
    55
const int TOTAL_MIN_EVENT_TYPE_VAL = EXT_MIN_EVENT_TYPE_VAL;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    56
const int TOTAL_MAX_EVENT_TYPE_VAL = JVMTI_MAX_EVENT_TYPE_VAL;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    57
489c9b5090e2 Initial load
duke
parents:
diff changeset
    58
489c9b5090e2 Initial load
duke
parents:
diff changeset
    59
///////////////////////////////////////////////////////////////
489c9b5090e2 Initial load
duke
parents:
diff changeset
    60
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
    61
// JvmtiEventEnabled
489c9b5090e2 Initial load
duke
parents:
diff changeset
    62
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
    63
// Utility class
489c9b5090e2 Initial load
duke
parents:
diff changeset
    64
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
    65
// A boolean array indexed by event_type, used as an internal
489c9b5090e2 Initial load
duke
parents:
diff changeset
    66
// data structure to track what JVMTI event types are enabled.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    67
// Used for user set enabling and disabling (globally and on a
489c9b5090e2 Initial load
duke
parents:
diff changeset
    68
// per thread basis), and for computed merges across environments,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    69
// threads and the VM as a whole.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    70
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
    71
// for inlines see jvmtiEventController_inline.hpp
489c9b5090e2 Initial load
duke
parents:
diff changeset
    72
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
    73
489c9b5090e2 Initial load
duke
parents:
diff changeset
    74
class JvmtiEventEnabled VALUE_OBJ_CLASS_SPEC {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    75
private:
489c9b5090e2 Initial load
duke
parents:
diff changeset
    76
  friend class JvmtiEventControllerPrivate;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    77
  jlong _enabled_bits;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    78
#ifndef PRODUCT
489c9b5090e2 Initial load
duke
parents:
diff changeset
    79
  enum {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    80
    JEE_INIT_GUARD = 0xEAD0
489c9b5090e2 Initial load
duke
parents:
diff changeset
    81
  } _init_guard;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    82
#endif
489c9b5090e2 Initial load
duke
parents:
diff changeset
    83
  static jlong bit_for(jvmtiEvent event_type);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    84
  jlong get_bits();
489c9b5090e2 Initial load
duke
parents:
diff changeset
    85
  void set_bits(jlong bits);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    86
public:
489c9b5090e2 Initial load
duke
parents:
diff changeset
    87
  JvmtiEventEnabled();
489c9b5090e2 Initial load
duke
parents:
diff changeset
    88
  void clear();
489c9b5090e2 Initial load
duke
parents:
diff changeset
    89
  bool is_enabled(jvmtiEvent event_type);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    90
  void set_enabled(jvmtiEvent event_type, bool enabled);
489c9b5090e2 Initial load
duke
parents:
diff changeset
    91
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
    92
489c9b5090e2 Initial load
duke
parents:
diff changeset
    93
489c9b5090e2 Initial load
duke
parents:
diff changeset
    94
///////////////////////////////////////////////////////////////
489c9b5090e2 Initial load
duke
parents:
diff changeset
    95
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
    96
// JvmtiEnvThreadEventEnable
489c9b5090e2 Initial load
duke
parents:
diff changeset
    97
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
    98
// JvmtiEventController data specific to a particular environment and thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    99
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   100
// for inlines see jvmtiEventController_inline.hpp
489c9b5090e2 Initial load
duke
parents:
diff changeset
   101
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   102
489c9b5090e2 Initial load
duke
parents:
diff changeset
   103
class JvmtiEnvThreadEventEnable VALUE_OBJ_CLASS_SPEC {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   104
private:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   105
  friend class JvmtiEventControllerPrivate;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   106
  JvmtiEventEnabled _event_user_enabled;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   107
  JvmtiEventEnabled _event_enabled;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   108
489c9b5090e2 Initial load
duke
parents:
diff changeset
   109
public:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   110
  JvmtiEnvThreadEventEnable();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   111
  ~JvmtiEnvThreadEventEnable();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   112
  bool is_enabled(jvmtiEvent event_type);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   113
  void set_user_enabled(jvmtiEvent event_type, bool enabled);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   114
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   115
489c9b5090e2 Initial load
duke
parents:
diff changeset
   116
489c9b5090e2 Initial load
duke
parents:
diff changeset
   117
///////////////////////////////////////////////////////////////
489c9b5090e2 Initial load
duke
parents:
diff changeset
   118
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   119
// JvmtiThreadEventEnable
489c9b5090e2 Initial load
duke
parents:
diff changeset
   120
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   121
// JvmtiEventController data specific to a particular thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   122
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   123
// for inlines see jvmtiEventController_inline.hpp
489c9b5090e2 Initial load
duke
parents:
diff changeset
   124
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   125
489c9b5090e2 Initial load
duke
parents:
diff changeset
   126
class JvmtiThreadEventEnable VALUE_OBJ_CLASS_SPEC {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   127
private:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   128
  friend class JvmtiEventControllerPrivate;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   129
  JvmtiEventEnabled _event_enabled;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   130
489c9b5090e2 Initial load
duke
parents:
diff changeset
   131
public:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   132
  JvmtiThreadEventEnable();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   133
  ~JvmtiThreadEventEnable();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   134
  bool is_enabled(jvmtiEvent event_type);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   135
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   136
489c9b5090e2 Initial load
duke
parents:
diff changeset
   137
489c9b5090e2 Initial load
duke
parents:
diff changeset
   138
///////////////////////////////////////////////////////////////
489c9b5090e2 Initial load
duke
parents:
diff changeset
   139
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   140
// JvmtiEnvEventEnable
489c9b5090e2 Initial load
duke
parents:
diff changeset
   141
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   142
// JvmtiEventController data specific to a particular environment.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   143
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   144
// for inlines see jvmtiEventController_inline.hpp
489c9b5090e2 Initial load
duke
parents:
diff changeset
   145
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   146
489c9b5090e2 Initial load
duke
parents:
diff changeset
   147
class JvmtiEnvEventEnable VALUE_OBJ_CLASS_SPEC {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   148
private:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   149
  friend class JvmtiEventControllerPrivate;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   150
489c9b5090e2 Initial load
duke
parents:
diff changeset
   151
  // user set global event enablement indexed by jvmtiEvent
489c9b5090e2 Initial load
duke
parents:
diff changeset
   152
  JvmtiEventEnabled _event_user_enabled;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   153
489c9b5090e2 Initial load
duke
parents:
diff changeset
   154
  // this flag indicates the presence (true) or absence (false) of event callbacks
489c9b5090e2 Initial load
duke
parents:
diff changeset
   155
  // it is indexed by jvmtiEvent
489c9b5090e2 Initial load
duke
parents:
diff changeset
   156
  JvmtiEventEnabled _event_callback_enabled;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   157
489c9b5090e2 Initial load
duke
parents:
diff changeset
   158
  // indexed by jvmtiEvent true if enabled globally or on any thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   159
  // True only if there is a callback for it.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   160
  JvmtiEventEnabled _event_enabled;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   161
489c9b5090e2 Initial load
duke
parents:
diff changeset
   162
public:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   163
  JvmtiEnvEventEnable();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   164
  ~JvmtiEnvEventEnable();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   165
  bool is_enabled(jvmtiEvent event_type);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   166
  void set_user_enabled(jvmtiEvent event_type, bool enabled);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   167
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   168
489c9b5090e2 Initial load
duke
parents:
diff changeset
   169
489c9b5090e2 Initial load
duke
parents:
diff changeset
   170
///////////////////////////////////////////////////////////////
489c9b5090e2 Initial load
duke
parents:
diff changeset
   171
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   172
// JvmtiEventController
489c9b5090e2 Initial load
duke
parents:
diff changeset
   173
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   174
// The class is the access point for all actions that change
489c9b5090e2 Initial load
duke
parents:
diff changeset
   175
// which events are active, this include:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   176
//      enabling and disabling events
489c9b5090e2 Initial load
duke
parents:
diff changeset
   177
//      changing the callbacks/eventhook (they may be null)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   178
//      setting and clearing field watchpoints
489c9b5090e2 Initial load
duke
parents:
diff changeset
   179
//      setting frame pops
489c9b5090e2 Initial load
duke
parents:
diff changeset
   180
//      encountering frame pops
489c9b5090e2 Initial load
duke
parents:
diff changeset
   181
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   182
// for inlines see jvmtiEventController_inline.hpp
489c9b5090e2 Initial load
duke
parents:
diff changeset
   183
//
489c9b5090e2 Initial load
duke
parents:
diff changeset
   184
489c9b5090e2 Initial load
duke
parents:
diff changeset
   185
class JvmtiEventController : AllStatic {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   186
private:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   187
  friend class JvmtiEventControllerPrivate;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   188
489c9b5090e2 Initial load
duke
parents:
diff changeset
   189
  // for all environments, global array indexed by jvmtiEvent
489c9b5090e2 Initial load
duke
parents:
diff changeset
   190
  static JvmtiEventEnabled _universal_global_event_enabled;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   191
489c9b5090e2 Initial load
duke
parents:
diff changeset
   192
public:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   193
  static bool is_enabled(jvmtiEvent event_type);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   194
489c9b5090e2 Initial load
duke
parents:
diff changeset
   195
  // events that can ONLY be enabled/disabled globally (can't toggle on individual threads).
489c9b5090e2 Initial load
duke
parents:
diff changeset
   196
  static bool is_global_event(jvmtiEvent event_type);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   197
489c9b5090e2 Initial load
duke
parents:
diff changeset
   198
  // is the event_type valid?
489c9b5090e2 Initial load
duke
parents:
diff changeset
   199
  // to do: check against valid event array
489c9b5090e2 Initial load
duke
parents:
diff changeset
   200
  static bool is_valid_event_type(jvmtiEvent event_type) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   201
    return ((int)event_type >= TOTAL_MIN_EVENT_TYPE_VAL)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   202
        && ((int)event_type <= TOTAL_MAX_EVENT_TYPE_VAL);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   203
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   204
489c9b5090e2 Initial load
duke
parents:
diff changeset
   205
  // Use (thread == NULL) to enable/disable an event globally.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   206
  // Use (thread != NULL) to enable/disable an event for a particular thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   207
  // thread is ignored for events that can only be specified globally
489c9b5090e2 Initial load
duke
parents:
diff changeset
   208
  static void set_user_enabled(JvmtiEnvBase *env, JavaThread *thread,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   209
                               jvmtiEvent event_type, bool enabled);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   210
489c9b5090e2 Initial load
duke
parents:
diff changeset
   211
  // Setting callbacks changes computed enablement and must be done
489c9b5090e2 Initial load
duke
parents:
diff changeset
   212
  // at a safepoint otherwise a NULL callback could be attempted
489c9b5090e2 Initial load
duke
parents:
diff changeset
   213
  static void set_event_callbacks(JvmtiEnvBase *env,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   214
                                  const jvmtiEventCallbacks* callbacks,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   215
                                  jint size_of_callbacks);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   216
489c9b5090e2 Initial load
duke
parents:
diff changeset
   217
  // Sets the callback function for a single extension event and enables
489c9b5090e2 Initial load
duke
parents:
diff changeset
   218
  // (or disables it).
489c9b5090e2 Initial load
duke
parents:
diff changeset
   219
  static void set_extension_event_callback(JvmtiEnvBase* env,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   220
                                           jint extension_event_index,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   221
                                           jvmtiExtensionEvent callback);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   222
489c9b5090e2 Initial load
duke
parents:
diff changeset
   223
  static void set_frame_pop(JvmtiEnvThreadState *env_thread, JvmtiFramePop fpop);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   224
  static void clear_frame_pop(JvmtiEnvThreadState *env_thread, JvmtiFramePop fpop);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   225
  static void clear_to_frame_pop(JvmtiEnvThreadState *env_thread, JvmtiFramePop fpop);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   226
489c9b5090e2 Initial load
duke
parents:
diff changeset
   227
  static void change_field_watch(jvmtiEvent event_type, bool added);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   228
489c9b5090e2 Initial load
duke
parents:
diff changeset
   229
  static void thread_started(JavaThread *thread);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   230
  static void thread_ended(JavaThread *thread);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   231
489c9b5090e2 Initial load
duke
parents:
diff changeset
   232
  static void env_initialize(JvmtiEnvBase *env);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   233
  static void env_dispose(JvmtiEnvBase *env);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   234
489c9b5090e2 Initial load
duke
parents:
diff changeset
   235
  static void vm_start();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   236
  static void vm_init();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   237
  static void vm_death();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   238
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   239
489c9b5090e2 Initial load
duke
parents:
diff changeset
   240
#endif   /* _JAVA_JVMTI_EVENT_CONTROLLER_H_ */