TraceInstr.java

  1. package org.jruby.ir.instructions;

  2. import org.jruby.ir.Operation;
  3. import org.jruby.ir.operands.Operand;
  4. import org.jruby.ir.transformations.inlining.CloneInfo;
  5. import org.jruby.runtime.RubyEvent;

  6. // FIXME: When presistence is revisited this should strip these out of code streams on save and add them in if
  7. // tracing is on for load.
  8. /**
  9.  * Instrumented trace.
  10.  */
  11. public class TraceInstr extends Instr {
  12.     private final RubyEvent event;
  13.     private final String name;
  14.     private final String filename;
  15.     private final int linenumber;

  16.     public TraceInstr(RubyEvent event, String name, String filename, int linenumber) {
  17.         super(Operation.TRACE);

  18.         this.event = event;
  19.         this.name = name;
  20.         this.filename = filename;
  21.         this.linenumber = linenumber;
  22.     }

  23.     @Override
  24.     public Instr clone(CloneInfo ii) {
  25.         return new TraceInstr(event, name, filename, linenumber);
  26.     }

  27.     public RubyEvent getEvent() {
  28.         return event;
  29.     }

  30.     public String getName() {
  31.         return name;
  32.     }

  33.     public String getFilename() {
  34.         return filename;
  35.     }

  36.     public int getLinenumber() {
  37.         return linenumber;
  38.     }

  39.     @Override
  40.     public Operand[] getOperands() {
  41.         return new Operand[] { };
  42.     }

  43.     public String toString() {
  44.         return super.toString() + " " + event + ", " + name + ", " + filename + ", " + linenumber;
  45.     }

  46. }