Lines Matching refs:breakpoint
86 class Breakpoint : public ValueObject {
88 Breakpoint(ArtMethod* method, uint32_t dex_pc, DeoptimizationRequest::Kind deoptimization_kind)
97 Breakpoint(const Breakpoint& other) SHARED_REQUIRES(Locks::mutator_lock_)
116 // Returns true if the method of this breakpoint and the passed in method should be considered the
123 // The location of this breakpoint.
127 // Indicates whether breakpoint needs full deoptimization or selective deoptimization.
131 static std::ostream& operator<<(std::ostream& os, const Breakpoint& rhs)
133 os << StringPrintf("Breakpoint[%s @%#x]", PrettyMethod(rhs.Method()).c_str(), rhs.DexPc());
154 // like BREAKPOINT or SINGLE_STEP (or even METHOD_EXIT if this is a RETURN instruction).
161 // also group it with other events for this location like BREAKPOINT or SINGLE_STEP.
201 // JDWP events in the same packet: METHOD_ENTRY, METHOD_EXIT, BREAKPOINT and/or SINGLE_STEP.
314 static std::vector<Breakpoint> gBreakpoints GUARDED_BY(Locks::breakpoint_lock_);
335 VLOG(jdwp) << "Hit breakpoint #" << i << ": " << gBreakpoints[i];
3240 static const Breakpoint* FindFirstBreakpointForMethod(ArtMethod* m)
3242 for (Breakpoint& breakpoint : gBreakpoints) {
3243 if (breakpoint.IsInMethod(m)) {
3244 return &breakpoint;
3259 for (const Breakpoint& breakpoint : gBreakpoints) {
3260 if (breakpoint.IsInMethod(m)) {
3261 CHECK_EQ(deoptimization_kind, breakpoint.GetDeoptimizationKind());
3281 // Returns the deoptimization kind required to set a breakpoint in a method.
3282 // If a breakpoint has already been set, we also return the first breakpoint
3286 const Breakpoint** existing_brkpt)
3294 const Breakpoint* first_breakpoint;
3302 // There is no breakpoint on this method yet: we need to deoptimize. If this method is default,
3325 // There is at least one breakpoint for this method: we don't need to deoptimize.
3327 VLOG(jdwp) << "Breakpoint already set: no deoptimization is required";
3337 // Installs a breakpoint at the specified location. Also indicates through the deoptimization
3344 const Breakpoint* existing_breakpoint = nullptr;
3358 // If there is at least one existing breakpoint on the same method, the new breakpoint
3359 // must have the same deoptimization kind than the existing breakpoint(s).
3366 gBreakpoints.push_back(Breakpoint(m, location->dex_pc, breakpoint_deoptimization_kind));
3367 VLOG(jdwp) << "Set breakpoint #" << (gBreakpoints.size() - 1) << ": "
3372 // Uninstalls a breakpoint at the specified location. Also indicates through the deoptimization
3381 VLOG(jdwp) << "Removed breakpoint #" << i << ": " << gBreakpoints[i];
3389 const Breakpoint* const existing_breakpoint = FindFirstBreakpointForMethod(m);
3391 // There is no more breakpoint on this method: we need to undeoptimize.
3407 // There is at least one breakpoint for this method: we don't need to undeoptimize.
5064 // Visit breakpoint roots, used to prevent unloading of methods with breakpoints.
5067 for (Breakpoint& breakpoint : gBreakpoints) {
5068 breakpoint.Method()->VisitRoots(root_visitor, sizeof(void*));