01: /*******************************************************************************
02: * Copyright (c) 2000, 2005 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.jdi.hcr;
11:
12: import com.sun.jdi.ReferenceType;
13: import com.sun.jdi.ThreadReference;
14: import com.sun.jdi.request.StepRequest;
15:
16: /**
17: * A reenter step request is a step event request that will be activated when the given
18: * thread is about to pop the top stack frame. At this point, the VM is expected to do
19: * the following:
20: * <ol>
21: * <li>The arguments to the method are carefully set aside, along with the identity of the
22: * actual method.
23: * <li>The stack frame is popped. Any value being returned is discarded. Any exception being
24: * thrown is ignored. Instruction counter in caller is set <i>at</i> (rather than after) the
25: * send bytecode.
26: * <li>Suspend the thread depending on the suspend policy and report a <code>StepEvent</code>
27: * for this request.
28: * <li>When the thread is resumed, the method is re-retrieved; if the class had recently
29: * been reloaded, this must find the new bytecodes. If the method is no longer present,
30: * throw a <code>java.lang.NoSuchMethodError</code> as specified in the Java VM
31: * Specification.
32: * <li>The method is entered as per normal, using the saved arguments.
33: * </ol>
34: * <p>
35: * Note that other events may need to be reported as well (e.g., hit breakpoint on first
36: * instruction). Execution does not reenter the caller at any point; so no step out or step
37: * into events are reported.
38: *
39: */
40: public interface ReenterStepRequest extends StepRequest {
41: /**
42: * Restricts the events generated by this request to those
43: * whose location is in a class whose name does NOT match this restricted
44: * regular expression. e.g. "java.*" or "*.Foo".
45: * @param classPattern the pattern String to filter against.
46: */
47: public void addClassExclusionFilter(String classPattern);
48:
49: /**
50: * Restricts the events generated by this request to those
51: * whose location is in this class..
52: * @param clazz the class to filter on.
53: */
54: public void addClassFilter(ReferenceType clazz);
55:
56: /**
57: * Restricts the events generated by this request to those
58: * whose location is in a class whose name matches this restricted
59: * regular expression. e.g. "java.*" or "*.Foo".
60: * @param classPattern the pattern String to filter for.
61: */
62: public void addClassFilter(String classPattern);
63:
64: /**
65: * @return the thread on which the step event is being requested.
66: */
67: public ThreadReference thread();
68: }
|