Example #1
0
 @Override
 public void Hash(Hash hash) {
   encoder.encode(hash.pairs.size());
   for (KeyValuePair<Operand, Operand> pair : hash.pairs) {
     encoder.encode(pair.getKey());
     encoder.encode(pair.getValue());
   }
 }
Example #2
0
  @Override
  public void TemporaryLocalVariable(TemporaryLocalVariable variable) {
    encoder.encode((byte) variable.getType().ordinal());

    if (variable.getType() == TemporaryVariableType.CLOSURE) {
      encoder.encode(((TemporaryClosureVariable) variable).getClosureId());
    }
    encoder.encode(variable.getOffset());
  }
Example #3
0
 private void encodeRuntimeHelperCall(RuntimeHelperCall instr) {
   e.encode(instr.getHelperMethod());
   // FIXME: Probably make an Operand[] encoder
   Operand[] args = instr.getArgs();
   e.encode(args.length);
   for (int i = 0; i < args.length; i++) {
     e.encode(args[i]);
   }
 }
Example #4
0
  private void encodeAttrAssignInstr(AttrAssignInstr instr) {
    e.encode(instr.getReceiver());
    e.encode(instr.getMethodAddr().getName());
    Operand[] args = instr.getCallArgs();

    e.encode(args.length);

    for (int i = 0; i < args.length; i++) {
      e.encode(args[i]);
    }
  }
Example #5
0
  private void encodeUnresolvedSuperInstr(UnresolvedSuperInstr instr) {
    boolean hasClosure = instr.getClosureArg(null) != null;

    e.encode(instr.getCallType().ordinal());
    e.encode(instr.getReceiver());
    e.encode(calculateArity(instr.getCallArgs(), hasClosure));

    for (Operand arg : instr.getCallArgs()) {
      e.encode(arg);
    }

    if (hasClosure) e.encode(instr.getClosureArg(null));
  }
Example #6
0
  @Override
  public void Array(Array array) {
    Operand[] elts = array.getElts();

    encoder.encode(elts.length);
    for (Operand elt : elts) {
      encode(elt);
    }
  }
Example #7
0
  private void encodeCallBaseInstr(CallBase instr) {
    boolean hasClosure = instr.getClosureArg(null) != null;

    e.encode(instr.getCallType().ordinal());
    e.encode(instr.getMethodAddr().getName());
    e.encode(instr.getReceiver());
    e.encode(calculateArity(instr.getCallArgs(), hasClosure));

    for (Operand arg : instr.getCallArgs()) {
      e.encode(arg);
    }

    if (hasClosure) e.encode(instr.getClosureArg(null));
  }
Example #8
0
  private void encodeZSuperInstr(ZSuperInstr instr) {
    e.encode(instr.getReceiver());
    Operand closure = instr.getClosureArg(null);

    boolean hasClosure = closure != null;
    e.encode(hasClosure);
    if (hasClosure) {
      e.encode(closure);
    }

    e.encode(instr.getCallArgs().length);
    for (Operand arg : instr.getCallArgs()) {
      e.encode(arg);
    }

    e.encode(instr.getArgCounts().length);
    for (Integer i : instr.getArgCounts()) {
      e.encode(i);
    }
  }
Example #9
0
 @Override
 public void CurrentScope(CurrentScope scope) {
   encoder.encode(scope.getScopeNestingDepth());
 }
Example #10
0
 @Override
 public void Boolean(Boolean booleanliteral) {
   encoder.encode(booleanliteral.isTrue());
 }
Example #11
0
 @Override
 public void ClosureLocalVariable(ClosureLocalVariable variable) {
   // We can refigure out closure scope it is in.
   encoder.encode(variable.getName());
   encoder.encode(variable.getScopeDepth());
 }
Example #12
0
 @Override
 public void Backref(Backref backref) {
   encoder.encode(backref.type);
 }
Example #13
0
 @Override
 public void Bignum(Bignum bignum) {
   encoder.encode(bignum.value.toString());
 }
Example #14
0
 @Override
 public void GlobalVariable(GlobalVariable variable) {
   encoder.encode(variable.getName());
 }
Example #15
0
 @Override
 public void TemporaryBooleanVariable(TemporaryBooleanVariable variable) {
   encoder.encode((byte) variable.getType().ordinal());
   encoder.encode(variable.getOffset());
 }
Example #16
0
 @Override
 public void Splat(Splat splat) {
   encode(splat.getArray());
   encoder.encode(splat.unsplatArgs);
 }
Example #17
0
 @Override
 public void ScopeModule(ScopeModule scope) {
   encoder.encode(scope.getScopeModuleDepth());
 }
Example #18
0
 @Override
 public void UnboxedBoolean(org.jruby.ir.operands.UnboxedBoolean booleanliteral) {
   encoder.encode(booleanliteral.isTrue());
 }
Example #19
0
 @Override
 public void IRException(IRException irexception) {
   encoder.encode((byte) irexception.getType().ordinal());
 }
Example #20
0
 // Only for CURRENT_SCOPE and CURRENT_MODULE now which is weird
 @Override
 public void TemporaryVariable(TemporaryVariable variable) {
   encoder.encode((byte) variable.getType().ordinal());
   encoder.encode(((TemporaryLocalVariable) variable).getOffset());
 }
Example #21
0
 @Override
 public void StringLiteral(StringLiteral stringliteral) {
   encoder.encode(stringliteral.string);
 }
Example #22
0
 // FIXME: Potentially some of these values should not need to have their type prefixed.
 public void encode(Operand operand) {
   encoder.encode(operand.getOperandType().getCoded());
   operand.visit(this);
 }
Example #23
0
 @Override
 public void Fixnum(Fixnum fixnum) {
   encoder.encode(fixnum.value);
 }
Example #24
0
 @Override
 public void WrappedIRClosure(WrappedIRClosure scope) {
   encoder.encode(scope.getSelf());
   encoder.encode(scope.getClosure());
 }
Example #25
0
 @Override
 public void Float(Float flote) {
   encoder.encode(flote.value);
 }
Example #26
0
 @Override
 public void AsString(AsString asstring) {
   encoder.encode(asstring.getSource());
 }
Example #27
0
 @Override
 public void UnboxedFixnum(UnboxedFixnum fixnum) {
   encoder.encode(fixnum.value);
 }
Example #28
0
 @Override
 public void Symbol(Symbol symbol) {
   encoder.encode(symbol.getName());
 }
Example #29
0
 @Override
 public void Label(Label label) {
   encoder.encode(label.prefix);
   encoder.encode(label.id);
 }
Example #30
0
 @Override
 public void UnboxedFloat(UnboxedFloat flote) {
   encoder.encode(flote.value);
 }