Ejemplo n.º 1
0
 public TaintResultNode(boolean taintFromSelf, int taintFromParameter, RubyNode method) {
   super(method.getContext(), method.getEncapsulatingSourceSection());
   this.taintFromSelf = taintFromSelf;
   this.taintFromParameter = taintFromParameter;
   this.method = method;
   this.isTaintedNode = IsTaintedNodeGen.create(getContext(), getSourceSection(), null);
 }
Ejemplo n.º 2
0
  public CallTarget compile(String format) {
    if (format.length() > context.getOptions().PACK_RECOVER_LOOP_MIN) {
      format = LoopRecovery.recoverLoop(format);
    }

    final SimpleUnpackTreeBuilder builder = new SimpleUnpackTreeBuilder(context, currentNode);

    builder.enterSequence();

    final SimplePackParser parser =
        new SimplePackParser(builder, format.getBytes(StandardCharsets.US_ASCII));
    parser.parse();

    builder.exitSequence();

    return Truffle.getRuntime()
        .createCallTarget(
            new UnpackRootNode(
                context, currentNode.getEncapsulatingSourceSection(), builder.getNode()));
  }