package st.gravel.support.jvm.debugger; import st.gravel.support.compiler.ast.AbsoluteReference; import st.gravel.support.compiler.ast.Expression; import st.gravel.support.compiler.ast.Parser; import st.gravel.support.jvm.runtime.ImageBootstrapper; public class VMLocalTarget { private final class StEvaluator extends Promise { private final String source; private StEvaluator(String source) { this.source = source; } @Override public Object evaluate() { System.out.println("evaluate started"); AbsoluteReference _reference = AbsoluteReference.factory .object(); Expression expression = Parser.factory.parseExpression_(source); Object value = ImageBootstrapper.systemMapping .evaluateExpression_reference_(expression, _reference); System.out.println("evaluate done"); return value; } } public static void main(String[] args) { System.out.println("VMTarget Started"); ImageBootstrapper.bootstrap(); new VMLocalTarget().haltPoint(); System.out.println("VMTarget post haltPoint; terminating"); } private void haltPoint() { } public int add(int x, int y) { return x + y; } public void ping() { } public Promise evaluateForked(final String source) throws Throwable { System.out.println("local evaluateForked"); Promise promise = new StEvaluator(source); return promise; } }