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

Method emitAssignLocal

src/jvm/clojure/lang/Compiler.java:5647–5665  ·  view source on GitHub ↗
(GeneratorAdapter gen, LocalBinding lb,Expr val)

Source from the content-addressed store, hash-verified

5645 }
5646
5647 public void emitAssignLocal(GeneratorAdapter gen, LocalBinding lb,Expr val){
5648 if(!isMutable(lb))
5649 throw new IllegalArgumentException("Cannot assign to non-mutable: " + lb.name);
5650 Class primc = lb.getPrimitiveType();
5651 gen.loadThis();
5652 if(primc != null)
5653 {
5654 if(!(val instanceof MaybePrimitiveExpr && ((MaybePrimitiveExpr) val).canEmitPrimitive()))
5655 throw new IllegalArgumentException("Must assign primitive to primitive mutable: " + lb.name);
5656 MaybePrimitiveExpr me = (MaybePrimitiveExpr) val;
5657 me.emitUnboxed(C.EXPRESSION, this, gen);
5658 gen.putField(objtype, lb.name, Type.getType(primc));
5659 }
5660 else
5661 {
5662 val.emit(C.EXPRESSION, this, gen);
5663 gen.putField(objtype, lb.name, OBJECT_TYPE);
5664 }
5665 }
5666
5667 private void emitLocal(GeneratorAdapter gen, LocalBinding lb, boolean clear){
5668 if(closes.containsKey(lb))

Callers 1

emitAssignMethod · 0.80

Calls 8

isMutableMethod · 0.95
emitUnboxedMethod · 0.95
getTypeMethod · 0.95
getPrimitiveTypeMethod · 0.80
loadThisMethod · 0.80
putFieldMethod · 0.80
canEmitPrimitiveMethod · 0.65
emitMethod · 0.65

Tested by

no test coverage detected