MCPcopy Index your code
hub / github.com/clojure/clojure / emitArgsAndCall

Method emitArgsAndCall

src/jvm/clojure/lang/Compiler.java:4299–4324  ·  view source on GitHub ↗
(int firstArgToEmit, C context, ObjExpr objx, GeneratorAdapter gen)

Source from the content-addressed store, hash-verified

4297 }
4298
4299 void emitArgsAndCall(int firstArgToEmit, C context, ObjExpr objx, GeneratorAdapter gen){
4300 for(int i = firstArgToEmit; i < Math.min(MAX_POSITIONAL_ARITY, args.count()); i++)
4301 {
4302 Expr e = (Expr) args.nth(i);
4303 e.emit(C.EXPRESSION, objx, gen);
4304 }
4305 if(args.count() > MAX_POSITIONAL_ARITY)
4306 {
4307 PersistentVector restArgs = PersistentVector.EMPTY;
4308 for(int i = MAX_POSITIONAL_ARITY; i < args.count(); i++)
4309 {
4310 restArgs = restArgs.cons(args.nth(i));
4311 }
4312 MethodExpr.emitArgsAsArray(restArgs, objx, gen);
4313 }
4314 gen.visitLineNumber(line, gen.mark());
4315
4316 if(tailPosition && !objx.canBeDirect)
4317 {
4318 ObjMethod method = (ObjMethod) METHOD.deref();
4319 method.emitClearThis(gen);
4320 }
4321
4322 gen.invokeInterface(IFN_TYPE, new Method("invoke", OBJECT_TYPE, ARG_TYPES[Math.min(MAX_POSITIONAL_ARITY + 1,
4323 args.count())]));
4324 }
4325
4326 public boolean hasJavaClass() {
4327 return tag != null;

Callers 2

emitMethod · 0.95
emitProtoMethod · 0.95

Calls 11

emitMethod · 0.95
consMethod · 0.95
emitArgsAsArrayMethod · 0.95
emitClearThisMethod · 0.95
markMethod · 0.80
invokeInterfaceMethod · 0.80
countMethod · 0.65
nthMethod · 0.65
derefMethod · 0.65
minMethod · 0.45
visitLineNumberMethod · 0.45

Tested by

no test coverage detected