src/share/vm/prims/jvmtiImpl.hpp
Print this page
rev 4530 : 6843375: Debuggee VM crashes performing mark-sweep-compact
Reviewed-by: stefank, jmasa
*** 198,248 ****
};
///////////////////////////////////////////////////////////////
//
- // class VM_ChangeBreakpoints
- // Used by : JvmtiBreakpoints
- // Used by JVMTI methods: none directly.
- // Note: A Helper class.
- //
- // VM_ChangeBreakpoints implements a VM_Operation for ALL modifications to the JvmtiBreakpoints class.
- //
-
- class VM_ChangeBreakpoints : public VM_Operation {
- private:
- JvmtiBreakpoints* _breakpoints;
- int _operation;
- JvmtiBreakpoint* _bp;
-
- public:
- enum { SET_BREAKPOINT=0, CLEAR_BREAKPOINT=1, CLEAR_ALL_BREAKPOINT=2 };
-
- VM_ChangeBreakpoints(JvmtiBreakpoints* breakpoints, int operation) {
- _breakpoints = breakpoints;
- _bp = NULL;
- _operation = operation;
- assert(breakpoints != NULL, "breakpoints != NULL");
- assert(operation == CLEAR_ALL_BREAKPOINT, "unknown breakpoint operation");
- }
- VM_ChangeBreakpoints(JvmtiBreakpoints* breakpoints, int operation, JvmtiBreakpoint *bp) {
- _breakpoints = breakpoints;
- _bp = bp;
- _operation = operation;
- assert(breakpoints != NULL, "breakpoints != NULL");
- assert(bp != NULL, "bp != NULL");
- assert(operation == SET_BREAKPOINT || operation == CLEAR_BREAKPOINT , "unknown breakpoint operation");
- }
-
- VMOp_Type type() const { return VMOp_ChangeBreakpoints; }
- void doit();
- void oops_do(OopClosure* f);
- };
-
-
- ///////////////////////////////////////////////////////////////
- //
// class JvmtiBreakpoints
// Used by : JvmtiCurrentBreakpoints
// Used by JVMTI methods: none directly
// Note: A Helper class
//
--- 198,207 ----
*** 265,275 ****
// to insure they only occur at safepoints.
// Todo: add checks for safepoint
friend class VM_ChangeBreakpoints;
void set_at_safepoint(JvmtiBreakpoint& bp);
void clear_at_safepoint(JvmtiBreakpoint& bp);
- void clearall_at_safepoint();
static void do_element(GrowableElement *e);
public:
JvmtiBreakpoints(void listener_fun(void *, address *));
--- 224,233 ----
*** 280,290 ****
void print();
int set(JvmtiBreakpoint& bp);
int clear(JvmtiBreakpoint& bp);
void clearall_in_class_at_safepoint(klassOop klass);
- void clearall();
void gc_epilogue();
};
///////////////////////////////////////////////////////////////
--- 238,247 ----
*** 338,348 ****
--- 295,339 ----
if ((*bps) == bcp) return true;
}
return false;
}
+
///////////////////////////////////////////////////////////////
+ //
+ // class VM_ChangeBreakpoints
+ // Used by : JvmtiBreakpoints
+ // Used by JVMTI methods: none directly.
+ // Note: A Helper class.
+ //
+ // VM_ChangeBreakpoints implements a VM_Operation for ALL modifications to the JvmtiBreakpoints class.
+ //
+
+ class VM_ChangeBreakpoints : public VM_Operation {
+ private:
+ JvmtiBreakpoints* _breakpoints;
+ int _operation;
+ JvmtiBreakpoint* _bp;
+
+ public:
+ enum { SET_BREAKPOINT=0, CLEAR_BREAKPOINT=1 };
+
+ VM_ChangeBreakpoints(int operation, JvmtiBreakpoint *bp) {
+ JvmtiBreakpoints& current_bps = JvmtiCurrentBreakpoints::get_jvmti_breakpoints();
+ _breakpoints = ¤t_bps;
+ _bp = bp;
+ _operation = operation;
+ assert(bp != NULL, "bp != NULL");
+ }
+
+ VMOp_Type type() const { return VMOp_ChangeBreakpoints; }
+ void doit();
+ void oops_do(OopClosure* f);
+ };
+
+
+ ///////////////////////////////////////////////////////////////
// The get/set local operations must only be done by the VM thread
// because the interpreter version needs to access oop maps, which can
// only safely be done by the VM thread
//
// I'm told that in 1.5 oop maps are now protected by a lock and