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

Method emitLocal

src/jvm/clojure/lang/Compiler.java:5667–5735  ·  view source on GitHub ↗
(GeneratorAdapter gen, LocalBinding lb, boolean clear)

Source from the content-addressed store, hash-verified

5665 }
5666
5667 private void emitLocal(GeneratorAdapter gen, LocalBinding lb, boolean clear){
5668 if(closes.containsKey(lb))
5669 {
5670 Class primc = lb.getPrimitiveType();
5671 gen.loadThis();
5672 if(primc != null)
5673 {
5674 gen.getField(objtype, lb.name, Type.getType(primc));
5675 HostExpr.emitBoxReturn(this, gen, primc);
5676 }
5677 else
5678 {
5679 gen.getField(objtype, lb.name, OBJECT_TYPE);
5680 if(onceOnly && clear && lb.canBeCleared)
5681 {
5682 gen.loadThis();
5683 gen.visitInsn(Opcodes.ACONST_NULL);
5684 gen.putField(objtype, lb.name, OBJECT_TYPE);
5685 }
5686 }
5687 }
5688 else
5689 {
5690 int argoff = canBeDirect ?0:1;
5691 Class primc = lb.getPrimitiveType();
5692// String rep = lb.sym.name + " " + lb.toString().substring(lb.toString().lastIndexOf('@'));
5693 if(lb.isArg)
5694 {
5695 gen.loadArg(lb.idx-argoff);
5696 if(primc != null)
5697 HostExpr.emitBoxReturn(this, gen, primc);
5698 else
5699 {
5700 if(clear && lb.canBeCleared)
5701 {
5702// System.out.println("clear: " + rep);
5703 gen.visitInsn(Opcodes.ACONST_NULL);
5704 gen.storeArg(lb.idx - argoff);
5705 }
5706 else
5707 {
5708// System.out.println("use: " + rep);
5709 }
5710 }
5711 }
5712 else
5713 {
5714 if(primc != null)
5715 {
5716 gen.visitVarInsn(Type.getType(primc).getOpcode(Opcodes.ILOAD), lb.idx);
5717 HostExpr.emitBoxReturn(this, gen, primc);
5718 }
5719 else
5720 {
5721 gen.visitVarInsn(OBJECT_TYPE.getOpcode(Opcodes.ILOAD), lb.idx);
5722 if(clear && lb.canBeCleared)
5723 {
5724// System.out.println("clear: " + rep);

Callers 4

emitLetFnInitsMethod · 0.80
emitMethod · 0.80
emitMethod · 0.80
emitAssignMethod · 0.80

Calls 12

getTypeMethod · 0.95
emitBoxReturnMethod · 0.95
getPrimitiveTypeMethod · 0.80
loadThisMethod · 0.80
putFieldMethod · 0.80
loadArgMethod · 0.80
storeArgMethod · 0.80
getOpcodeMethod · 0.80
containsKeyMethod · 0.65
getFieldMethod · 0.45
visitInsnMethod · 0.45
visitVarInsnMethod · 0.45

Tested by

no test coverage detected