@Override public void resume(ExecutionContext context, Object suspendedState) throws ResolvedControlThrowable { // trim to single value Object result = context.getReturnBuffer().get0(); context.getReturnBuffer().setTo(result); }
@Override public void resume(ExecutionContext context, Object suspendedState) throws ResolvedControlThrowable { System.out.println("resume"); context.getReturnBuffer().setTo(); }
@Override public void invoke(ExecutionContext context, Object[] args) throws ResolvedControlThrowable { Object[] callArgs = new Object[curriedArgs.length + args.length]; System.arraycopy(curriedArgs, 0, callArgs, 0, curriedArgs.length); System.arraycopy(args, 0, callArgs, curriedArgs.length, args.length); context.getReturnBuffer().setToCallWithContentsOf(fn, callArgs); }
@Override public void resume(ExecutionContext context, Object suspendedState) throws ResolvedControlThrowable { Object additionResult = context.getReturnBuffer().get0(); // a(b + c) context.getReturnBuffer().setToCall(suspendedState, additionResult); }
@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 resume(ExecutionContext context, Object suspendedState) throws ResolvedControlThrowable { ReturnBuffer rbuf = context.getReturnBuffer(); ArrayList<Object> result = new ArrayList<>(); result.add(Boolean.TRUE); result.addAll(Arrays.asList(rbuf.getAsArray())); rbuf.setToContentsOf(result); }
private static void prependTrue(ExecutionContext context) { ReturnBuffer rbuf = context.getReturnBuffer(); ArrayList<Object> result = new ArrayList<>(); result.add(Boolean.TRUE); result.addAll(Arrays.asList(rbuf.getAsArray())); rbuf.setToContentsOf(result); }
private static void unpackUsingRawGet(ExecutionContext context, Table t, long i, long j) { ArrayList<Object> r = new ArrayList<>(); // protect against overflows when j == Long.MAX_VALUE for (long k = i; (i <= k) && (k <= j); k++) { r.add(t.rawget(k)); } context.getReturnBuffer().setToContentsOf(r); }
private static void prependFalseAndTrim(ExecutionContext context) { ReturnBuffer rbuf = context.getReturnBuffer(); Object errorObject = rbuf.get0(); rbuf.setTo(Boolean.FALSE, errorObject); }
@Override public void resume(ExecutionContext context, Object suspendedState) throws ResolvedControlThrowable { long index = (Long) suspendedState; Object result = context.getReturnBuffer().get0(); processResult(context, index, result); }
@Override protected void invoke(ExecutionContext context, ArgumentIterator args) throws ResolvedControlThrowable { ByteString modName = args.nextString(); Object entry = preload.rawget(modName); if (entry != null) { context.getReturnBuffer().setTo(entry); } else { String error = "\n\tno field package.preload['" + modName + "']"; context.getReturnBuffer().setTo(error); } }
@Override protected void invoke(ExecutionContext context, ArgumentIterator args) throws ResolvedControlThrowable { ByteString typeName = PlainValueTypeNamer.INSTANCE.typeNameOf(args.nextAny()); context.getReturnBuffer().setTo(typeName); }
@Override protected void invoke(ExecutionContext context, ArgumentIterator args) throws ResolvedControlThrowable { Object x = args.nextAny(); context.getReturnBuffer().setTo(Conversions.integerValueOf(x)); }
private static void resume_s(ExecutionContext context, StringBuilder bld, int width, int flags, int precision) { Object o = context.getReturnBuffer().get0(); ByteString sv = Conversions.stringValueOf(o); String s = sv != null ? sv.toString() : ""; bld.append(justified(width, flags, trimmed(precision, s))); }
@Override protected void invoke(ExecutionContext context, ArgumentIterator args) throws ResolvedControlThrowable { Table table = args.nextTable(); Object key = args.nextAny(); context.getReturnBuffer().setTo(table.rawget(key)); }
@Override protected void invoke(ExecutionContext context, ArgumentIterator args) throws ResolvedControlThrowable { ByteString name = args.nextString(); String value = environment.getEnv(name.toString()); context.getReturnBuffer().setTo(value); }
@Override public void resume(ExecutionContext context, Object suspendedState) throws ResolvedControlThrowable { ReturnBuffer rbuf = context.getReturnBuffer(); rbuf.setTo(rbuf.get0(), rbuf.get1(), rbuf.get2()); }
@Override protected void invoke(ExecutionContext context, ArgumentIterator args) throws ResolvedControlThrowable { Object arg = args.nextAny(); Object meta = Metatables.getMetamethod(context, MT_METATABLE, arg); Object result = meta != null ? meta // __metatable field present, return its value : context.getMetatable(arg); // return the entire metatable context.getReturnBuffer().setTo(result); }
@Override protected void invoke(ExecutionContext context, ArgumentIterator args) throws ResolvedControlThrowable { Table table = context.newTable(); int n = 0; while (args.hasNext()) { table.rawset(n + 1, args.nextAny()); n += 1; } table.rawset("n", Long.valueOf(n)); context.getReturnBuffer().setTo(table); }
private static void _call_comparison_mt(ExecutionContext context, boolean cmpTo, Object handler, Object a, Object b) throws UnresolvedControlThrowable { try { call(context, handler, a, b); } catch (UnresolvedControlThrowable ct) { // suspended in the metamethod call throw ct.resolve(cmpResultResumable(cmpTo), null).unresolve(); } // not suspended: set the result, possibly flipping it ReturnBuffer result = context.getReturnBuffer(); result.setTo(cmpTo == Conversions.booleanValueOf(result.get0())); }