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

Method doEmit

src/jvm/clojure/lang/Compiler.java:3255–3292  ·  view source on GitHub ↗
(C context, ObjExpr objx, GeneratorAdapter gen, boolean emitUnboxed)

Source from the content-addressed store, hash-verified

3253 }
3254
3255 public void doEmit(C context, ObjExpr objx, GeneratorAdapter gen, boolean emitUnboxed){
3256 Label nullLabel = gen.newLabel();
3257 Label falseLabel = gen.newLabel();
3258 Label endLabel = gen.newLabel();
3259
3260 gen.visitLineNumber(line, gen.mark());
3261
3262 if(testExpr instanceof StaticMethodExpr && ((StaticMethodExpr)testExpr).canEmitIntrinsicPredicate())
3263 {
3264 ((StaticMethodExpr) testExpr).emitIntrinsicPredicate(C.EXPRESSION, objx, gen, falseLabel);
3265 }
3266 else if(maybePrimitiveType(testExpr) == boolean.class)
3267 {
3268 ((MaybePrimitiveExpr) testExpr).emitUnboxed(C.EXPRESSION, objx, gen);
3269 gen.ifZCmp(gen.EQ, falseLabel);
3270 }
3271 else
3272 {
3273 testExpr.emit(C.EXPRESSION, objx, gen);
3274 gen.dup();
3275 gen.ifNull(nullLabel);
3276 gen.getStatic(BOOLEAN_OBJECT_TYPE, "FALSE", BOOLEAN_OBJECT_TYPE);
3277 gen.visitJumpInsn(IF_ACMPEQ, falseLabel);
3278 }
3279 if(emitUnboxed)
3280 ((MaybePrimitiveExpr)thenExpr).emitUnboxed(context, objx, gen);
3281 else
3282 thenExpr.emit(context, objx, gen);
3283 gen.goTo(endLabel);
3284 gen.mark(nullLabel);
3285 gen.pop();
3286 gen.mark(falseLabel);
3287 if(emitUnboxed)
3288 ((MaybePrimitiveExpr)elseExpr).emitUnboxed(context, objx, gen);
3289 else
3290 elseExpr.emit(context, objx, gen);
3291 gen.mark(endLabel);
3292 }
3293
3294 public boolean hasJavaClass() {
3295 return thenExpr.hasJavaClass()

Callers 2

emitMethod · 0.95
emitUnboxedMethod · 0.95

Calls 15

newLabelMethod · 0.80
markMethod · 0.80
maybePrimitiveTypeMethod · 0.80
ifZCmpMethod · 0.80
dupMethod · 0.80
ifNullMethod · 0.80
getStaticMethod · 0.80
goToMethod · 0.80
emitUnboxedMethod · 0.65
emitMethod · 0.65

Tested by

no test coverage detected