@Override public void setToContentsOf(Collection<?> collection) { buffer.setToContentsOf(collection); }
@Override public void resume(ExecutionContext context, Object suspendedState) throws ResolvedControlThrowable { // success: prepend true ReturnBuffer rbuf = context.getReturnBuffer(); ArrayList<Object> result = new ArrayList<>(); result.add(Boolean.TRUE); result.addAll(Arrays.asList(rbuf.getAsArray())); rbuf.setToContentsOf(result); }
@Override public void setTo(Object a, Object b) { buffer.setTo(a, b); }
/** * Evaluates tail calls stored in the return buffer associated with the execution * context {@code context}. * <b>This method throws a {@link ResolvedControlThrowable}</b>: * this method is expected to have resolved non-local control changes up to the point * of its invocation. * * @param context execution context, must not be {@code null} * * @throws ResolvedControlThrowable if a tail call initiates a non-local control change * @throws NullPointerException if {@code context} is {@code null} * @throws IllegalOperationAttemptException if a tail call of a non-callable value * is attempted */ @SuppressWarnings("unused") static void evaluateTailCalls(ExecutionContext context) throws ResolvedControlThrowable { ReturnBuffer r = context.getReturnBuffer(); while (r.isCall()) { Object target = r.getCallTarget(); switch (r.size()) { case 0: mt_invoke(context, target); break; case 1: mt_invoke(context, target, r.get0()); break; case 2: mt_invoke(context, target, r.get0(), r.get1()); break; case 3: mt_invoke(context, target, r.get0(), r.get1(), r.get2()); break; case 4: mt_invoke(context, target, r.get0(), r.get1(), r.get2(), r.get3()); break; case 5: mt_invoke(context, target, r.get0(), r.get1(), r.get2(), r.get3(), r.get4()); break; default: mt_invoke(context, target, r.getAsArray()); break; } } }
context.getReturnBuffer().setToContentsOf(m.captures()); context.getReturnBuffer().setTo(m.fullMatch()); context.getReturnBuffer().setTo(); context.getReturnBuffer().setTo();
context.getReturnBuffer().setTo(); return; Object v = context.getReturnBuffer().get0(); result.add(v); context.getReturnBuffer().setToContentsOf(result); return;
@Override public Object get0() { return buffer.get0(); }
@Override public void setToCall(Object target, Object arg1, Object arg2) { buffer.setToCall(target, arg1, arg2); }
@Override public void resume(ExecutionContext context, Object suspendedState) throws ResolvedControlThrowable { Object target = context.getReturnBuffer().get0(); context.getReturnBuffer().setToCallWithContentsOf(target, (Object[]) suspendedState); }
@Override public void setToCallWithContentsOf(Object target, Object[] args) { buffer.setToCallWithContentsOf(target, args); }
@Override public Object[] getAsArray() { return buffer.getAsArray(); }
@Override public Object get2() { return buffer.get2(); }
@Override public Object get1() { return buffer.get1(); }
@Override protected void invoke(ExecutionContext context, ArgumentIterator args) throws ResolvedControlThrowable { Table t = args.nextTable(); Object metamethod = Metatables.getMetamethod(context, MT_PAIRS, t); if (metamethod != null) { try { Dispatch.call(context, metamethod, t); } catch (UnresolvedControlThrowable ct) { throw ct.resolve(this, null); } ReturnBuffer rbuf = context.getReturnBuffer(); rbuf.setTo(rbuf.get0(), rbuf.get1(), rbuf.get2()); } else { ReturnBuffer rbuf = context.getReturnBuffer(); rbuf.setTo(NEXT, t, null); } }
context.getReturnBuffer().setTo( (long) (at + 1), (long) (at + pattern.length())); context.getReturnBuffer().setTo(null); result.add((long) m.endIndex()); result.addAll(m.captures()); context.getReturnBuffer().setToContentsOf(result); context.getReturnBuffer().setTo(null);