/*
 *  This file is part of the Jikes RVM project (http://jikesrvm.org).
 *
 *  This file is licensed to You under the Common Public License (CPL);
 *  You may not use this file except in compliance with the License. You
 *  may obtain a copy of the License at
 *
 *      http://www.opensource.org/licenses/cpl1.0.php
 *
 *  See the COPYRIGHT.txt file distributed with this work for information
 *  regarding copyright ownership.
 */
package org.jikesrvm.compilers.opt.driver;

/**
 * Class that holds miscellaneous constants used in the opt compiler
 */
public interface OptConstants {
  // the following constants are dummy bytecode indices,
  // used to mark IR instructions that do not correspond
  // to any original bytecode
  int UNKNOWN_BCI = -1;
  int PROLOGUE_BCI = -2;
  int EPILOGUE_BCI = -3;
  int RECTIFY_BCI = -4;
  int SYNTH_CATCH_BCI = -5;
  int SYNCHRONIZED_MONITORENTER_BCI = -6;
  int SYNCHRONIZED_MONITOREXIT_BCI = -7;
  int METHOD_COUNTER_BCI = -8;
  int SSA_SYNTH_BCI = -9;
  int INSTRUMENTATION_BCI = -10;
  int RUNTIME_SERVICES_BCI = -11;
  int EXTANT_ANALYSIS_BCI = -12;
  int PROLOGUE_BLOCK_BCI = -13;
  int EPILOGUE_BLOCK_BCI = -14;
  int OSR_PROLOGUE = -15;
  int SYNTH_LOOP_VERSIONING_BCI = -16;

  // The following are used as trinary return values in OptCompiler code
  byte NO = 0;
  byte YES = 1;
  byte MAYBE = 2;
}
