| /******************************************************************************* |
| * Copyright (c) 2000, 2015 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jdi.hcr; |
| |
| import com.sun.jdi.ReferenceType; |
| import com.sun.jdi.ThreadReference; |
| import com.sun.jdi.request.StepRequest; |
| |
| /** |
| * A reenter step request is a step event request that will be activated when |
| * the given thread is about to pop the top stack frame. At this point, the VM |
| * is expected to do the following: |
| * <ol> |
| * <li>The arguments to the method are carefully set aside, along with the |
| * identity of the actual method. |
| * <li>The stack frame is popped. Any value being returned is discarded. Any |
| * exception being thrown is ignored. Instruction counter in caller is set |
| * <i>at</i> (rather than after) the send bytecode. |
| * <li>Suspend the thread depending on the suspend policy and report a |
| * <code>StepEvent</code> for this request. |
| * <li>When the thread is resumed, the method is re-retrieved; if the class had |
| * recently been reloaded, this must find the new bytecodes. If the method is no |
| * longer present, throw a <code>java.lang.NoSuchMethodError</code> as specified |
| * in the Java VM Specification. |
| * <li>The method is entered as per normal, using the saved arguments. |
| * </ol> |
| * <p> |
| * Note that other events may need to be reported as well (e.g., hit breakpoint |
| * on first instruction). Execution does not reenter the caller at any point; so |
| * no step out or step into events are reported. |
| * |
| */ |
| public interface ReenterStepRequest extends StepRequest { |
| /** |
| * Restricts the events generated by this request to those whose location is |
| * in a class whose name does NOT match this restricted regular expression. |
| * e.g. "java.*" or "*.Foo". |
| * |
| * @param classPattern |
| * the pattern String to filter against. |
| */ |
| @Override |
| public void addClassExclusionFilter(String classPattern); |
| |
| /** |
| * Restricts the events generated by this request to those whose location is |
| * in this class.. |
| * |
| * @param clazz |
| * the class to filter on. |
| */ |
| @Override |
| public void addClassFilter(ReferenceType clazz); |
| |
| /** |
| * Restricts the events generated by this request to those whose location is |
| * in a class whose name matches this restricted regular expression. e.g. |
| * "java.*" or "*.Foo". |
| * |
| * @param classPattern |
| * the pattern String to filter for. |
| */ |
| @Override |
| public void addClassFilter(String classPattern); |
| |
| /** |
| * @return the thread on which the step event is being requested. |
| */ |
| @Override |
| public ThreadReference thread(); |
| } |