Class CoverageProbeAsmGenerator

java.lang.Object
org.ek9lang.compiler.backend.jvm.AbstractAsmGenerator
org.ek9lang.compiler.backend.jvm.CoverageProbeAsmGenerator
All Implemented Interfaces:
Consumer<CoverageProbeInstr>, org.objectweb.asm.Opcodes

final class CoverageProbeAsmGenerator extends AbstractAsmGenerator implements Consumer<CoverageProbeInstr>, org.objectweb.asm.Opcodes
Specialized ASM generator for CoverageProbeInstr processing.

Generates bytecode to record coverage probe hits by calling CoverageRuntime.recordHit(long probeId). Each probe has a globally unique ID (GUID) generated at compile time, ensuring no coordination is needed between source files.

Generated bytecode pattern (2 instructions per probe):

LDC2_W probeId                          (push long constant)
INVOKESTATIC org/ek9/lang/CoverageRuntime.recordHit(J)V

This approach uses a thread-safe Set in the runtime instead of per-class boolean arrays, enabling correct coverage tracking when multiple source files contribute to the same module.

  • Constructor Details

    • CoverageProbeAsmGenerator

      CoverageProbeAsmGenerator(ConstructTargetTuple constructTargetTuple, OutputVisitor outputVisitor, org.objectweb.asm.ClassWriter classWriter)
  • Method Details