Package org.eclipse.jdt.debug.eval
Interface IAstEvaluationEngine
- All Superinterfaces:
IEvaluationEngine
An evaluation engine that performs evaluations by interpreting abstract
syntax trees. An AST evaluation engine is capable of creating compiled
expressions that can be evaluated multiple times in a given runtime context.
- Since:
- 2.0
- Restriction:
- This interface is not intended to be implemented by clients.
- Restriction:
- This interface is not intended to be extended by clients.
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
Instructs the evaluation engine to disable garbage collection on the result object. -
Method Summary
Modifier and TypeMethodDescriptionvoid
evaluateExpression
(ICompiledExpression expression, IJavaObject object, IJavaThread thread, IEvaluationListener listener, int evaluationDetail, boolean hitBreakpoints) Asynchronously evaluates the given expression in the context of the specified type, reporting the result back to the given listener.void
evaluateExpression
(ICompiledExpression expression, IJavaStackFrame frame, IEvaluationListener listener, int evaluationDetail, boolean hitBreakpoints) Asynchronously evaluates the given expression in the context of the specified stack frame, reporting the result back to the given listener.getCompiledExpression
(String expression, IJavaObject object) Synchronously generates a compiled expression from the given expression in the context of the specified object.getCompiledExpression
(String expression, IJavaReferenceType type) Synchronously generates a compiled expression from the given expression in the context of the specified type.getCompiledExpression
(String expression, IJavaReferenceType type, Map<String, String> compileOptions) Synchronously generates a compiled expression from the given expression in the context of the specified type.getCompiledExpression
(String expression, IJavaStackFrame frame) Synchronously generates a compiled expression from the given expression in the context of the specified stack frame.Methods inherited from interface org.eclipse.jdt.debug.eval.IEvaluationEngine
dispose, evaluate, evaluate, getDebugTarget, getJavaProject
-
Field Details
-
DISABLE_GC_ON_RESULT
static final int DISABLE_GC_ON_RESULTInstructs the evaluation engine to disable garbage collection on the result object. The caller is then responsible to callIJavaObject.enableCollection()
on the evaluated result. Can be passed as a bit flag to theevaluationDetail
parameter.- Since:
- 3.17
- See Also:
-
-
Method Details
-
evaluateExpression
void evaluateExpression(ICompiledExpression expression, IJavaStackFrame frame, IEvaluationListener listener, int evaluationDetail, boolean hitBreakpoints) throws org.eclipse.debug.core.DebugException Asynchronously evaluates the given expression in the context of the specified stack frame, reporting the result back to the given listener. The thread is resumed from the location at which it is currently suspended to perform the evaluation. When the evaluation completes, the thread will be suspended at this original location. The thread runs the evaluation with the given evaluation detail (@see IJavaThread#runEvaluation(IEvaluationRunnable, IProgressMonitor, int)). Compilation and runtime errors are reported in the evaluation result.- Parameters:
expression
- expression to evaluateframe
- the stack frame context in which to run the evaluation.listener
- the listener that will receive notification when/if the evaluation completesevaluationDetail
- bitmask of one ofDebugEvent.EVALUATION
orDebugEvent.EVALUATION_IMPLICIT
and optionallyDISABLE_GC_ON_RESULT
hitBreakpoints
- whether or not breakpoints should be honored in the evaluation thread during the evaluation. Iffalse
, breakpoints hit in the evaluation thread will be ignored.- Throws:
org.eclipse.debug.core.DebugException
- if this method fails. Reasons include:- Failure communicating with the VM. The DebugException's status code contains the underlying exception responsible for the failure.
- The associated thread is not currently suspended
- The stack frame is not contained in the debug target associated with this evaluation engine
- The associated thread is suspended in the middle of an evaluation that has not completed. It is not possible to perform nested evaluations
-
evaluateExpression
void evaluateExpression(ICompiledExpression expression, IJavaObject object, IJavaThread thread, IEvaluationListener listener, int evaluationDetail, boolean hitBreakpoints) throws org.eclipse.debug.core.DebugException Asynchronously evaluates the given expression in the context of the specified type, reporting the result back to the given listener. The expression is evaluated in the context of the Java project this evaluation engine was created on. If the expression is determined to have no errors, the expression is evaluated in the thread associated with the given stack frame. When the evaluation completes, the thread will be suspended at this original location. The thread runs the evaluation with the given evaluation detail (@see IJavaThread#runEvaluation(IEvaluationRunnable, IProgressMonitor, int)). Compilation and runtime errors are reported in the evaluation result.- Parameters:
expression
- the expression to evaluateobject
- the 'this' context for the evaluationthread
- the thread in which to run the evaluation, which must be suspendedlistener
- the listener that will receive notification when/if the evaluation completesevaluationDetail
- bitmask of one ofDebugEvent.EVALUATION
orDebugEvent.EVALUATION_IMPLICIT
and optionallyDISABLE_GC_ON_RESULT
hitBreakpoints
- whether or not breakpoints should be honored in the evaluation thread during the evaluation. Iffalse
, breakpoints hit in the evaluation thread will be ignored.- Throws:
org.eclipse.debug.core.DebugException
- if this method fails. Reasons include:- Failure communicating with the VM. The DebugException's status code contains the underlying exception responsible for the failure.
- The associated thread is not currently suspended
- The stack frame is not contained in the debug target associated with this evaluation engine
- The associated thread is suspended in the middle of an evaluation that has not completed. It is not possible to perform nested evaluations
-
getCompiledExpression
ICompiledExpression getCompiledExpression(String expression, IJavaStackFrame frame) throws org.eclipse.debug.core.DebugException Synchronously generates a compiled expression from the given expression in the context of the specified stack frame. The generated expression can be stored and evaluated later in a valid runtime context. Compilation errors are reported in the returned compiled expression.- Parameters:
expression
- expression to compileframe
- the context in which to compile the expression- Returns:
- the compiled expression
- Throws:
org.eclipse.debug.core.DebugException
- if this method fails. Reasons include:- Failure communicating with the VM. The DebugException's status code contains the underlying exception responsible for the failure.
- The associated thread is not currently suspended
- The stack frame is not contained in the debug target associated with this evaluation engine
-
getCompiledExpression
ICompiledExpression getCompiledExpression(String expression, IJavaObject object) throws org.eclipse.debug.core.DebugException Synchronously generates a compiled expression from the given expression in the context of the specified object. The generated expression can be stored and evaluated later in a valid runtime context. Compilation errors are reported in the returned compiled expression.- Parameters:
expression
- expression to compileobject
- the context in which to compile the expression- Returns:
- the compiled epxression
- Throws:
org.eclipse.debug.core.DebugException
- if this method fails. Reasons include:- Failure communicating with the VM. The DebugException's status code contains the underlying exception responsible for the failure.
- The associated thread is not currently suspended
- The stack frame is not contained in the debug target associated with this evaluation engine
-
getCompiledExpression
ICompiledExpression getCompiledExpression(String expression, IJavaReferenceType type) throws org.eclipse.debug.core.DebugException Synchronously generates a compiled expression from the given expression in the context of the specified type. The generated expression can be stored and evaluated later in a valid runtime context. Compilation errors are reported in the returned compiled expression.- Parameters:
expression
- expression to compiletype
- the context in which to compile the expression- Returns:
- the compiled expression
- Throws:
org.eclipse.debug.core.DebugException
- if this method fails. Reasons include:- Failure communicating with the VM. The DebugException's status code contains the underlying exception responsible for the failure.
- The associated thread is not currently suspended
- The stack frame is not contained in the debug target associated with this evaluation engine
- Since:
- 3.1
-
getCompiledExpression
ICompiledExpression getCompiledExpression(String expression, IJavaReferenceType type, Map<String, String> compileOptions) throws org.eclipse.debug.core.DebugExceptionSynchronously generates a compiled expression from the given expression in the context of the specified type. The generated expression can be stored and evaluated later in a valid runtime context. Compilation errors are reported in the returned compiled expression.- Parameters:
expression
- expression to compiletype
- the context in which to compile the expressioncompileOptions
- options to use during the compile- Returns:
- the compiled expression
- Throws:
org.eclipse.debug.core.DebugException
- if this method fails. Reasons include:- Failure communicating with the VM. The DebugException's status code contains the underlying exception responsible for the failure.
- The associated thread is not currently suspended
- The stack frame is not contained in the debug target associated with this evaluation engine
- Since:
- 3.13
-