Esempio n. 1
0
 private void writeInlines(DirectiveWriter dirFile) {
   List<String> c1Block = new ArrayList<>();
   List<String> c2Block = new ArrayList<>();
   List<String> allBlock = new ArrayList<>();
   for (CompileCommand cc : inlines) {
     String inlineMethodPattern;
     switch (cc.command) {
       case INLINE:
         inlineMethodPattern = "+" + cc.methodDescriptor.getString();
         break;
       case DONTINLINE:
         inlineMethodPattern = "-" + cc.methodDescriptor.getString();
         break;
       default:
         throw new Error("TESTBUG: incorrect command got in " + "the list: " + cc.command);
     }
     if (cc.compiler == Scenario.Compiler.C1) {
       c1Block.add(inlineMethodPattern);
     } else if (cc.compiler == Scenario.Compiler.C2) {
       c2Block.add(inlineMethodPattern);
     } else {
       allBlock.add(inlineMethodPattern);
     }
   }
   dirFile.emitCompiler(Scenario.Compiler.C1);
   if (!c1Block.isEmpty()) {
     dirFile.inline(c1Block);
   } else {
     dirFile.option(DirectiveWriter.Option.ENABLE, true);
   }
   dirFile.end();
   dirFile.emitCompiler(Scenario.Compiler.C2);
   if (!c2Block.isEmpty()) {
     dirFile.inline(c2Block);
   } else {
     dirFile.option(DirectiveWriter.Option.ENABLE, true);
   }
   dirFile.end();
   if (!allBlock.isEmpty()) {
     dirFile.inline(allBlock);
   }
 }
Esempio n. 2
0
  private void handleCommand(DirectiveWriter dirFile, CompileCommand cmd) {
    Command command = cmd.command;

    switch (command) {
      case COMPILEONLY:
        dirFile.excludeCompile(cmd.compiler, false);
        break;
      case EXCLUDE:
        dirFile.excludeCompile(cmd.compiler, true);
        break;
      case QUIET:
        /* there are no appropriate directive for this, just make
        match be enabled */
      case INLINE:
      case DONTINLINE:
        /* Inline commands will be written later.
        Just make this match be enabled */
        dirFile.emitCompiler(Scenario.Compiler.C1);
        dirFile.option(DirectiveWriter.Option.ENABLE, true);
        dirFile.end();
        dirFile.emitCompiler(Scenario.Compiler.C2);
        dirFile.option(DirectiveWriter.Option.ENABLE, true);
        dirFile.end();
        break;
      case LOG:
        dirFile.option(DirectiveWriter.Option.LOG, true);
        break;
      case PRINT:
        dirFile.option(DirectiveWriter.Option.PRINT_ASSEMBLY, true);
        break;
      case NONEXISTENT:
        dirFile.write(JSONFile.Element.PAIR, command.name);
        dirFile.write(JSONFile.Element.OBJECT);
        dirFile.write(JSONFile.Element.PAIR, command.name);
        dirFile.write(JSONFile.Element.VALUE, cmd.methodDescriptor.getString());
        dirFile.end(); // ends object
        break;
      default:
        throw new Error("TESTBUG: wrong command: " + command);
    }
  }