public Value evaluate ( Debugger debugger ) throws InvocationException { RuntimeState runtimeState = getRuntimeState ( debugger ) ; Location suspendedLoc = debugger . getSuspendedLocation ( ) ; VirtualMachine vm = suspendedLoc . virtualMachine ( ) ; ClassType classType = runtimeState . getCodeRunnerClass ( vm ) ; Value thisObject = findThisObjectFromCtx ( debugger . getSuspendedThread ( ) ) ; try { Value value = classType . invokeMethod ( debugger . getSuspendedThread ( ) , runtimeState . getRunMeSomeCodeMethod ( ) , Arrays . asList ( thisObject , suspendedLoc . declaringType ( ) . classLoader ( ) , makeExternalsSymbolsForLocals ( runtimeState , vm , debugger ) , vm . mirrorOf ( _strText ) , vm . mirrorOf ( _strClassContext ) , vm . mirrorOf ( _strContextElementClass ) , vm . mirrorOf ( _iContextLocation ) ) , 0 ) ; // Primitive boolean value needed for conditional breakpoint expression return unboxIfBoxed ( runtimeState , debugger . getSuspendedThread ( ) , value ) ; } catch ( Exception e ) { throw GosuExceptionUtil . forceThrow ( e ) ; } }
EvaluationContextImpl should be at the same stackFrame as it was in the call to EvaluatorBuilderImpl . build