public static String sigParams(Class... params) { StringBuilder signature = new StringBuilder("("); for (int i = 0; i < params.length; i++) { signature.append(ci(params[i])); } signature.append(")"); return signature.toString(); }
public static String sigParams(String descriptor, Class... params) { StringBuilder signature = new StringBuilder("("); signature.append(descriptor); for (int i = 0; i < params.length; i++) { signature.append(ci(params[i])); } signature.append(")"); return signature.toString(); }
public static String sig(Class[] retvalParams) { Class[] justParams = new Class[retvalParams.length - 1]; System.arraycopy(retvalParams, 1, justParams, 0, justParams.length); return sigParams(justParams) + ci(retvalParams[0]); }
public VisibleAnnotation annotation(final Class<?> type) { final VisibleAnnotation annotation = new VisibleAnnotation(ci(type)); addAnnotation(annotation); return annotation; }
@Override public Object visit(Object context, NullLiteralExpression expr, boolean strict) { getstatic(p(Types.class), "NULL", ci(Types.Null.class)); return null; }
public VisibleAnnotation annotation(final Class<?> type) { final VisibleAnnotation annotation = new VisibleAnnotation(ci(type)); addAnnotation(annotation); return annotation; }
public CodeBlock jsCompletionValue() { return new CodeBlock() // IN completion .getfield(p(Completion.class), "value", ci(Object.class)); // value }
public CodeBlock jsCompletionTarget() { return new CodeBlock() // IN completion .getfield(p(Completion.class), "target", ci(String.class)); // value }
public CodeBlock jsCompletionTarget() { return new CodeBlock() // IN completion .getfield(p(Completion.class), "target", ci(String.class)); // value }
public CodeBlock jsPushUndefined() { return new CodeBlock() .getstatic(p(Types.class), "UNDEFINED", ci(Types.Undefined.class)); }
public CodeBlock jsCompletionValue() { return new CodeBlock() // IN completion .getfield(p(Completion.class), "value", ci(Object.class)); // value }
public CodeBlock jsCompletionType() { return new CodeBlock() // IN completion .getfield(p(Completion.class), "type", ci(Completion.Type.class)) // type .invokevirtual(p(Completion.Type.class), "ordinal", sig(int.class)); }
public CodeBlock jsCompletionType() { return new CodeBlock() // IN completion .getfield(p(Completion.class), "type", ci(Completion.Type.class)) // type .invokevirtual(p(Completion.Type.class), "ordinal", sig(int.class)); }
public CodeBlock iprintln() { dup(); getstatic(p(System.class), "out", ci(PrintStream.class)); swap(); invokevirtual(p(PrintStream.class), "println", sig(void.class, params( int.class))); return this; }
public CodeBlock aprintln() { dup(); getstatic(p(System.class), "err", ci(PrintStream.class)); swap(); invokevirtual(p(PrintStream.class), "println", sig(void.class, params(Object.class))); return this; }
@Override public void define(JiteClass cls, CompilationContext context, boolean strict) { int numChunks = this.plans.size(); for (int i = 0; i < numChunks; ++i) { JiteClass chunkClass = new JiteClass(cls.getClassName() + "$" + i, new String[] { p(BasicBlock.class) }); chunkClass.defineDefaultConstructor(); this.plans.get(i).define(chunkClass, context, strict); defineClass(chunkClass); cls.defineField("chunk" + i, Opcodes.ACC_PRIVATE, ci(BasicBlock.class), null); } cls.defineMethod("call", Opcodes.ACC_PUBLIC, sig(Completion.class, ExecutionContext.class), new MultipleClassCaller(cls.getClassName(), numChunks)); cls.defineMethod("initializeCode", Opcodes.ACC_PRIVATE, sig(void.class), new MultipleClassInitializer(cls.getClassName(), numChunks)); }
public CodeBlock iprintln() { dup(); getstatic(p(System.class), "out", ci(PrintStream.class)); swap(); invokevirtual(p(PrintStream.class), "println", sig(void.class, params(int.class))); return this; }